网站如何从HTTP变成HTTPS

安装Let’s Encrypt证书流程

正常流程

1.安装依赖的 epel 源,然后安装 certbot

1
2
yum install epel-release -y
yum install certbot -y

2.使用certbot certonly 命令 , 生成证书公私钥(可以多站点配置),生成证书及相关文件(/etc/letsencrypt)

1
certbot certonly --webroot -w /var/wwwroot/blog -d phpgoto.com

3.在nginx中加入ssl证书的相关配置

1
2
3
4
listen 443 ssl; # 将默认监听的80端口改成https监听的443端口
# ssl on; 这个似乎不用加
ssl_certificate /etc/letsencrypt/live/phpgoto.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/phpgoto.com/privkey.pem;

4.将http请求转向https

1
2
3
4
5
server {
listen 80;
server_name phpgoto.com;
rewrite ^(.*)$ https://$host$1 permanent;
}

5.添加crond任务,自动续期即将到期的证书

每隔两个月凌晨2:30自动执行证书更新操作,我这里有软链,读者使用时注意路径

1
30 2 * */2 * certbot renew --quiet && nginx -s reload

异常总结

1.centos7.2以上安装certbot可能出现一些错误,这个可以参考这篇文章;
2.我在安装时除了上面遇到的错误外,安装完成后,certbot指向有问题,默认调用的是/usr/bin/certbot,而我安装的却在/usr/local/bin/certbot,直接做个软链接到正确目录即可;
3.注意443端口要开启。