【发布时间】:2012-09-06 23:56:59
【问题描述】:
我被这个问题困扰了好几天,仍然无法弄清楚。我只想在 python 中构建一个简单的 TLS c/s 通信。对于服务器,我使用 EC2,客户端我使用自己的笔记本电脑。我设置并测试了正常的套接字通信,一切正常。
当我从官方文档中尝试this tutorial 时,我遇到了问题。对于以下客户端代码:
# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
ca_certs="/etc/ca_certs_file",
cert_reqs=ssl.CERT_REQUIRED)
据我所知,/etc/ca_certs_file 部分应该是来自 CA 的一些证书。我很困惑我应该在哪里寻找它们。我实际上在 EC2 服务器上的 /etc/ssl/certs 中找到了一些 .pem 文件,但在客户端(我的笔记本电脑)上什么也没有。
我也试过根据this tutorial on openssl生成用户证书,我按照步骤,为服务器生成cakey.pem,cacert.pem,为客户端生成userkey.pem,usercert-req.pem,都在同一个目录下在我的 EC2 服务器中。当我执行openssl ca -in usercert-req.pem -out usercert.pem 时,它会输出错误:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
unable to load certificate
140420412405408:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE
那么实际上应该如何生成这个证书文件?在服务器端生成,然后等待客户端通过空中请求它们,或者在客户端生成,或者从第三方获取并直接在客户端使用?
有人可以提供任何指导吗?任何帮助表示赞赏。
【问题讨论】: