我坚持这个好几天,无法弄明白依然。 我只是想建立在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的一些证书。 我很困惑,我应该找他们。 其实我觉得在某些.PEM文件/etc/ssl/certs
在客户端上EC2服务器,但没有上,我的笔记本电脑。
我还试图根据生成用户证书这个教程上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
所以实际上应该如何这个证书文件获取生成? 在生成服务端,然后等待客户机在空中,要求他们,或者在客户端产生,或从第三方获得,并在客户端直接使用?
任何人都可以给任何指导? 任何帮助表示赞赏。