私はこれに数日間立ち往生しており、まだ理解できませんでした。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 からの証明書である必要があります。どこで探せばいいのか困っています。私は実際にEC2サーバーでいくつかの.pemファイルを見つけ/etc/ssl/certs
ましたが、クライアントである私のラップトップでは何も見つけませんでした。
また、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
では、実際にこの証明書ファイルをどのように生成すればよいのでしょうか? サーバー側で生成し、クライアントが無線で要求するのを待つか、クライアント側で生成するか、サードパーティから取得してクライアント側で直接使用しますか?
誰でもガイダンスを提供できますか?どんな助けでも大歓迎です。