By Noxxxx from https://www.noxxxx.com/?post_type=post&p=164
欢迎分享与聚合,尊重版权,可以联系授权
OSError: Command /home/administrator/…ncrypt/bin/python2.7 – setuptools pkg_resources pip wheel failed with error code 2
之前没有碰到过这个问题,不论是 14.0 还是 16.0 的 Ubuntu 版本,今天在腾讯云上出现了,而且重装系统,两个操作系统版本上都遇到这个问题,google无解。
certbot的 issue 里也有人提了相似的状况,不过试了里面的几种解决办法也不行,而且作者对此也暂时没有解决方案。
好在网上找到了另一种方法:
调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。
下载到本地
wget https://raw.githubusercontent.com/carpliyz/Lets-encrypt/master/letsencrypt.conf wget https://raw.githubusercontent.com/carpliyz/Lets-encrypt/master/letsencrypt.sh chmod +x letsencrypt.sh
修改配置文件 letsencrypt.conf
只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息
ACCOUNT_KEY="letsencrypt-account.key" DOMAIN_KEY="noxxxx.com.key" DOMAIN_DIR="/home/wwwroot/noxxxx.com" DOMAINS="DNS:noxxxxe.com,DNS:www.noxxxx.com" #ECC=TRUE #LIGHTTPD=TRUE
执行过程中会自动生成需要的 key 文件。其中 ACCOUNT_KEY 为账户密钥, DOMAIN_KEY 为域名私钥, DOMAIN_DIR 为域名指向的目录,DOMAINS 为要签的域名列表, 需要 ECC 证书时取消 #ECC=TRUE 的注释,需要为 lighttpd 生成 pem 文件时,取消 #LIGHTTPD=TRUE 的注释。
运行
./letsencrypt.sh letsencrypt.conf
注意
你的域名要配好 DNS 通过域名访问到到 /home/wwwroot/noxxxx.com 目录,用于域名的验证
将会生成如下几个文件
lets-encrypt-x3-cross-signed.pem example.chained.crt # 即网上搜索教程里常见的 fullchain.pem example.com.key # 即网上搜索教程里常见的 privkey.pem example.crt example.csr
在 nginx 里添加 ssl 相关的配置 这里不是pem的文件,所以不要傻傻的去找了
ssl_certificate /path/to/cert/example.chained.crt; ssl_certificate_key /path/to/cert/example.key; ssl_session_timeout 10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-SHA384:ECDHE-RSA-:ECDHE:!DES:!3DES:!MD5:!DSS:!PKS; ssl_session_cache builtin:1000 shared:SSL:10m; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s;
cron 定时任务
每个月自动更新一次证书,可以在脚本最后加入 service nginx reload等重新加载服务。
0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1