利用letsencrypt部署单域名SSL/TLS证书
本文最后更新于 2025年4月17日 早上
Let’s Encrypt是一家证书颁发机构,可以使用支持ACME协议的软件自动获取由Let’s Encrypt颁发的用于https的SSL/TLS证书。
Let’s Encrypt既支持单域名的证书,也支持泛域名/通配符证书(即*.domain.com这种形式),不过也会有所谓的速率限制,也就是一个域名可以在一周申请多少个证书(目前是50)以及一个通配符证书支持多少个子域名(目前是100)。
Let’s Encrypt提供了非常完善的文档,并且有中文版,可以点击中文版文档查看更详细的信息。
为了打字的方便,Let’s Encrypt在下文就简化成LE了。
本文仅总结通过centOS服务器和Nginx为一个单域名自动申请证书。
一、域名的必要配置
LE需要验证申请者对域名的控制权,目前有两个方式,一个是HTTP-01方式,一个是DNS-01方式。本文申请的单域名证书是通过HTTP-01的方式。这种方式要求在需要被配置证书的域名下的某个特定路径放置一个指定文件,然后LE会尝试下载这个文件并验证,一旦验证成功就可以继续申请颁发证书了。
为了能够满足这个要求,需要做两件事:
- 在DNS服务商配置域名解析记录,将域名解析到服务器,比如把
www.bingyuan.site
解析到IP为123.124.125.126
的服务器上。 - 在被解析的服务器的nginx配置里配置
server block
,配置域名服务,以上面的www.bingyuan.site
举例:
1 |
|
二、安装遵守ACME协议的客户端
官方推荐的软件是certbot
,点击访问certbot官网,也可以使用其他客户端,这个文档里面有清单。
截至到22年6月,certbot官网的首页差不多是这个样子的:


三、申请SSL证书
安装完certbot
并建立软链接后,我们就可以使用这个软件来帮忙申请证书了,这部分文档里面也有,这里以centos8
上运行的nginx
为例,实践一下如何操作。
申请证书并使用有两种方式,一种是获取和安装,一种是仅获取。我目前都是使用的获取和安装这种方式,说是安装,其实也就是把证书获取之后再修改nginx.conf
,修改80端口的server
块,在里面添加一个301响应返回一个改写为htpps的访问;并且新建一个server
块监听443端口,并在这个server
块中指定ssl证书的存储位置。
- 开启certbot并指定用于nginx
certbot --nginx
- certbot自动搜索域名,并给出清单,选择一个数字,比如下图:
如果域名已经配置好,账户也录入的话,基本上就OK了,如果出了问题根据具体提示,一般也不难处理。