我看到一些人使用“-首选-挑战TLS-SNI-01”和一些“-首选-挑战TLS-SNI”,官方文件是这样说的:
-首选-挑战http使用端口80
-首选-挑战TLS-SNI使用端口443
正确的语法是什么?或者它们都起作用了?我还看到一些人在讨论TLS-SNI-01和TLS-SNI-02,所以我想如果TLS-SNI起作用了,那么它默认使用TLS-SNI-01,对吗?@Schoen你能接受这个吗,Hi@cwhsu,
目前,Certbot不知道除TLS-SNI-01之外的任何版本的TLS-SNI。因此,当您指定TLS-SNI时,它的意思与迄今为止发布的任何Certbot版本中的TLS-SNI-01相同。
在未来,这可能并不总是正确的。就我个人而言,我建议--首选--挑战TLS-SNI-01,以避免任何混淆。然而,我不知道如果Certbot实现其他版本的TLS-SNI,未来的默认行为会是什么;也许@bmw可以对此发表评论。我的猜测是,在模棱两可的情况下,它将默认为“Certbot实现的最新版本的TLS-SNI”,或者可能是“由Certbot和ACME服务器实现的最新版本”?
编辑:我不知道ACME v2将如何工作,但是,为了便于讨论,如果有人向Certbot添加了TLS-SNI-02支持,并使用Boulder的TLS-SNI-02分支创建了一个名为Encrypt We‘s的CA,Certbot可以根据Authz中悬而未决的挑战列表来决定使用哪个版本,对吧?,@Schoen,谢谢您的回答。我认为如果文档可以更新答案以避免混淆,那会更好。我同意-随着v2支持的推出,这可能会成为用户的一个实际问题。这在旗帜的帮助中有记录:
--首选-挑战PREF_CHALLS
以逗号分隔的排序的首选列表
在授权过程中使用的挑战
优先列出的首选质询(例如,“dns”或“tls-
SNI-01,http,dns“)。并不是所有的插件都支持
挑战。看见
细节。Acme Challenges是有版本的,但如果您
选择“http”而不是“http-01”,Certbot将选择
自动获取最新版本。(默认:[])
遗憾的是,Certbot没有选择客户端和服务器都支持的最新版本,而只是尝试使用客户端支持的最新版本。如果服务器不支持该版本,Certbot将错误地表示没有办法满足CA给定的首选挑战集。
在不久的将来将Certbot与We‘s Encryption一起使用时,这不太可能成为问题,但这可能是某一天的问题。也许我们应该将未验证的挑战类型更改为表示该类型的任何版本,并且首选较新版本的挑战。如果它是非版本化的,那就太好了,我实际上不知道这是什么意思。如果certbot可以为我决定版本,我甚至不关心您使用的是哪个版本。我真正想做的就是指定要使用什么质询(TLS-SNI、dns、http)。在国际海事组织,大多数人并不真正关心使用哪个版本,只要它能工作。