我坚持了几天,仍然无法弄清楚。我只想在 python 中构建一个简单的 TLS c/s 通信。对于服务器,我使用 EC2,客户端我使用自己的笔记本电脑。我设置并测试了正常的套接字通信,一切正常。
当我从官方文档尝试本教程时,我遇到了问题。对于以下客户端代码:
# 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 的一些证书。我很困惑我应该在哪里寻找它们。我实际上/etc/ssl/certs
在 EC2 服务器上找到了一些 .pem 文件,但在客户端(我的笔记本电脑)上什么也没有。
我还尝试根据本教程在 openssl 上生成用户证书,我按照步骤为服务器生成cakey.pem
,为客户端,所有这些都在我的 EC2 服务器的同一目录中。当我执行时,它输出错误:cacert.pem
userkey.pem
usercert-req.pem
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
那么实际上应该如何生成这个证书文件呢?在服务器端生成,然后等待客户端通过空中请求它们,或者在客户端生成,或者从第三方获取并直接在客户端使用?
任何人都可以提供任何指导吗?任何帮助表示赞赏。