文档
Confconsole - Let's Encrypt
目录
概览
Confconsole Let's Encrypt插件提供了通过Let's Encrypt获得一个免费合法 CA 签名的 TLS/SSL 证书的简单方式。它支持两种方法 HTTP-01 (英语). 财务报告和已审计财务报表 DNS-01 (英语). “ 挑战” 方法来验证您对正在注册的( sub) 域的控制 。
HTTP-01挑战由我们自定义的迷你网络服务器通过端口80托管,如果端口80已经使用,默认的网络服务器将被暂时停止. DNS-01挑战通过通过a 临时设置 TXT DNS 记录来完成. 支持的 DNS 提供者 API (英语).
默认 Confconsole 支持在单个证书中注册一个最多有4个子域的域,而现有的网络服务器将在所有的 https 端口上使用该证书. 因此,管理员等也会像Webmin一样使用同样的证书(通过微型服务器建造). Wildcard证书也得到了支持,但它们需要DNS-01验证(与HTTP-01不兼容).
除了通过 Confconsole 初始设置外,一般不需要您服务器的额外配置. 常用的用法假设方案应该"只工作". 更不寻常和/或复杂的可能仍然可能,但可能需要额外的配置。

默认情况下,Confconsole应该与这些服务器/网络服务器"只要工作":
- Apache 密码
- 立方体( L)
- Nginx 密码
- 汤姆卡特
- Webmin 密码
如果您希望看到对替代服务器的支持, 请在 论坛,和/或打开一个问题 我们的追踪器 如果你愿意提供代码, 这是热烈欢迎。
证书自动续签
选择此选项会让默认的 TLS/ SSL 证书续签任务 crun 工作( Name/etc/cron.daily/confconsole-dehydrated 密码)可执行文件(或不是)。只有/etc/cron.daily内部可执行文件会自动通过cron触发.
说明: 在获得初始证书( 也配置脱水) 之前, cron 任务在 cron. daily 目录中并不存在 。 这保证了在脱水-包装器运行之前无法启用 crunon 任务(希望生成一个 Let's Encrypt TLS/ SSL cert).
说明: 要生成 TurnKey Let's Encrypt 集成的通配符证书, 您需要使用 DNS-01 验证. DNS-01验证在Confconsole v2.1之前是无法提供的(第一次出现在TurnKey v18.0).
有关Cron工作实际工作的信息,请参见 任务细节 下图。
获取证书
选择此选项将允许您为服务器设置一个完全合格的域名( FQDN) 。
另一个选项是设置一个根域,最多4个独立的子域.
如果您想要设置多个根域和/或多个子域,则需要手动配置。请参见 高级 - 多个域名的使用 下方。如果您有其他没有覆盖的情景,请在论坛上签名并张贴。
获取证书 - HTTP-01
此选项将验证您对域名的所有权, 方法是查看域名的公开 DNS 记录, 并检查是否正在通过 。 您的服务器端口 80 。
所需经费:
- 端口 80: 端口 80( 默认的香草 HTTP 端口) 必须打开您的服务器并公开
- DNS 记录: 权威的“ A” /'AAAA' 或“ CNAME” 记录, 将解析到您的服务器( 您正在获取证书的所有域/ 子域)
端口80: 除了端口可以对外访问外,不需要修改现有的网络服务器配置。例如。 网络服务器配置将所有从HTTP到HTTP的流量重定向将被忽略,所以不需要更改.
DNS记录 : 如果您刚刚用 DNS 登记员做了所需的修改, 请注意 DNS 记录需要时间才能公开传播 。 要双倍检查您的 DNS 记录是否公开, 请通过“ dig” 检查。 例如, Google 免费在线 挖掘工具.
重要说明: 请确保您正确配置域名服务器, 并在运行前公开使用端口 80 。 不这样做将导致Let's Encrypt挑战失败(因此你不会获得证书). 重复的失败可能导致您的服务器被封禁( 一周) , 从而导致进一步尝试 。
获取证书 - DNS-01
此选项将验证您对域名的所有权, 方法是查看一个特殊的 DNS TXT 的 root域名公用记录, 并确保其中包含适当的挑战 数据。不需要外部访问您的服务器,所以这个选项对于内部/内部网络服务器来说是理想的。这个选项也支持通配符证书(例如“*.example.com”)。
所需经费:
- 支持的 DNS 提供者: 您的域名必须注册到 支持提供者
- 全权证书:用户证书和/或API密钥(视相关),用于访问您的DNS提供者的API
支持的 DNS 提供者 : 需要用您的 DNS 登记员创建所需的 TXT DNS 记录。 Confconsole 杠杆 脱水 反过来又能发挥杠杆作用 双倍体 以创建所需的 TXT DNS 记录。因此,您的域名需要用 支持提供者.
全权证书: 要创建所需的DNS记录,需要访问您的 DNS 提供者( 通过 API) 。 每个提供者都有不同的要求, 所以请查看 dns- lexicon 文档。在该文档页面上,请找到您的提供者并单击链接。这应当带您到该页面的相关部分。 相关字段采用点点格式,键用单空字体,色橙字标注,后面有解释.
注意配置文件可能包含注释( 以“ #” 前缀开头的行) , 将会被忽略 。 请参看下面的一些配置示例 :
AWS 路由53: (词汇文件)
# AWS Route53 example auth_access_key: YOUR_AWS_ACCESS_KEY auth_access_secret: YOUR_AWS_ACCESS_SECRET private_zone: False # generally you'll always want public zone zone_id: YOUR_ZONE_ID
云浮云: (词汇文件)
# Cloudflare example 1 - using global api key auth_username: YOUR_CF_USERNAME auth_token: YOUR_CF_API_TOKEN
或者说
# Cloudflare example 2 - using unscoped API token auth_token: YOUR_CF_UNSCOPED_API_TOKEN
或者说
# Cloudflare example 3 - using scoped API token auth_token: YOUR_CF_SCOPED_API_TOKEN zone_id: YOUR_CF_ZONE_ID
DNS 其它供应商请点击您的供应商在列表中位于顶端 DNS 列克西con 提供者 doc 页面.
特别说明 重置通关卡证书
请注意,生成一个 通关卡证书 只有在使用 DNS-01 挑战方法时才可用。
通配符证书,是针对星号开始的域生成的特殊证书: '*',例如'*.example.com'. 此特殊证书将匹配任何子域( 在限制范围内) 。 例如 。 '*.example.com'将覆盖网站,包括"www.example.com","blog.example.com"和"docs.example.com"等域。 然而,同样的cert不会与子域,例如子域,工作. a'*.example.com'证书与'www.docs.example.com'不起作用。对于'www.docs.example.com',要使用通配符,需要获得'*.docs.example.com'的证书。
可以在注册通配符域的同时注册特定的子域,然而通配符域必须先行. 多个通配符域也允许.
另外,在注册通配符域时,脱水需要给出一个别名。您将在网上看到以“>”为后缀的域分离的指示。 如果你愿意,你可以做到这一点,但Confconsole会忽略它,生成它自己的别名.
在使用脱氧核糖核酸异构时支持的更高级的特性需要单独使用.
重要说明: 请确保您的 DNS 登记员信息正确无误 。 认证细节不正确会导致 Let's Encrypt 挑战失败( 这样您就不会得到证书 ) 。 重复的失败可能导致您的服务器被封禁( 一周) , 从而导致进一步尝试 。
获取证书 - 幕后
过程是这样的:
- Confconsole Let's Encrypt 插件将域( 和子域) 写入 /etc/dehydrated/confconsole.domains.txt 密码
- Confconsole 调用脱水- 包装器
- 脱水- 包装器停止网络服务器在端口80 上听
- 脱水-包装检查 /etc/dehydrated/confconsole.config 密码 (配置文件);如果它不存在,它会从: /usr/share/confconsole/letsencrypt/dehydrated-confconsole.config 密码
- 脱水-包装检查 /etc/dehydrated/confconsole.hook.sh 密码 (hook脚本);如果它不存在,它会复制默认文件来自: /usr/share/confconsole/letsencrypt/dehydrated-confconsole.hook.sh 密码
- 脱水-包装检查 /etc/cron.daily/confconsole-dehydrated 密码 (cron脚本);如果不存在,它会复制默认文件,来源是: /usr/share/confconsole/letsencrypt/dehydrated-confconsole.cron 密码
- 脱水-包装器呼叫脱水,通过 confconsole. 配置, & confconsole. domains.txt 互联网档案馆的存檔,存档日期2013-09-02. (所有储存在 /etc/dehydrated/ 密码)
- 脱水联系人 Let's Encrypt 并获得挑战( 以证明您控制域)
- 在主持挑战的同时,添加水将除挑战(即304-临时移动)外的所有网络流量临时转向网络根. 显示一个简单的“ under Maintence” 消息。 要提供自定义的 html 页面, 请参见 高级 - 自定义主干线消息 下图。
- 通过钩脚本,使用添加水服务器(minimalist python webserver)进行脱水服务Let's Encrypt挑战
- 完成后, 添加水会被杀死( 通过钩脚本)
- 脱水证书 /etc/ssl/private/cert.pem 密码 (通过钩脚本);脱水生成的原始证书仍然在 /var/lib/dehydrated/certs/DOMAIN 密码
- 将脱水手还给脱水-包装器
- 脱水- 包装器重新启动网络服务器
- 脱水- 包装器重新启动 stunnel( 因此 Webmin & Webshell 也使用新 cert)
- 将脱水的包装手放回confconsole
任务细节
工作证明检查默认证书的到期日期(/etc/ssl/private/cert.pem 密码如果在30天内失效,它会运行脱水-隔热器(使用--force开关)。
高级 - 自定义主干线消息
加上水会将其他所有urls引向网络根部。 默认情况下,它会通过一个基本的索引.html文件显示一个简单的"维护"消息.
如果您想要显示自定义消息, 您可以在 /var/lib/confconsole/letsencrypt/. E. 中添加自定义索引. html 文件, 复制到默认的复制, 然后修改它 :
mkdir -p /var/lib/confconsole/letsencrypt/
cp /usr/share/confconsole/letsencrypt/index.html \
/var/lib/confconsole/letsencrypt/index.html
添加水如果存在,则服务于 /var/lib/confconsole/letsencrypt/index.html,否则会回到默认状态。
说明: 自定义文件必须命名 索引.html 并仅包含有效的 HTML(和 CSS). PHP 或其他服务器侧语言不支持. Enbedded(即"内置") JavaScript 也支持,因为它是处理客户端的侧面.
高级 - 多个域名的使用
交互式Confconsole插件只支持一个最多4个子域的单个域. 然而,脱水-隔板可以处理多个根域,加上多个子域. 要支持您需要手动对多个位置的配置进行调整 :
- 添加额外域到 /etc/dehydrated/confconsole.domains.txt 密码
- 确保每行从基域开始,然后是任何子域的空格分隔列表。
- WARNING: 密码 如果您重新运行 confconsole 的 Let's Encrypt 插件, 您的自定义额外域将被删除 !
- 调整您的网络服务器虚拟主机, 以使用相关的证书 。 /var/lib/dehydrated/certs/DOMAIN 密码。每个域都将拥有自己的子目录,列在 /var/lib/dehydrated/certs/ 密码.
- 默认情况下,最后一个域(以及任何子域)配置的域将是为Webmin & Webshell(和管理员,如果包含的话)工作的域. 要改变这种行为, 您可以调整钩脚本, 或者简单地重新排列域的顺序, 并设置您想要的 Webmin & Webshell 可用的, 最后的 。
- 说明: 任务只检查过期日期 /etc/ssl/private/cert.pem 密码。所以,如果你调整了钩脚本,不再更新 /etc/ssl/private/cert.pem 密码,您还需要调整 cron 任务,以检查您正在更新的证书的过期。 否则将会导致每日证书更新,这可能会暂时阻止您的服务器访问Let's Enterpress服务器.