web-dev-qa-db-ja.com

リモートサーバーのSSL証明書をファイルとしてローカルに保存する方法

リモートサーバーのSSL証明書(HTTPSではなく)をダウンロードする必要があります。ただし、SSLハンドシェイクはGoogle Chromeの/ IE/wgetと同じで、すべての証明書の確認に失敗するエラーを表示します。私のラップトップのWindowsの証明書ストアに信頼されているのは、私のIT担当者にCA証明書をもらうことができないためです。

これはオフィスの通信用なので、実際のクライアントを使って証明書を取得することはできません。

これを行うにはどうすればいいですか?私はWindows 7とLinuxの山を持っているのでどんなツール/スクリプト言語でも大丈夫です。

305
Kimvais

OpenSSLにアクセスできる場合は、試してください。

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts

{HOSTNAME}と{PORT}を自分の値がなんであれ置き換えます。

301
gbroiles

証明書を取得してダウンロードする簡単な方法は、-showcertsからの出力をx509 sslコマンドにパイプ処理する次のコマンドを実行することです。例えば:

openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

証明書を使用するには、wgetを使用します。

wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem
223
elec3647

正直に言うと、これまで試したことは一度もありませんでしたが(必要ではありませんでした)、Firefoxで試したことがあるので、保存するとうまくいくようです:

  1. 上部のSSL証明書アイコン/下部の南京錠をクリックします。
  2. View Certificateをクリック
  3. Detailsタブをクリック
  4. 階層からどの証明書を希望するかを選択します。
  5. Exportをクリック

alt text

122
William Hilsum

Chromeブラウザを使用して証明書をエクスポートする

  1. SSLを使用してWebサイトに接続する( https:// whatever

2.ロック記号をクリックしてから、詳細をクリックします。

  1. Chromeバージョン56以降は、次の手順を実行します。[Three Dots Menu]、[More Tools]、[Developer Tools]の順にクリックし、[Security]タブをクリックします。これにより、セキュリティの概要証明書の表示ボタンが表示されます。

  2. 証明書の表示ボタンをクリックしてください。

    モーダルウィンドウが開きます。 2つのペインがあります。一番上のものは、サイトの証明書(リストの最後のもの)、中間証明書、およびルート証明書(一番上のもの)の信頼階層を示しています。

    2番目の大きなペインには、いずれかの証明書の詳細が表示されます。

    0個以上の中間証明書が存在する可能性があります。

    ルート証明書には金色の枠のアイコンが付いています。他の人は青い枠線があります。

    下のスクリーンショットを見てください。

  3. 証明書をエクスポートするには

    1. まず信頼階層の証明書のアイコンをクリックします。
    2. 証明書はモーダルの主要部分に表示されます。
    3. モーダルの主要部分にある証明書の大きいアイコンをクリックしてください。 アイコンをデスクトップにドラッグします。 Chromeは証明書をデスクトップにコピーします。

enter image description here

47
Larry K

これは gbroilesの回答 ですが、cURLプロジェクト にはさらにいくつかのページがあります。リモートサーバのSSL証明書を保存するためのopensslの使用に関する詳細

  • openssl s_client -connect {ホスト名}:{ポート} |ログファイル
  • QUITと入力してEnter/Returnキーを押します。
  • 証明書は "BEGIN CERTIFICATE"と "END CERTIFICATE"の間に表示されます。
  • 証明書のデータを見たい場合は、次のものを使用できます。

    openssl x509 -inform PEM -in certfile -text -out certdata

    ここで、certfilelogfileから抽出された証明書です。 certdataを見てください。

19
Daniel Trebbien

自動化

サーバー上の仮想ホストから正しい証明書を取得するには、servernameが必要でした。

openssl s_client -showcerts -connect Host.name.com:443 -servername Host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > Host.name.com.pem

デスクトップ用の証明書に変換することもできます

openssl x509 -inform PEM -in Host.name.com.pem -outform DER -out Host.name.com.cer

最後の部分はあなたの証明書にそれを追加することです、ウィンドウズではわからない
私が使ったMacのキーチェーンでは、似たようなものになります.

Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain Host.name.com.cer

15
Artistan

証明書のみを含む結果が得られます

echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "
1

Windows上であればもっと簡単な方法を見つけました。 Microsoft Edge(プレクロム)を試して、アドレスバーの鍵をクリックします - >証明書の表示ダイアログが「ファイルにエクスポート」ボタンでポップアップ表示され、それが.crtファイルとして保存されます。

私はあまりEdgeを使用しませんでしたが、これは簡単なことでした。

0
Dale Wilbanks