0

我得到了以下代码,应该执行 ssl 握手和证书身份验证:

1   s = socket.socket()
2   print "connecting..."
3   logging.debug("Connecting")
4   # Connect with SSL mutual authentication
5   # We only trust our server's CA, and it only trusts user certificates signed by it
6   c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED,
7                       ssl_version=ssl.PROTOCOL_SSLv3, ca_certs='ca.crt',
8                       certfile='user.crt', keyfile='user.key')
9   c.connect((constants.server_addr, constants.port))

我对此有两个问题:

  1. 我们在哪里指定我们连接的服务器/端口?这些论据是socket.socket()什么?
  2. 我有一个 .p12,从中提取了一个 pem 格式的证书和一个密钥(请参阅这个问题),我假设它们分别对应于user.crtuser.key(第 8 行)。但是,虽然我假设ca.crt(第 7 行)是从证书颁发机构检索的,但如何检索它?

如果上述代码的任何部分或我对它的假设不正确,请告诉我。谢谢!

4

1 回答 1

2
  1. 服务器地址和端口被指定为第 9 行中套接字地址的一部分,指定为 的参数connect

  2. 通常,您已通过某种带外方法获取 CA 证书,然后将其保存在本地。/etc/ssl/certsLinux 系统通常具有一系列证书,用于在或类似下可用的知名、受信任的 CA。

于 2012-05-17T16:17:13.433 回答