依赖建议

lSSL卸载驱动。建议:openssl版本1.1.0f+。

lnginx版本Stable version:最新稳定版,生产环境上建议使用的版本。


获取证书

  • 在我的订单详情里下载证书zip包,解压缩后您将获得cert和key文件。

  • 或者查看您的邮箱,您会收到zip包,解压缩后您将获得cert或者key文件。


SSL相关配置

到nginx的conf目录,找到nginx.conf文件,修改或者配置这样一段

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # 强制跳转
    return 301 https://$host$request_uri;
} 
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;   #IPv6支持 
    #RSA证书
    ssl_certificate /xxx/xx/rsa.pem;
    ssl_certificate_key /xxx/xx/rsa.key;
    #ECC证书,可选,需要1.11版本支持
    ssl_certificate /xxx/xx/ecc.pem;;
    ssl_certificate_key /xxx/xx/ecc.key;;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    # A+级配置.
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;
    # HSTS (需要编译带ngx_http_headers_module模块) (15768000 秒= 6 月)
    add_header Strict-Transport-Security max-age=15768000;
    # OCSP Stapling 装订
    ssl_stapling on;
    ssl_stapling_verify on;
}


下面为配置文件参数说明:

listen 443


SSL访问端口号为443

ssl       on
启用SSL功能

ssl_certificate
证书文件server.crt

ssl_certificate_key
私钥文件server.pem

ssl_protocols
使用的协议

ssl_ciphers
配置加密套件,写法遵循openssl标准

配置完成后,先用sbin/nginx –t来测试下配置是否有误,正确无误的话,建议重启nginx。


http跳转https(建议而非强制)

对于用户,不是不知道https,就是知道https也因为懒,不愿意输入https。这样就有一个需求,让服务器自动把http的请求重定向到https。

在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)

在http的server里

增加

return 301 https://$host$request_uri;

或者

rewrite   ^(.*) https://$host$1 permanent;

这样就可以实现80进来的请求,重定向为https了


检测

https的端口没做限制后(防火墙放行,端口转发正常),到https://myssl.com进行检测