如何在python ssl.wrap_socket()中设置/查找ca_certs参数

NDU*_*DUF 4 python sockets ssl

我正在尝试编写一个python 2.7脚本,它通过SSL或TLS套接字连接到服务器.服务器存在,可以提供证书等.

我找到了以下代码:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s,
                       ca_certs="/etc/ca_certs_file",
                       cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect((serverName, portNumber))
Run Code Online (Sandbox Code Playgroud)

我不明白什么是ca_certs参数.这应该是我的计算机上当前存在的文件吗?如果是,我怎么知道它在哪里?我查看了我的linux计算机(使用debian的raspberry pi)并在/ etc/ssl/cert目录中找到了很多.pem文件.我应该将ca_certs参数设置为其中一个吗?如果是,可以选择哪一个?如果不是,我该怎么设置它?

NDU*_*DUF 5

事实证明,cert文件是一个应该已经存在于操作系统中的文件,它包含一个由操作系统信任的根(和/或中间?不确定)证书的连接列表.在我的案例中rasperry pi debian是/etc/ssl/certificates/ca-certificates.crt

如果您有您希望信任的证书,可以使用linux命令update-ca-certificates将它们添加到此文件中.这将读取文件/etc/ca-certificateds.conf,该文件应包含您希望信任的证书列表.(默认情况下,它会尝试在/ usr/share/ca-certificates中找到这些证书)