每一个建立过安全站点的人都在如何维护证书这个问题上深受困扰。Let’s Encrypt 推荐的客户端 Certbot,能够自动的消除这些用户的痛点,并且让站点维护人员能够使用简单的命令开启和管理站点的HTTPS功能。
不需要验证邮件,不需要去编辑复杂的配置,也不再你的站点因为证书过期而无法正常工作。当然,因为Let’s Encrypt提供的是免费证书,因此也不需要付费。
本文简要描述了如何使用Certbot进行证书管理。(欢迎使用任何兼容的客户端;相关说明请查看这些项目的指导页面)。
如果你想知道更多关于它是工作原理,查看我们的 工作原理 页面。
如果你的操作系统包含了一个certbot
的安装包,从这里安装它 ,然后使用相应的certbot
命令。如果没有的话,则可以使用我们提供的cert-auto
包装器脚本快速的获取一份。
$ git clone https://github.com/certbot/certbot
$ cd certbot
$ ./certbot-auto --help
certbot-auto
与certbot
命令拥有相同的命令行参数;它会安装所有的依赖并且自动更新 Certbot 的代码(这个过程下载的文件比较大,因此比较慢)。
Let’s Encrypt 每周会产生有限数量的证书,确切的数量请查看这篇文章。如果你第一次使用certbot,你可能希望添加--test-cert
标识,并且使用一个未使用的域名。这样将会从staging
服务器获得一个证书,它们在浏览器中是无效的,除此之外,其它过程都是相同的,因此你可以测试各种配置选项而不会超过这个数量限制。
Cerbot 支持很多插件,可以用它们来获取和安装证书。下面包含了一些选项的使用例子:
如果你在近期发布的Debian操作系统上运行Apache服务,你可以尝试Apache插件,使用它可以自动获取和安装证书:
certbot --apache
目前在其它平台上还没有实现自动安装,因此你必须使用命令certonly
进行安装。下面是一些例子:
要获取一个可以在任何web服务器的webroot目录上能够运行证书,需要使用“webroot”插件:
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is
这个命令将会获取example.com,www.example.com, thing.is 和 m.thing.is 的单个证书,它将会把前两个域名生成的文件放到/var/www/example目录,后面两个放到/var/www/thing目录。
例如使用内建的“独立”web服务器获取 example.com 和 www.example.com 的证书(你可能需要临时停止已经存在的web服务器):
certbot certonly --standalone -d example.com -d www.example.com
从0.4.0版本开始,Certbot增加了高级的renew
子命令,它可以用于使用之前获取证书时相同的配置续订所有的证书。你可以通过运行以下命令测试一下:
certbot renew --dry-run
上述命令会获取一个测试证书,它不会对你的系统产生任何持久化的修改。如果你觉得这个结果还可以,可以运行下面的命令:
certbot renew
如果你想续订某一个证书(而不是所有的)或者修改某一个用于续订的配置参数,你可以使用certbot certonly
命令和其它特定的配置获取单个证书。当使用certbot certonly
命令的时候,你可以得到单个证书的续订。使用指定-d
选项指定你希望续订的域名所覆盖的每一个域名。
注意: 从0.4.0开始,Certbot将会记录任何你使用certonly
和renew
时选择的配置,未来使用renew的时候将会使用最近的配置。在版本0.3.0中,Certbot只会记录第一次获取证书时的配置,并不会使用之后续订时的配置替换它。
动词renew
被设计用来半自动或者自动的使用,因此它也隐含着--non-interactive
的意味。该选项意味着Certbot不会停下来与你进行交互;对于自动续订来说,使用该选项是非常不错的,但是因为指定该选项的话你无法与Certbot进行交互,因此你应该确保你所有的配置都被正确的设置。
选项--dry-run
用于从我们的staging
服务器获取证书。获取的证书不会保存到磁盘上,并且你的配置也不会被更新,因此你可以用来测试是否的renew
或者certonly
命令能够正确的执行续订。从staging
服务器获取证书不会影响生产服务器的数量限制。
如果你想要改变之前指定的值,你可以在续订时,在命令行中指定一个新的选项,例如:
certbot renew --rsa-key-size 4096
运行certbot renew
命令将会续订所有在续订窗口的证书(默认情况下,证书过期时间为30天)。如果你想要续订单个证书,你应该使用certbot certonly -d
命令指定要续订的证书的域名。例如:
certbot certonly --keep-until-expiring --webroot -w /var/www/example.com -d example.com,www.example.com -w /var/www/thing -d thing.is,m.thing.is
如果你的证书安装在本地服务器,则一旦certonly
命令执行完成,你需要重载服务器的配置文件(例如,对于apache2
服务器来说执行server apache2 reload
命令)。
对于如何建立自动续订功能,请参考续订文档。
使用下面的命令撤销撤销一个证书
$ certbot revoke --cert-path example-cert.pem
更多关于Certbot的信息,请参考 完整文档。已知的一些问题使用Github进行跟踪。在提交新的问题的时候请先参考最近是否有相似的问题。
在阅读文档和问题列表之后,如果你需要额外的帮助的话,请尝试我们的帮助社区论坛。
查看我们的 隐私策略.
查看我们的 商标策略.
Let’s Encrypt是由非营利的互联网安全研究小组(ISRG)管理的一个免费,自动化,开放的证书授权机构。
1 Letterman Drive, Suite D4700, San Francisco, CA 94129
Linux Foundation是Linux基金会的注册商标。Linux是由Linus Torvalds注册的商标。
原文: