GNU/Linux >> Linux の 問題 >  >> Linux

openssl を使用してサーバーから証明書を取得する

私はアリの答えに同意しますが(そしてそれを支持しました:)、Windows上のJavaで動作させるために追加の手順を実行する必要がありました(展開する必要がある場所):

openssl s_client -showcerts -connect www.example.com:443 < /dev/null | openssl x509 -outform DER > derp.der

openssl x509 -outform DER を追加する前に 変換すると、Windows の keytool から、証明書の形式について不平を言うエラーが発生しました。 .der ファイルのインポートはうまくいきました。


ここではさらに複雑であることがわかりました。このローリングを実現するには、さらに多くの詳細を提供する必要がありました。クライアント認証が必要な接続であり、ハンクシェイクが証明書がダンプされた段階に進むためにさらに情報が必要だったという事実と関係があると思います.

これが私の作業コマンドです:

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

うまくいけば、これは、より多くの情報でできる人にとって正しい方向への微調整です.


今回は sed を使用して、リモート サーバーから証明書を PEM 形式で抽出するワンライナー :

openssl s_client -connect www.google.com:443 2>/dev/null </dev/null |  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

SNIあり

リモート サーバーが SNI を使用している (つまり、単一の IP アドレスで複数の SSL ホストを共有している) 場合、正しい証明書を取得するには、正しいホスト名を送信する必要があります。

openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null

SNI なし

リモート サーバーが SNI を使用していない場合は、-servername をスキップできます。 パラメータ:

openssl s_client -showcerts -connect www.example.com:443 </dev/null


サイトの証明書の完全な詳細を表示するには、次の一連のコマンドも使用できます:

$ echo | \
    openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | \
    openssl x509 -text

Linux
  1. 2020年にコンソールからRedditを使用する

  2. ターミナルを使用してMacOSXからLinuxに接続する

  3. サーバーログの使用

  1. PuTTYを使用してWindowsからLinuxに接続する

  2. SSHを使用してサーバーからファイルをダウンロードするには?

  3. SFTP サーバーが使用しているエンコーディングを変更するにはどうすればよいですか?

  1. Stratisを使用してコマンドラインからLinuxストレージを管理する

  2. Let's Encrypt:Certbotを使用して無料のSSL証明書を取得する

  3. OpenCAエラーデータベースから証明書を読み込めません