【发布时间】:2012-05-17 06:23:22
【问题描述】:
我设置了一个拒绝没有有效 .p12 证书的连接的 Web 服务器。我需要使用 Python 脚本访问在服务器上运行的 REST API,但我找不到任何有关如何执行此操作的信息。如果有人有关于如何在 Python 中使用 .p12 证书执行 SSL 握手的好教程,请告诉我。
【问题讨论】:
我设置了一个拒绝没有有效 .p12 证书的连接的 Web 服务器。我需要使用 Python 脚本访问在服务器上运行的 REST API,但我找不到任何有关如何执行此操作的信息。如果有人有关于如何在 Python 中使用 .p12 证书执行 SSL 握手的好教程,请告诉我。
【问题讨论】:
this question 的答案中描述的相同方法,它询问在 HTTPS 连接期间验证服务器证书(urllib 或 httplib 默认情况下根本不这样做)应该允许您指定除了 CA 证书列表之外的 client-certificate。
ssl.wrap_socket 的选项,请按照文档中的说明传递cerfile/keyfile 参数。setopt(pycurl.SSLCERT, "/path/to/cert.pem") 和 setopt(pycurl.SSLKEY, "/path/to/key.pem")。选项名称基于SSL and SECURITY OPTIONS section of the cURL documentation(也有密码选项)。您可能需要将 PKCS#12 (.p12) 文件转换为 PEM 格式。这样做:
# Extract the certificate:
openssl pkcs12 -in filename.p12 -nokeys -out certificate.pem
# Extract the private key:
openssl pkcs12 -in filename.p12 -nocerts -out privkey.pem
【讨论】: