我需要创建客户端/服务器应用程序以将文件从客户端发送到服务器。
我使用简单的 ssl 套接字并使用证书进行身份验证。
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(ms,
keyfile=".../newCA/my_client.key",
certfile=".../newCA/my_client.crt",
server_side=0,
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=".../newCA/CA/my-ca.crt"
)
ssl_sock.connect((HOST, MPORT))
和服务器端:
msock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.ssl_sock = ssl.wrap_socket(msock,
keyfile=".../newCA/my_server.key",
certfile=".../newCA/my_server.crt",
server_side=1,
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=".../newCA/CA/my-ca.crt"
)
self.ssl_sock.bind(('', self.PORT))
self.ssl_sock.listen(self.QUEUE_MAX)
问题如下:当客户端尝试连接到服务器时,需要为服务器端和客户端输入两者的私钥密码。
- 在Java中我们需要设置系统属性:javax.net.ssl.keyStorePassword=""并且它必须自动使用,但是它在Python中是如何使用的呢?我无法在客户端连接时始终输入密码短语。
问题是我的应用程序:客户端应该使用已经签名的证书,服务器也应该使用已经签名的证书。我无法改变它。服务器和客户端都是长期存在的应用程序,因此我们只需运行它们,无需寻找它们。但是,据我了解,Python 不提供自动输入私钥密码的标准方法。可能还有其他建议吗?