質問: opensslを使用してサーバーから証明書を取得する リモートサーバーの証明書を取得しようとしています。これを使用して、キーストアに追加し、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フラグを使うことができると言っていますが、助けにはならないようです。私は無駄に複数のパスを試してみました。どこに問題があるのか教えてください。
回答: 次のbashスクリプトを使ってサーバーのルート証明書を取得して保存できます。certs=$(echo -n | openssl s_client -connect $host_name:$port -showcerts | sed -ne '/-begin certificate-/,/-end certificate-/p') echo "$certs" | awk -v rs="-----begin certificate-----" 'nr > 1 { printf rs $0 > "'$server_root_certificate'"; close("'$server_root_certificate'") }' 必要な変数を上書きするだけです。