1.准备所需文件
安装SSL证书到nginx服务器上, 需要两个文件:
证书文件 server.crt :请登录控制台,后下载证书,把下载的压缩包解压,进入nginx这个文件夹,里面有server.crt 这个证书文件,这个文件里面包含有服务器证书和中级证书。
私钥 server.key :这是你提交订单前生成CSR的时候生成的,如果你在提交订单时候选择系统生成CSR的,请检查邮箱,有一封邮件主题是 “订单编号xxxx的CSR和私钥”的邮件,下载server.key 这个附件,这个文件就是私钥。
2.配置Ngnix
生成更强的DHE参数 ,这里将生成一个文件,文件位于 /etc/nginx/ssl/dhparam.pem ,在最下面的nginx配置中,我们将使用这个文件
cd /etc/nginx/ssl
openssl dhparam -out dhparam.pem 4096
找到Nginx安装目录下的conf目录,打开 nginx.conf
在任何一个
server{
……..
}
的下方添加以下代码,注意将其中的证书和私钥文件内容改成你自己的。
# 重定向 http 到 https
server {
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name www.sslgood.com sslgood.com ;
index index.php;
root /home/wwwroot/sslgood.com;
ssl_certificate /etc/nginx/ssl/server-bundle.crt; #证书文件路径
ssl_certificate_key /etc/nginx/ssl/server.key; #私钥文件路径
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
#### 下面这部分不是必须的,可以选择是否使用 #####
# HSTS:作用是 让浏览器强制跳转到 https (需要用到nginx 模块 :ngx_http_headers_module ) (63072000秒)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling ,有些浏览器会访问CA网站验证证书的有效性,使用 OCSP stapling 可以让这个验证在服务器端完成,提高访客端的访问速度
ssl_stapling on;
ssl_stapling_verify on;
}
然后保存。运行
nginx -s reload
重载入 nginx 配置文件,让配置生效
Nginx重定向http到https
安装完SSL证书后,网站默认还是使用http的方式访问,如果想要让用户在浏览器输入域名后自动跳转到https的方式访问网站,以下是nginx主机的配置方法:
server
{
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
添加以上代码后,然后重启nginx 即可
Nginx的SSL证书安全与兼容性设置
禁用 SSLv2 和 SSLv3
这两个协议都是不安全的, 我们应该在服务器上禁用这两个协议。添加一下代码到网站的配置文件, lnmp的网站配置文件位于 /usr/local/nginx/conf/vhost 目录
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
使用安全的Cipher Suite
将以下代码放在网站的配置文件里面
ssl_ciphers ‘EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH’;
以上设置不支持Winxp/IE6 ,如果你想网站同时Winxp/IE6的话可以使用使用以下的Cipher Suite
ssl_ciphers “EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4”;
额外的安全设置,请添加如下代码
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
Forward Secrecy & Diffie Hellman Ephemeral Parameters
运行以下代码,这段代码运行的时间会比较长,请耐心等待
cd /etc/ssl/certs
openssl dhparam -out dhparam.pem 4096
然后在nginx的网站配置文件中加入如下代码
ssl_dhparam /etc/ssl/certs/dhparam.pem;
添加以上代码后的网址配置文件大致如下
server
{
listen 443 ssl http2;
server_name www.sslgood.com sslgood.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/sslgood.com;
ssl on;
ssl_certificate cheapssl.crt;
ssl_certificate_key cheapssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
......
}
Nginx 反代 以及SSL安装设置
server {
listen 443 ssl;
server_name www.sslgood.com;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
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 /var/log/nginx/sslgood.com.access.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 http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://www.sslgood.com;
}
}

QQ咨询
阿里旺旺
#skype#