三、利用脚本快速获取Let’s Encrypt SSL证书
1、嫌上面的麻烦,不妨来试试利用脚本快速获取Let’s Encrypt SSL证书,调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。
1、项目主页:https://github.com/xdtianyu/scripts/tree/master/lets-encrypt
2、下载到本地:
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.confwget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.shchmod +x letsencrypt.sh
3、配置文件。只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息
ACCOUNT_KEY="letsencrypt-account.key"DOMAIN_KEY="freehao123.com.key"DOMAIN_DIR="/var/www/freehao123.com"DOMAINS="DNS:freehao123.com,DNS:www.freehao123.com"
4、本脚本在Debian下运行正常,但是如果你使用的是CentOS,你还需要修改letsencrypt.sh中openssl.cnf的位置,先找到你的CentOS的openssl.cnf位置。然后打开letsencrypt.sh,将路径/etc/ssl/openssl.cnf替换为你的新路径,例如/etc/pki/tls/openssl.cnf。
PS:20151214更新,该脚本已经更新,现在不需要对CentOS的openssl.cnf进行修改了。感谢ty博主的提醒。
5、执行过程中会自动生成需要的 key 文件。运行:
./letsencrypt.sh letsencrypt.conf
6、注意需要已经绑定域名到 /var/www/www.freehao123.com 目录,即通过 http://freehao123.com http://www.freehao123.com 可以访问到 /var/www/freehao123.com目录,用于域名的验证。
7、正常按照上面的操作即可成功获取到Let’s Encrypt SSL证书,不过经过部落测试最大的问题就是“DNS query timed out”,由于域名DNS解析的问题导致无法验证域名从而获取SSL证书不成功。
Traceback (most recent call last): File "/tmp/acme_tiny.py", line 198, in main(sys.argv[1:]) File "/tmp/acme_tiny.py", line 194, in main signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca) File "/tmp/acme_tiny.py", line 149, in get_crt domain, challenge_status))ValueError: hkh.freehao123.info challenge did not pass: {u'status': u'invalid', u'validationRecord': [{u'url': u'http://hkh.freehao123.info/.well-known/acme-challenge/ sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'hostname': u'hkh.freehao123.info', u'addressUsed': u'', u'port': u'80', u'addressesResolved': None}], u'https://acme-v01.api.letsencrypt.org/acme/challenge/ 5m1su6O5MmJYlGzCJnEUAnvhweAJwECBhEcvsQi5B2Q/1408863', u'token': u'sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'error': {u'type': u'urn:acme:error:connection', u'detail': u'DNS query timed out'}, u'type': u'http-01'}
8、经过对比发现,国内的DNSPOD、阿里云DNS、CloudXNS等都会出现Let’s Encrypt 验证域名超时的情况,国外的Namecheap DNS、Linode DNS、Domain.com DNS等都是没有问题。