Certbot命令和获取各版本证书

Certbot命令

Certbot使用许多不同的命令(也称为“子命令”)来请求诸如获取,更新或吊销证书之类的特定操作。本文档将讨论最重要和常用的命令。文档末尾也会出现一个详尽的列表。

如果您的系统使用较旧的包,那么web服务器上的certbot脚本可以命名为letsencrypt,如果您使用替代的安装方法,则可以命名为certbot-auto。在整个文档中,只要看到certbot,就按照需要使用正确的名称交换。

获取证书(并选择插件)

Certbot客户端支持两种用于获取和安装证书的插件:身份验证器和安装程序。

Authenticator是与certonly命令一起使用以获取证书的插件。验证者验证您是否控制了要为其请求证书的域,获取了指定域的证书,并将该证书/etc/letsencrypt放置在计算机上的目录中。身份验证器不安装证书(它不编辑服务器的任何配置文件以提供获得的证书)。如果您指定多个域进行身份验证,它们将全部列在一个证书中。要获得多个单独的证书,您将需要多次运行Certbot。

安装程序是与install命令一起使用以安装证书的插件。这些插件可以修改网络服务器的配置,以使用certbot获得的证书通过HTTPS为您的网站提供服务。

能够同时执行这两种操作的插件可以与certbot run命令一起使用,这是未指定命令时的默认值。所述run子命令还可以用于指定一个组合不同的鉴权和安装插件。

插入 验证码 研究所 笔记 挑战类型(和港口)
apache Y Y 使用Apache自动获取和安装证书。 http-01 (80)
nginx Y Y 使用Nginx自动获取和安装证书。 http-01(80)
webroot Y N 通过写入以下内容的webroot目录获得证书已经运行的网络服务器。 http-01(80)
standalone Y N 使用“独立”网络服务器获取证书。需要端口80可用。这对没有网络服务器的系统,或者与不支持或不希望使用本地Web服务器。 http-01(80)
DNS插件 Y N 这类插件可自动通过以下方式获取证书修改DNS记录以证明您可以控制域。以这种方式进行域验证是从Lets获得通配符证书的唯一方法加密。 DNS-01(53)
manual Y N 通过向您提供指导以帮助您获得证书自己执行域验证。另外允许您指定脚本以自动执行验证任务定制的方式。 http-01(80)或 dns-01(53)

插件使用ACME协议来证明您控制着一个域。选项为http-01 (使用端口80)和dns-01(要求在端口53上配置DNS服务器,尽管通常与Web服务器不在同一台计算机上)。一些插件支持多种挑战类型,在这种情况下,您可以通过选择一个--preferred-challenges

也有许多第三方插件可用。下面我们将更详细地描述每个插件的使用环境以及使用方法。

Apache

Apache插件当前支持基于Debian,Fedora,SUSE,Gentoo和Darwin的现代操作系统。这可以自动在Apache Web服务器上获取安装证书。要在命令行上指定此插件,只需添加即可 --apache

Webroot

如果您正在运行的本地Web服务器能够修改所提供的内容,并且不想在证书颁发过程中停止该Web服务器,则可以使用webroot插件通过添加certonly和获取证书。--webroot在命令行上。另外,您需要指定--webroot-path-w使用包含您的网络服务器提供的文件的顶级目录(“网络根目录”)。例如, 或是两个常见的webroot路径。--webroot-path /var/www/html``--webroot-path /usr/share/nginx/html

如果您要一次获得多个域的证书,则该插件需要知道每个域的文件从何处提供,这可能是每个域的单独目录。当请求多个域的证书时,每个域将使用最近指定的--webroot-path。因此,例如

certbot certonly --webroot -w /var/www/example -d www.example.com -d example.com -w /var/www/other -d other.example.net -d another.other.example.net

将使用/var/www/example前两个和后两个的webroot目录 获得所有这些名称的单个证书 /var/www/other

webroot插件通过为中的每个您请求的域创建一个临时文件来工作${webroot-path}/.well-known/acme-challenge。然后,让我们加密验证服务器发出HTTP请求,以验证每个请求域的DNS都解析为运行certbot的服务器。向您的Web服务器发出的示例请求如下所示:

66.133.109.36 - - [05/Jan/2016:20:11:24 -0500] "GET /.well-known/acme-challenge/HGr8U1IeTW4kY_Z6UIyaakzOkyQgPr_7ArlLgtZE8SX HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"

请注意,要使用webroot插件,必须将服务器配置为提供来自隐藏目录的文件。如果/.well-known您的Web服务器配置对它进行了特殊处理,则可能需要修改配置,以确保/.well-known/acme-challengeWeb服务器为内部文件提供服务。

Nginx

Nginx插件应该适用于大多数配置。我们建议您在使用Nginx配置之前先对其进行备份(尽管您也可以使用certbot --nginx rollback来将更改恢复为配置)。您可以通过--nginx在命令行使用它。

certbot --nginx

Standalone

如果您不想使用(或当前没有)现有的服务器软件,请使用独立模式获取证书。独立插件不依赖获取证书的计算机上运行的任何其他服务器软件。

要使用“独立”网络服务器获取证书,可以通过 在命令行中包含certonly和使用独立插件--standalone。此插件需要绑定到端口80才能执行域验证,因此您可能需要停止现有的Web服务器。

您的计算机仍然必须能够使用每个请求的域名在指定端口上接受来自Internet的入站连接。

默认情况下,Certbot首先尝试使用IPv6绑定到所有接口的端口,然后再使用IPv4绑定到该端口。只要至少一个绑定成功,Certbot就会继续。在大多数Linux系统上,IPv4流量将被路由到绑定的IPv6端口,并且在第二次绑定期间可能会失败。

使用--<challenge-type>-address明确地告诉Certbot哪个接口(和协议)来绑定。

DNS插件

如果您想获得通配符证书从Let’s Encrypt或certbot在目标网络服务器以外的计算机上运行 ,可以使用Certbot的DNS插件。

这些插件未包含在默认的Certbot安装中,必须单独安装。尽管DNS插件当前无法与一起使用 certbot-auto,但它们在许多OS软件包管理器中都可以用作Docker映像。访问https://certbot.eff.org 了解在系统上使用DNS插件的最佳方法。

安装后,您可以在以下位置找到有关如何使用每个插件的文档:

  • certbot-dns-cloudflare
  • certbot-dns-cloudxns
  • certbot-dns-digitalocean
  • certbot-dns-dnsimple
  • certbot-dns-dnsmadeeasy
  • certbot-dns-google
  • certbot-dns-linode
  • certbot-dns-luadns
  • certbot-dns-nsone
  • certbot-dns-ovh
  • certbot-dns-rfc2136
  • certbot-dns-route53

Manual

如果您想获得certbot在目标网络服务器以外的计算机上运行的证书,或者自己执行域验证的步骤,则可以使用手动插件。从用户界面中隐藏后,您可以通过在命令行上指定certonly和使用插件来获取证书 --manual。这要求您将命令复制并粘贴到另一个终端会话中,该终端会话可能在另一台计算机上。

手动插件可以使用httpdns挑战。您可以使用该--preferred-challenges选项来选择自己喜欢的挑战。

http挑战将要求你把一个文件在一个特定的名称和具体内容/.well-known/acme-challenge/,直接在顶级目录(“网根”)目录中包含您的网络服务器提供服务的文件。本质上,它与webroot插件相同,但不是自动化的。

使用dns质询时,certbot将要求您将包含特定内容的TXT DNS记录放置在域名下,该域名由要为其颁发证书的主机名组成,前缀为_acme-challenge

例如,对于domain example.com,区域文件条目如下所示:

_acme-challenge.example.com. 300 IN TXT “gfj9Xq…Rg85nM”

另外,您可以使用--manual-auth-hook--manual-cleanup-hook标志指定脚本来准备进行验证,执行身份验证过程和/或在身份验证之后进行清理。在“hook”部分中对此进行了更深入的描述。

合并插件

有时您可能需要指定不同的Authenticator和Installer插件的组合。要做到这一点,说明与认证插件 --authenticator-a与安装插件--installer-i

例如,您可以使用webroot插件进行身份验证并使用apache插件进行安装来创建证书。

certbot run -a webroot -i apache -w /var/www/html -d example.com

或者,您可以使用手动插件进行身份验证并使用nginx插件进行安装来创建证书。

certbot run -a manual -i nginx -d example.com

第三方插件

其他开发人员也为客户端提供了许多第三方插件。许多是beta /实验性的,但有些已经被广泛使用:

插入 验证码 研究所 笔记
haproxy Y Y 与HAProxy负载均衡器集成
s3front Y Y 与S3存储桶的Amazon CloudFront分发集成
gandi Y N 通过Gandi LiveDNS API获得证书
varnish Y N 通过Varnish服务器获取证书
external-auth Y Y 一个方便脚本编写的插件
pritunl N Y 在pritunl分布式OpenVPN服务器中安装证书
proxmox N Y 在Proxmox虚拟化服务器中安装证书
dns-standalone Y N 通过集成的DNS服务器获取证书
dns-ispconfig YY N 使用ISPConfig作为DNS服务器的DNS身份验证
dns-clouddns Y N 使用CloudDNS API的DNS身份验证

如果您有兴趣,也可以编写自己的plugin。

本文章首发在 网安wangan.com 网站上。

上一篇 下一篇
讨论数量: 0
只看当前版本


暂无话题~