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))

これについて2つの質問があります:

  1. 接続先のサーバー/ポートはどこで指定しますか?これらの引数はsocket.socket()
  2. 証明書とキーをpem形式で抽出した.p12があり(この質問を参照)、これらはそれぞれuser.crtuser.key(8行目)に対応していると思います。ただし、ca.crt(7行目)は認証局から取得されたと思いますが、どのように取得すればよいですか?

上記のコードのいずれかの部分またはそれに関する私の仮定が正しくない場合は、私に知らせてください。ありがとう!

4

1 に答える 1

2
  1. サーバーアドレスとポートは、9行目のソケットアドレスの一部として指定され、へのパラメーターとして指定されますconnect

  2. 通常、CA証明書は帯域外の方法で取得し、ローカルに保存します。Linuxシステムには、一般に、以下で利用可能な、よく知られた信頼できるCAの証明書のバンドルがあります/etc/ssl/certs

于 2012-05-17T16:17:13.433 に答える