ステージングRailsアプリをnginxで乗客と一緒に実行しています。SSLで接続を保護したいです。オンラインで多くのリソースを読みましたが、まだSSLで実行していません。
これまでのところ、nginx.confのサーバーブロックは次のとおりです。
server {
listen 80;
listen 443 default deferred;
server_name example.com;
root /home/deploy/app/public;
passenger_enabled on;
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
ssl on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
}
サイトは実行されていますが、HTTPSでは実行されていません。
私は自分でSSLを使用することを決定し、これを行う方法について DigitalOcean サイトで記事を見つけました。それはlisten 443 default deferred;
である可能性があり、その記事によれば、ssl
ではなくdeferred
である必要があります。
これが彼らが使用するnginxブロックです。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
root /usr/share/nginx/html;
index index.html index.htm;
server_name your_domain.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
try_files $uri $uri/ =404;
}
}
更新:
現在、自分のサイトをSSLで実行しています。上記に加えて、私はRailsにSSLを強制するように指示しました。本番環境の構成で;
# ./config/environments/production.rb
config.force_ssl = true
オプションで、これらの設定をnginx.conf
に追加できます。
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
keepalive_timeout 70;
}
更新:2015-09
この回答を書いたので、nginx
構成にいくつか追加したものを追加しました。これは、誰もが含める必要があると思います。以下をserver
ブロックに追加します。
server {
ssl_prefer_server_ciphers On;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
add_header X-Frame-Options DENY;
}
最初の3行(ssl_prefer_server_ciphers
、ssl_protocols
、ssl_ciphers
)は、強力なSSL設定があることを確認するため、最も重要です。
X-Frame-Options
は、サイトが<iframe>
タグを介して含まれるのを防ぎます。ほとんどの人がこの設定を含めることで恩恵を受けると思います。