私はEliBeanstalkでApi GatewayとApiを接続しようとしています。 Api Gatewayだけで私のapiをアクセス可能にしたいと思っています。このために私はバックエンドでクライアント側のSSL証明書の承認を使用しています(このawsの出版リンクのように:http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html)。だから私のarquitectureこのようなものです:ApiゲートウェイとElastic Beanstalk(クライアント側のSSL証明書)
API GATEWAY->弾性荷重のBALANCER-> EC2(Elastic Beanstalkで)
私のEC2のマシンは、nginxのとRubyを持っています。
接続は次のように動作します:
API GATEWAY - 私は、クライアントの認証を行っています> RUBY
- >(80 PORT) - >弾性ロードバランサ - >(443 PORT) - > nginxのNGINX。 ブラウザを使用してElastic Load Balancerにアクセスすると、400 Bad Request - NGINXエラーが表示されます。必要なSSL証明書が送信されませんでした(これは証明書を送信しないため正しい)。しかし、私はApiゲートウェイを使用してアクセスし、クライアント証明書を送信するとき、私は同じエラーを受け取ります(私はなぜ理解しません)。私はnginxのでSSL接続を設定する場合
、私は(多分これが問題である?)私が署名したSSL証明書を使用しています私の問題のため
その他かのう原因は、弾性ロードバランサでポート構成である(中絵)。バックエンド認証:無効です。これは問題ですか? Pictura Port Config ELB
私のnginxの構成は次のとおりです。
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name localhost;
root /usr/share/nginx/html;
ssl on;
ssl_certificate /etc/nginx/ssl/dev.crt;
ssl_certificate_key /etc/nginx/ssl/dev.key;
ssl_trusted_certificate /etc/nginx/ssl/api-gateway.pem;
ssl_client_certificate /etc/nginx/ssl/api-gateway.pem;
ssl_verify_client on;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
if ($ssl_client_verify = FAILED) {
return 495;
}
if ($ssl_client_verify = NONE) {
return 402;
}
if ($ssl_client_verify != SUCCESS) {
return 403;
}
try_files $uri/index.html $uri @my_app;
location @my_app {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Client-IP $remote_addr;
proxy_pass http://my_app;
proxy_set_header X-Client-Verify $ssl_client_verify;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location/{
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header gonzalo1 $ssl_client_verify;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
doc linkは、Api Gtwクライアント証明書を使ってBeanstalkを呼び出すことについてではなく、クライアント証明書を使ってApi Gtwを呼び出すことに関するものです。私は何かを逃したのですか? Api Gtwのクライアント証明書は、Api Gtwを使って他のものを呼び出さないApi Gtwを呼び出すためのものです。 – fsenart
@fsenart、私が理解するところによると、この場合の証明書はApiゲートウェイからのバックエンドへの呼び出し用であり、バックエンドはApiゲートウェイからの要求であることを認証することができます。リンクの最初の段落では非常に明確です。 –
いいえ、@fsenart、クライアント証明書は、APIゲートウェイがアプリケーションサーバーに対して自身を認証するために使用します。 –