1. ホーム
  2. linux

[解決済み] サーバーから証明書を取得するためにopensslを使用する

2022-03-22 05:13:03

質問

リモートサーバーの証明書を取得し、それを自分のキーストアに追加して、Javaアプリケーションで使用しようとしています。

シニア開発者(彼は休暇中です :( )が、私がこれを実行できると教えてくれました。

openssl s_client -connect host.host:9999

を実行すると、生の証明書がダンプされ、それをコピーしてエクスポートすることができます。次のような出力が得られました。

depth=1 /C=NZ/ST=Test State or Province/O=Organization Name/OU=Organizational Unit Name/CN=Test CA
verify error:num=19:self signed certificate in certificate chain
verify return:0
23177:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1086:SSL alert number 40
23177:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

また、このオプションで試してみました。

-showcerts

とこちら(Debianで動作しています)。

-CApath /etc/ssl/certs/

でも、同じエラーが出ます。

このソース は、そのCApathフラグを使用することができると言っていますが、それは助けにならないようです。複数のパスを試しましたが、無駄でした。

どこが間違っているのか、教えてください。

どのように解決するのですか?

ここでさらに複雑なことが判明しました。これを実行するために、さらに多くの詳細を提供する必要がありました。クライアント認証が必要な接続であることと、ハンクシェイクが証明書をダンプする段階まで続けるために多くの情報を必要としたことが関係しているのでしょう。

以下は、私の作業用コマンドです。

openssl s_client -connect host:port -key our_private_key.pem -showcerts \
                 -cert our_server-signed_cert.pem

これが、もっと情報を得たいと思う人にとって、正しい方向への後押しとなることを願っています。