【问题标题】:hypercorn: client-certificate verificationhypercorn:客户端证书验证
【发布时间】:2020-04-08 18:54:55
【问题描述】:

我正在尝试在 hypercorn 中启用客户端证书验证。如果重要的话,我使用FastAPIdocumentation 指示我使用 --verify-mode 参数并简单说明:

对等方证书的 SSL 验证模式,请参阅 ssl.VerifyMode 枚举以获取可能的值。

我尝试了一些猜测,但得到了一个致命错误:“hypercorn: error: argument --verify-mode: Not a valid 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 中看到的代码启动并设置@987654333 @verify_mode 值。

不幸的是,这似乎没有任何作用。当我在浏览器中执行GET 时,我希望被提示输入客户端证书,或者至少是一个错误,因为它被设置为“必需”。但相反,我得到了很好的 200 错误代码响应。

我找不到任何关于使用 hypercorn 执行此操作的好的示例、教程或文档。这里还有什么我需要做的,比如设置一些其他属性吗?任何指导表示赞赏。

【问题讨论】:

    标签: python fastapi asgi hypercorn


    【解决方案1】:

    我最初认为cert-reqs 没有做任何事情。然而,在处理其他事情时,我发现这可能是由于我使用了--reload 标志而创建的幻象进程的结果。现在,当 cert-reqs 选项设置为 1 或 2 时,系统会提示我输入客户端证书。我仍然收到警告,我认为 verify-mode 选项无法正常工作,但基本行为似乎正常。

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 2011-04-09
      • 2013-10-07
      • 2012-02-23
      相关资源
      最近更新 更多