0

背景

所以我有一个库来实现服务器端代码。如果提供了SSLContext,该库将实现 SSL。不需要由公共 CA 签名(SSLContext即,它接受自签名证书。)

问题

由于一些问题,当服务器端代码被执行时,我需要检查服务器是否已启动。如果没有SSLContext提供,这很简单:只需连接到服务器的端口即可。

但是,如果SSLContext提供了,那么我需要“包装”与另一个 SSL 上下文的连接。

  • 我可以使用ssl.SSLContext(),默认情况下在 Python>=3.6 上非常安全,但是我们使用的静态代码分析软件抱怨“不安全的默认值”
  • 我可以使用ssl.create_default_context(),但除非还提供 CA 文件,否则它将拒绝使用自签名证书与服务器的连接(因为默认情况下create_default_context会拉取系统的 CA 文件)

问题

我打算这样做:


    ... snipped code ...
    # conn is socket connection to target server host:port
    ca = self.server_ssl_context.method_to_get_ca()
    test_client_context = ssl.create_default_context(cafile=ca)
    conn = test_client_context.wrap_socket(conn)

有没有办法从SSLContext提供的库中检索 CA 文件?(在我上面的计划中,SSLContext用户提供的将存储在self.server_ssl_context

4

0 回答 0