Nginx部署SSL证书 为全站启用HTTPS 挂上安全小绿锁
网站启用HTTPS可避免数据的明文传输,防止劫持篡改,如被流氓运营商插播广告等。以前只有各大银行、支付网站为了安全需要使用付费的证书,随着各大互联网公司的支持,现在个人也可申请到免费的SSL证书。配置前准备工具:Xshell、WinSCP。(友情提示:事前备份(镜像)x3,重要的事说三次!)
一、申请SSL证书
可到腾讯云申请免费一年的亚洲诚信&赛门铁克DV证书,需要实名认证,点此前往。
通过域名身份认证需要几分钟即可获得SSL证书,下载到本地。
二、部署证书到Nginx
解压下载的证书,分Apache、IIS、Nginx三类,我们是Nginx服务器,把Nginx目录下的crt、key文件更改成短英文方便后续操作。
用WinSCp将crt、key两个文件上传到服务器,比如我是上传到 /usr/local/nginx/conf/ssl 目录下
然后找到网站的conf配置文件,用AMH面板搭建的是在/usr/local/nginx/conf/vhost目录下,其他情况也类似
双击打开conf文件,在server{}之间加入
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/miku.crt; #填自己的crt路径
ssl_certificate_key /usr/local/nginx/conf/ssl/miku.key; #填自己的key路径
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m; #选择合适的加密套件
使nginx配置生效,命令符运行,网站使用https访问确保正常
nginx -t && nginx -s reload
提高安全性,生成dhparam.pem文件,命令符运行。2048位秘钥强度对于小站足以,需要等待几分钟使文件生成
openssl dhparam -out dhparam.pem 2048
生成的文件在root目录,可以把它移动到合适的目录。然后在conf文件内,在server{}之间再加入
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem; #填自己的dhparam文件路径
加入HSTS,全站https加密
add_header Strict-Transport-Security max-age=63072000;
完整配置如图
如需强制https访问,使http自动跳转到https,我们使用301跳转,如图conf文件内前边位置加入
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
最后使nginx配置全部生效,命令符运行,看网站跳转访问等情况是否正常
nginx -t && nginx -s reload
网站如有非https资源,不会出现小绿锁而是有黄色感叹号,F12审核元素,把对应http链资源替换成https的。
1.如有外部js等,可下载上传到网站程序目录并更改链接;
2.如图片等绝对地址需要批量替换,可以到数据库执行
UPDATE `typecho_contents` SET TEXT = REPLACE( TEXT, '旧地址', '新地址' ) ;
直到出现小绿锁,一切完成后,可进行SSL安全评估,A+为最佳。