Letsencrypt certbot-nginx插件。它是如何工作的?

时间:2017-02-01 13:20:59

标签: nginx lets-encrypt certbot

我使用certbot-nginx插件成功。

我知道it是开源并托管在github上。

但我没有足够的技能来分析这段代码。

例如:

我有几个由nginx代理的内部网站。所有虚拟主机配置都具有以下匿名访问限制:

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;

此访问限制禁止letsencrypt服务器以及所有其他未定义的主机。

certbot renew --nginx正常执行证书更新。

它是如何运作的?

如果安全吗?

1 个答案:

答案 0 :(得分:3)

我自己也在问同样的问题所以我做了一些挖掘,这就是我发现的:

Certbot主要使用80或443个端口进行挑战(http-01tls-sni-01)来验证域名所有权,如certbot docs中所述:

  

在幕后,插件使用了几个ACME协议挑战之一   证明你控制了一个域名。选项是http-01(使用端口   80),tls-sni-01(端口443)和dns-01(需要配置a   端口53上的DNS服务器,虽然它通常不是同一台机器   你的网络服务器)。一些插件支持多种挑战类型,   在这种情况下,您可以选择--preferred-challenge。

查看certbot_nginx http-01挑战的 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 """ plugin implementation我们可以看到插件编辑nginx配置以包含用于执行挑战的其他服务器块:

--uitest-tools-dir $APPCENTER_SOURCE_DIRECTORY/packages/Xamarin.UITest.*/tools