我正在尝试在 hypercorn 中启用客户端证书验证。如果重要的话,我正在使用FastAPI。文档指导我使用参数--verify-mode
并简单地说明:
对等方证书的 SSL 验证模式,请参阅 ssl.VerifyMode 枚举以获取可能的值。
我尝试了一些猜测,但得到了一个致命错误:“hypercorn: error: argument --verify-mode: Not a valid verify mode”
我摸索了一下,在项目历史中找到了这段代码:
if self.verify_mode is not None:
context.verify_mode = self.verify_mode
所以我这样做是为了验证有效值(Python 3.8):
>>> import ssl
>>> context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
>>> context.verify_mode
<VerifyMode.CERT_NONE: 0>
>>> context.verify_mode = 1
>>> context.verify_mode
<VerifyMode.CERT_OPTIONAL: 1>
>>> context.verify_mode = 2
>>> context.verify_mode
<VerifyMode.CERT_REQUIRED: 2>
>>> context.verify_mode = 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "...ssl.py", line 720, in verify_mode
super(SSLContext, SSLContext).verify_mode.__set__(self, value)
ValueError: invalid value for verify_mode
但是,试图通过0
,1
或2
to --verify-mode
all 会给出“不是有效的验证模式”错误。我可以使用--cert-reqs
警告“警告:请改用 verify_mode”来传递这些值,但它会根据我在config.py中看到的代码启动并设置SSLContext
verify_mode
值。
不幸的是,这似乎没有任何作用。GET
当我在浏览器中执行 a 或至少一个错误时,我希望被提示输入客户端证书,因为它被设置为“必需”。但相反,我得到了很好的 200 错误代码响应。
我找不到任何关于使用 hypercorn 执行此操作的好的示例、教程或文档。这里还有什么我需要做的,比如设置一些其他属性吗?任何指导表示赞赏。