Waxxh's Blog

Nginx部署SSL证书 为全站启用HTTPS 挂上安全小绿锁

网站启用HTTPS可避免数据的明文传输,防止劫持篡改,如被流氓运营商插播广告等。以前只有各大银行、支付网站为了安全需要使用付费的证书,随着各大互联网公司的支持,现在个人也可申请到免费的SSL证书。配置前准备工具:XshellWinSCP。(友情提示:事前备份(镜像)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+为最佳。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »