最后更新于2018年12月27日; 如遇到问题,请留言及时通知站长; 欢迎加入 三生三世,讨论各种问题!

本教程旨在记录Let’s encrypt证书申请过程。

防火墙设置

输入如下命令,防火墙开启443端口。--permanent表示永久生效

    firewall-cmd --zone=public --add-port=443/tcp --permanent
    firewall-cmd --reload

Let’s encrypt证书安装-防火墙开启443端口

证书安装

程序下载

输入如下命令,安装epel最新源

    yum -y install epel-release

Let’s encrypt证书-安装最新epel源
输入如下命令,安装certbot

    yum -y install python-certbot-apache

Let’s encrypt证书-安装certbot程序
输入如下命令进入certbot所在目录,并运行证书安装程序

    cd /usr/bin
    ./certbot

Let’s encrypt证书-进入certbot所在目录
Let’s encrypt证书-运行certbot程序

证书设置

根据提示,输入相应信息即可
输入你的邮箱
Let’s encrypt证书-邮箱输入
是否同意协议,毫无疑问,选a同意
Let’s encrypt证书-certbot协议
是否分享你的邮箱,我这里选择了y
Let’s encrypt证书-邮箱分享
输入你的域名,多个域名空格分开
Let’s encrypt证书-域名填写
突然退出了证书安装,遇到了错误。大体是因为你的服务器配置文件未设置域名,或者之前安装过证书之类的。不用急,可以通过以下方法,继续安装证书。

继续安装证书

输入如下命令,可以忽略上述错误,继续安装证书,结尾跟域名即可

    certbot -i apache -a webroot -w /var/www/html -d something.com

Let’s encrypt证书-继续安装证书
下面只有一个选项,选1即可
Let’s encrypt证书-继续安装证书
选项2代表强制全站跳转https,推荐选2
Let’s encrypt证书-全站https

证书续期

由于Let’s encrypt证书只有三个月有效期,到期后可以免费续期,无次数限制,所以输入如下命令,开始创建周期任务,自动续期证书申请

    crontab -e

Let’s encrypt证书-周期任务
摁下‘i’键,进入插入模式
Let’s encrypt证书-周期任务
然后,输入如下命令

    30 4 * * 1 certbot renew --renew-hook "systemctl restart httpd.service" --quiet

Let’s encrypt证书-周期任务
摁下esc,退出插入模式;再输入:wq,保存并退出编辑
Let’s encrypt证书-周期任务

Bug解决

centos7容易遇到如下问题

    File "/bin/certbot", line 7, in
    from certbot.main import main
    File "/usr/lib/python2.7/site-packages/certbot/main.py", line 17, in 
    from certbot import client
    File "/usr/lib/python2.7/site-packages/certbot/client.py", line 10, in 
    from acme import client as acme_client
    File "/usr/lib/python2.7/site-packages/acme/client.py", line 31, in 
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type: ignore
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 112, in
    inject_into_urllib3
    _validate_dependencies_met()
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 147, in
    _validate_dependencies_met
    raise ImportError("'pyOpenSSL' module missing required functionality. "
    ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

输入如下命令,即可解决该问题。然后,再次重复证书安装过程即可。

    mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL

详情参考:Let’s encrypt证书-官方说明

- The End -