let's encrypt是一个专注于安全的非营利组织,官网为:https://letsencrypt.org/ 。它免费提供的证书被各大互联网企业所支持,不仅如此,还支持通配符域名证书,比如可以直接申请*.hustyx.com的证书,这在服务端布署可以省很多事情。不过,let's encrypt的证书只有三个月有效期,在过期之前需要再续签(renew)一把,let's encrypt提供了各种工具来简化这一过程,甚至如果你是使用的aws之类的大厂服务,工具还能自动化生成和布署,不过我还是喜欢生成证书后自己手动处理。
首先安装letsencrypt的证书机器人,只是当工具来用,所以就不装在系统里,而是装在某个指定路径,命令为:
pip install -t ./ certbot
然后设置好环境变量,确保certbot命令可用:
export PYTHONPATH=$PYTHONPATH:`pwd`/py_modules
export PATH=$PATH:`pwd`/py_modules/bin
接着就可以开始申请证书了:
certbot certonly -d *.hustyx.com --manual --config-dir=`pwd`/certificate --work-dir=`pwd`/certificate --logs-dir=`pwd`/certificate
接着,命令自动暂停,会让添加一条域名TXT解析,以验证域名的所有权,按提示添加好解析后,先自行用dig命令验证一下:
dig TXT _acme-challenge.hustyx.com
确认无误后,按回车让证书生成继续进行。
稍等一会,就出现Congratulations了,表明证书生成成功,并打印了存储路径,同时非常有心地放了一个README文件,里面描述了所有证书文件的用途,接着怎么使用就一目了然:
This directory contains your keys and certificates.
`privkey.pem` : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem` : will break many server configurations, and should not be used
without reading further documentation (see link below).
通过如下命令可以查看本地生成的所有证书,以及他们的剩余有效天数:
certbot certificates --config-dir=`pwd`/certificate --work-dir=`pwd`/certificate --logs-dir=`pwd`/certificate
更新所有之前申请的快过期的证书:
certbot renew --config-dir=`pwd`/certificate --work-dir=`pwd`/certificate --logs-dir=`pwd`/certificate