给定SSLContext,我可以获取其CA文件吗?

2024-05-08 00:13:44 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

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

问题

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

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

  • 我可以使用ssl.SSLContext(),这在Python上默认是非常安全的>=但是我们使用的静态代码分析软件抱怨“不安全的默认设置”
  • 我可以使用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中)


Tags: 文件代码服务器defaultsslservercreatecontext