Rapid SSL + nginxでAndroidOSの認証がおかしくなった話
Rapid SSL + nignxでAndroidOSの認証がおかしくなった話
SSL対応のサイトのほうが、Ajaxなどのインタラクティブなサイトを構築した時に、中間情報が抜かれることが少なくなるので、全SSL化を行ったのだが、AndroidOSでうまく表示されなくなった。
以前のhttpサーバはapacheであったが、リバースプロキシサーバとして、nginxを採用し、証明書関連をnginx側で持たせるようにした。
しばらくして気が付いたのだが、どうやらnginxを新たに導入したことによって、証明書関連の設定が変わってしまったらしい。AndroidOSでアクセスすると、危険なサイトとか言われてひどい言われようだと思う。
nginxでは中間証明署とルート証明書を設定する項目がない。
さて、どうなっているのか。
いろいろ調べたところ、nginxではサーバ証明書と中間証明書とルート証明書をファイル的に三つ結合してひとつの証明書としなければならないらしい。
以下こんな感じになる
-----BEGIN CERTIFICATE----- サーバ証明書 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 中間証明書 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ルート証明書 -----END CERTIFICATE-----
nginx.confの設定
server { listen 443; server_name *****; ssl_certificate /etc/nginx/sslkeys/ssl-*****/server.crt; ssl_certificate_key /etc/nginx/sslkeys/ssl-*****/server.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; access_log /tmp/access_ssl_*****.jp.log; location / { 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-Proto $scheme; proxy_pass https://*****; proxy_read_timeout 90; #proxy_redirect http://*****:443 https://*****; } }
GeoTrust社の一部署のRapidSSLだけがなぜこんなことに。。。安いからとても助かってますけど。