给网站加上永久免费SSL的证书
为什么网站要设置为HTTPS
HTTPS是安全上网的保证,如果有条件还是有必要给自己的网站安装安全证书,保障用户上网安全。
同时百度对HTTPS的网站还会扶持,将影响搜索的排序,见百度对HTTPS的态度
谷歌对HTTPS网站的态度也很坚决,在Chrome中所有非HTTPS网站,会被标记为不安全。
但是目前商用证书都需要购买的,对于个人站长来说,如何获取使用免费的证书呢,让Let's Encrypt来帮你吧。
Let's Encrypt申请免费证书
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
申请及使用步骤
准备工作
- 确保本机的有Python的开发环境
- 确保本机有git环境
下载cerbot
>git clone https://github.com/certbot/certbot.git
生成证书
>cd certbot
>./certbot-auto certonly --standalone --email webmaster@xtuz.net -d www.xtuz.net
确认证书
确认在/etc/letsencrypt/live/
存在站点的名目录,并且在木有下有4个文件:
- cert.pem - Apache服务器端证书
- chain.pem - Apache根证书和中继证书
- fullchain.pem - Nginx所需要ssl_certificate文件
- privkey.pem - 安全证书KEY文件
Nginx安装证书
在nginx.conf文件的站点配置中添加如下信息:
listen 443 ssl;
server_name www.xtuz.net;
ssl_certificate /etc/letsencrypt/live/www.xtuz.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.xtuz.net/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
同时增加网站80端口跳转到443的调整
server {
listen 80;
server_name www.xtuz.net;
rewrite ^(.*) https://$host$1 permanent;
}
Nginx重启确认HTTPS生效
通过命令Nginx重新加载配置文件后,再打开https://www.xtuz.net,可以看到chrome提示网站已经安全了. :)
解决免费SSL证书90天有效期问题
Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。 命令如下:
./certbot-auto certonly --renew-by-default --email webmaster@xtuz.net -d www.xtuz.net
通过这个方法,就可以变成永久免费证书咯。
配置过程中碰到的坑 - Could not bind to IPv4 or IPv6
root@vps:/opt/software/certbot# ./certbot-auto certonly --standalone --email webmaster@xtuz.net -d www.xtuz.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.xtuz.net
Cleaning up challenges
Problem binding to port 80: Could not bind to IPv4 or IPv6.
原因是本机上有进程已经绑定了80端口,需要关掉。查看本机是nginx占用了80端口,
输入supervisorctl stop nginx
。然后再次执行证书安装命令,即可顺利安装。
安装完毕后,输入supervisorctl start nginx
,即启动nginx。
展开剩余53%