hypercorn:客户证书验证

问题描述 投票:0回答:1

我正在尝试在Hypercorn中启用客户端证书验证。如果有问题,我正在使用FastAPIdocumentation指示我使用--verify-mode参数,并简单说明:

对等方证书的SSL验证模式,有关可能的值,请参见ssl.VerifyMode枚举。

我尝试了一些猜测,但收到致命错误:“超级玉米:错误:参数--verify-mode:不是有效的验证模式”

我戳了一下,在project history中找到了此代码:

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

但是尝试将012传递给--verify-mode均会出现“无效的验证模式”错误。我可以使用--cert-reqs传递这些值,并带有警告“警告:请改用verify_mode”,但它会启动并基于我在config.py中看到的代码,这似乎是正确的做法并设置了[C0 ] SSLContext值。

不幸的是,这似乎没有任何作用。在浏览器中执行verify_mode时,可能会提示我输入客户端证书,或者至少将其设置为“ required”时出错。但是,相反,我得到了很好的200错误代码响应。

我找不到有关使用hypercorn进行此操作的任何好的示例,教程或文档。我还需要做其他事情,例如设置其他属性吗?任何指导表示赞赏。

python fastapi asgi hypercorn
1个回答
0
投票

我最初以为GET没有做任何事情。但是,在进行其他工作时,我发现这是可能由于我使用cert-reqs标志而创建的幻影过程的结果。现在,当--reload选项设置为1或2时,提示我提供客户端证书。

© www.soinside.com 2019 - 2024. All rights reserved.