美文网首页
Nginx系列14:ssl配置https服务

Nginx系列14:ssl配置https服务

作者: joyitsai | 来源:发表于2019-04-11 11:43 被阅读0次

    ngx_http_ssl_module模块提供对HTTPS必要的支持。
    这个模块不是系统默认的内建模块, 需要采用–with-http_ssl_module指令开启相关的配置。
    这个模块需要OpenSSL库的支持

    1、ssl on | off;
    为指定虚拟机启用HTTPS protocol,建议用listen指令代替
    可用位置:http, server

    2、ssl_certificate file;
    当前虚拟主机使用PEM格式的证书文件
    可用位置:http, server

    3、ssl_certificate_key file;
    当前虚拟主机上与其证书匹配的私钥文件
    可用位置:http, server

    4、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
    支持ssl协议版本,默认为后三个
    可用位置:http, server

    5、ssl_ciphers ciphers;
    默认: ssl_ciphers HIGH:!aNULL:!MD5;
    指定启用的密码。密码以OpenSSL库理解的格式指定,例如:

    ssl_ciphers ALL:!aNULL:!EXPORT56:RC4 + RSA:+ HIGH:+ MEDIUM:+ LOW:+ SSLv2:+ EXP;
    

    可用位置: http, server

    6、ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
    builtin[:size]:使用OpenSSL内建缓存,为每worker进程私有
    [shared:name:size]:在各worker之间使用一个共享的缓存
    可用位置:http, server

    7、ssl_session_timeout time;
    客户端连接可以复用sslsession cache中缓存的ssl参数的有效时长,默认5m
    可用位置:http, server

    8、ssl_prefer_server_ciphers on | off;
    指定在使用SSLv3和TLS协议时,服务器密码应优先于客户端密码。可以使用server服务器的偏好来使用openssl的加密算法套件,openssl提供了算法套件的偏好的配置功能。
    可用位置:http, server

    示例:

    http{
        #http节点中可以添加多个server节点
        server{
            #监听443端口
            listen 443;
            server_name yourweb.com;
            ssl on;
            ssl_certificate /path/xx.pem;
            ssl_certificate_key /path/xx.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #我们使用阿里云官方文档中的ssl_ciphers来配置
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers on;
      
            location / {  
                    root /usr/local/service/ROOT;
                    index index.html;
            }
        }
    
    }
    

    到这里还不行,因为如果用户使用的是http协议进行访问,那么默认打开的端口是80端口,所以我们需要做一个重定向,我们在上一个代码块的基础上增加一个server节点提供重定向服务。

    http{
        server{
            listen 443;
            server_name yourweb.com;
            ssl on;
            ssl_certificate /path/xx.pem;
            ssl_certificate_key /path/xx.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers on;
         
            location / {
                    root /usr/local/service/ROOT;
                    index index.html;
            }
        }
        server{
            listen 80;
            server_name baofeidyz.com;
            rewrite ^/(.*)$ https://baofeidyz.com:443/$1 permanent;
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Nginx系列14:ssl配置https服务

          本文链接:https://www.haomeiwen.com/subject/jfoziqtx.html