vsk*_*iev 4 nginx lets-encrypt certbot
我成功使用certbot-nginx插件。
我知道它是开源的,托管在github上。
但是我没有足够的技能来分析此代码。
例如:
我有几个由nginx代理的内部站点。所有virtualhost配置均具有以下匿名访问限制:
allow 192.168.1.0/24;
allow 192.168.0.0/24;
allow 10.88.0.0/16;
allow 127.0.0.1;
# gate1.example.com
allow X.X.X.X;
# gate2.example.com
allow X.X.X.X;
# other gate's
# .......
deny all;
Run Code Online (Sandbox Code Playgroud)
此访问限制禁止letencrypt服务器以及所有其他未定义的主机。
但是certbot renew --nginx正常执行证书更新。
它是如何工作的 ?
是否安全?
小智 5
我本人也在问同样的问题,所以我做了一些挖掘,这是我发现的:
Certbot主要使用80或443端口进行挑战(http-01和tls-sni-01),以验证域所有权,如certbot docs中所述:
在幕后,插件使用了几种ACME协议挑战之一来证明您控制着一个域。选项包括http-01(使用端口80),tls-sni-01(端口443)和dns-01(需要在端口53上配置DNS服务器,尽管通常与您的Web服务器不在同一台机器上)。一些插件支持不止一种挑战类型,在这种情况下,您可以使用--preferred-challenges选择一种。
查看一下Challenge的certbot_nginx 插件实现,http-01我们可以看到插件编辑了Nginx配置,以包括用于执行挑战的其他服务器块:
def _make_server_block(self, achall):
"""Creates a server block for a challenge.
:param achall: Annotated HTTP-01 challenge
:type achall:
:class:`certbot.achallenges.KeyAuthorizationAnnotatedChallenge`
:param list addrs: addresses of challenged domain
:class:`list` of type :class:`~nginx.obj.Addr`
:returns: server block for the challenge host
:rtype: list
"""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |