4

我正在尝试编写一个 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))

我不明白 ca_certs 参数是什么。这应该是我计算机上当前存在的文件吗?如果是,我怎么知道它在哪里?我查看了我的 linux 计算机(带有 debian 的树莓派),并在我的 /etc/ssl/cert 目录中发现了很多 .pem 文件。我应该将 ca_certs 参数设置为其中之一吗?如果是,选择哪一个?如果不是,我应该将其设置为什么?

4

1 回答 1

5

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

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

于 2012-08-21T08:15:30.553 回答