【问题标题】:How do I setup ssl on a rails 4 app? (nginx + passenger)如何在 rails 4 应用程序上设置 ssl? (nginx + 乘客)
【发布时间】:2014-09-26 18:35:33
【问题描述】:

我有一个登台轨道应用程序在 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 上。

【问题讨论】:

    标签: ruby-on-rails ssl nginx passenger


    【解决方案1】:

    我刚刚决定自己使用 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 年 9 月

    自从我写了这个答案以来,我已经在我的 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;
    }
    

    前三行(ssl_prefer_server_ciphersssl_protocolsssl_ciphers)是最重要的,因为它们确保您拥有良好的强大 SSL 设置。

    X-Frame-Options 可防止您的网站通过<iframe> 标签被收录。我希望大多数人都会从包含此设置中受益。

    【讨论】:

    • 我已经完成了相同的设置,但是 Rails 没有启动但是如果我运行乘客启动然后它运行
    • 您是否需要在开启 ssl 的情况下运行您的乘客?
    • 使用上述设置,您只需要确保设置passenger_enabled on
    • 我以某种方式在上面的配置中得到了 chrome 中的 ERR_SSL_PROTOCOL_ERROR :(
    • 如果浏览器不支持较新版本,是否会回退到 TLSv1?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2018-05-01
    • 2011-04-26
    • 2018-02-14
    • 2020-07-19
    • 2013-05-02
    • 2016-04-20
    相关资源
    最近更新 更多