免费SSL证书Let’s Encrypt(certbot)军哥lnmp安装使用教程

  • A+
所属分类:CentOS

Let's Encrypt是很火的一个免费SSL证书发行项目,自动化发行证书,证书有90天的有效期。适合个人使用或者临时使用,不用再忍受自签发证书不受浏览器信赖的提示。Let's Encrypt在2016年已经发布了新的工具certbot,虽然是新的工具,但是生成证书的使用方法和参数是基本一致的,证书自动续期更简单了。免费SSL证书Let's Encrypt(certbot)军哥lnmp安装使用教程

但是目前看certbot在一些老版本的Linux发行版上的兼容性还是有问题的,特别是在CentOS 5上因为python版本过低是无法用的,CentOS 6上需要先安装epel才行,当然也有很多第三方的工具你也可以自己去尝试一下。

第一步、申请证书

申请方法:

如果是CentOS 6、7,先执行以下命令安装EPEL:

㈠、修改Nginx虚拟主机配置文件

因为在证书申请过程中,要验证域名,会自动建立/home/wwwroot/域名/.well-known/acme-challenge 目录并且访问,因为默认LNMP的虚拟主机里是禁止.开头的隐藏文件及目录的,所以访问 http://域名/.well-known/acme-challenge/**** 这个链接的话返回403错误,所以必须要将对应虚拟主机配置文件里的

这段配置删掉;或注释掉;或在这段配置前面加上

以上配置代码,然后重启nginx。

/usr/local/nginx/sbin/nginx -t

/etc/init.d/nginx restart

㈡、下载certbot工具

如果是以前安装过EPEL,就不用执行上面的语句,直接下面的:

./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源

㈢、生成证书

单域名生成证书:

多域名单目录生成单证书(即一个网站多个域名使用同一个证书)

多域名多目录生成多个证书:(即一次生成多个域名的多个证书)

运行以上一条命令,成功后会提示:

如果不是以上提示,一般就是没有成功申请到证书。

生成的证书会存在: /etc/letsencrypt/live/www.vpser.net/ 目录下。

第二步、Nginx虚拟主机的配置

Nginx虚拟主机文件,完整配置如下:

需将上述配置根据自己的实际情况修改后,添加到虚拟主机配置文件里面。

添加完需要执行:

/usr/local/nginx/sbin/nginx -t 测试Nginx配置文件conf的正确性

/etc/init.d/nginx reload 重新载入配置使其生效。

 

第三步、添加iptables规则

开启了SSL访问后,如果以前开了iptables防火墙,那一定要再打开443端口。

iptables -L -n -v --line-numbers #查看已添加的iptables规则

iptables -D INPUT 8 # 删除INPUT里序号为8的规则

iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT #允许访问443端口,并插入到第5条规则前面

service iptables save #保存Iptables规则

service iptables restart #重载规则

第四步、证书续期

cerrbot的续期比原来的更加简单,因为证书只有90天,所以建议使用crontab进行自动续期:

crontab -e 里加上如下规则:

这样每5天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,具体请看:https://letsencrypt.org/docs/rate-limits/,如果需要强制更新可以在前面命令上加上 --force-renew 参数。

注意事项:

1、因为默认LNMP的虚拟主机里是禁止 . 开头的隐藏文件及目录的,所以访问 http://abc.com/.well-known/acme-challenge/**** 这个链接的话返回403错误,所以必须要将对应虚拟主机配置文件里的

这段配置删掉或注释掉或在这段配置前面加上

以上配置代码,然后重启nginx。

2、如果要启用http2的话,建议编辑 /root/lnmp1.3/lnmp.conf ,将里面的Nginx_Modules_Options的单引号里加上 --with-openssl=/root/openssl-1.0.2j

①openssl-1.0.2j的版本请查看:https://www.openssl.org/source/ 确定

②Nginx的版本请查看:https://nginx.org/en/download.html 确定,最好使用Stable version稳定版本。

并执行: cd /root/lnmp1.3/ && wget -c https://www.openssl.org/source/openssl-1.0.2j.tar.gz && tar zxf openssl-1.0.2j.tar.gz

然后使用升级脚本 ./upgrade.sh nginx 升级nginx至1.9.5或更高版本。

3、国内有些用户反映会卡在 Installing Python packages... 这个地方不动,因为pip的默认源是国外的,国内可能会有点慢,可以执行下面命令来修改pip源为国内的:

执行完,再重新运行certbot的命令应该正常安装python的包了。

4、如果需要HSTS,只要在我们网站的响应头里面新增HSTS即可,下面简单说下:

Nginx服务器只需要在站点server模块内插入如下配置并重启:

加上add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; 前面参数里的数值是秒。 开启后有效期内必须只能https访问,不确定的话不要开启。

当然,为了兼容不支持HTTPS的客户端,我们还需要将网站的所有超链接都改成相对模式:

比如,正常的页面链接如下所示:

改成相对模式:

好处就是,不管是HTTP还是HTTPS请求,页面中的地址都是和请求协议保持一致,避免出现页面是HTTP,而页面中的链接却是HTTPS的情况,那么前面的做法也就没了意义。

如何修改为相对模式,估计有同学又玩不转了。万变不离其宗,和以前纯代码启用七牛CDN一样!

直接粗暴替换前台输出的代码即可:

将以上代码新增到 WordPress 主题的functions.php中即可。以上代码只会替换和网站主域名有关系的超链接,八竿子打不着的外部超链接就不管了,有需求自行参考解决。

原文:https://www.vpser.net/build/letsencrypt-certbot.html

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: