certbot cloudflare申请通用域名证书

环境
OS:centos 7
server:apache

简介



Let's Encrypt SSL 证书申请,原始工具已经可以完成一些基本常见的操作,但操作复杂,而且由于一些特殊原因依然会导致一些问题而难以解决,cetbot是Let's Encrypt SSL第三方工具。

安装环境



yum -y install yum-utils
yum install -y certbot-apache


问题



问题



直接运行后会报错

File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module> from .packages.urllib3.exceptions import HTTPError as BaseHTTPError


解决办法



pip的url包问题,解决办法如下

pip install requests urllib3 pyOpenSSL --force --upgrade


问题



pip: command not found


解决办法



yum -y install python-pip


问题



<module 'OpenSSL.crypto' from '/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so'>
<module 'OpenSSL.crypto' from '/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so'>
Traceback (most recent call last):
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 149, in _validate_dependencies_met
raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.


解决办法



pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3


这样certbot就可以正常运行了。

安装插件



检查插件

certbot plugins


默认有apachestandalonewebroot三个插件,再安装cloudflare插件即可。

pip install certbot-dns-cloudflare


配置cloudflare.ini文件
文件路径~/.secrets/certbot/cloudflare.ini,可以修改,修改后在稍后的命令中也要修改一下。
文件配置内容如下

# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234567


api在页面API Key --> Global API Key获取。
修改文件权限

chmod 600 ~/.secrets/certbot/cloudflare.ini


生成证书



在生成证书之前,检查一下,至少有一个子域名和主域名要有解析,即至少有两个解析,否则会报错。

certbot -a dns-cloudflare -i apache -d "*.exmple.com" -d exmple.com --server https://acme-v02.api.letsencrypt.org/directory


命令执行完成之后,cerbot会自动帮助配置apache服务器证书,如果没有apache服务或者其它问题,也会有相应的报错,忽视即可。

重新生成证书



certbot renew --dry-run


自动生成证书



添加任务

corn -e


添加如下内容

0 2 * * 1 python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 


重启corn

service crond restart

评论

此博客中的热门博文

Centos7 安装 PHP7

在centos 7上用postfix,dovecot,mariaDB配置邮箱