Let's Encrypt + Apache 使用教程

如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let’s Encrypt就是一个 CA。我们可以从 Let’s Encrypt获得网站域名的免费的证书。这篇文章也主要讲的是通过Let’s Encrypt + Apache 来让网站升级到HTTPS。

Certbot 是Let’s Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let’s Encrypt证书。Certbot 是支持所有 Unix 内核的操作系统的,个人的服务器系统是CentOS 7(我为社区做贡献.jpg),这篇教程也是通过在项目上启用HTTPS的基础上完成的。

开始前得先把如下几个依赖包卸载后,再进行Certbot的安装(不然就会提示ImportError: No module named ‘requests.packages.urllib3’,该问题复现过。)

$pip uninstall requests
$pip uninstall urllib3
$sudo yum remove python-urllib3 python-requests -y
$sudo yum install certbot -y

安装完成后,可以先通过运行certbot进行测试,如无问题则继续下一步,首先查看端口是否被占用,有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

$netstat -tunlp | grep :443

接着继续生成证书

$certbot certonly --standalone -d www.example.com

证书生成完毕后,可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹找到证书。
这时候我们的第一生成证书已经完成了,接下来就是配置我们的web服务器,启用HTTPS。
Apache需要安装ssl插件,然后在/etc/httpd/conf.d/ssl.conf里面进行配置,如下例。

<VirtualHost 0.0.0.0:443>
        DocumentRoot "/var/www/html"
        ServerName www.example.com
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>

配置完成后重启httpd,访问https://www.example.com ,成功。

配置完这些过后,还没有完成。 Let’s Encrypt提供的证书只有90天的有效期,必须在证书到期之前,重新获取这些证书,certbot给我们提供了一个很方便的命令,那就是 certbot renew。 通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。这里直接用crontab设置每月定时更新即可。

0 4 * */2 * certbot renew --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"

每隔两个月凌晨四点进行证书更新,并先行停止httpd服务,之后再开启。
注:如果遇到生成证书失败问题,项目组在文档中有说明认证失败次数的限制。
There is a Failed Validation limit of 5 failures per account, per hostname, per hour.
每个账户/主机名/小时可以失败五次,所以生成之前确认好DNS记录缓存是否已经更新。

发布了54 篇原创文章 · 获赞 18 · 访问量 23万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览