wgetまたはその他のコマンドを使用して、たとえばhttps://www.google.comからSSL証明書をダウンロードしたい。UNIXコマンドラインはありますか?wgetまたはopenssl?
wgetまたはその他のコマンドを使用して、たとえばhttps://www.google.comからSSL証明書をダウンロードしたい。UNIXコマンドラインはありますか?wgetまたはopenssl?
回答:
証明書をダウンロードするには、次のようにopensslに組み込まれているクライアントを使用する必要があります。
echo -n | openssl s_client -connect HOST:PORTNUMBER \
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$SERVERNAME.cert
これにより、証明書がに保存され/tmp/$SERVERNAME.certます。
-showcertsチェーン内のすべての証明書をダウンロードする場合に使用できます。ただし、サーバー証明書をダウンロードするだけの場合は、指定する必要はありません-showcerts
echo -n 接続が解放されるように、サーバーに応答します
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'証明書チェーンと接続の詳細に関する情報を削除します。これは、証明書を他のキーストアにインポートするための推奨形式です。
-showcertsあまりにサーバー/葉の証明書を示して?そのスイッチが含まれている場合にのみ中間体を表示すると思った。
s_clientように、サーバー証明書を常に表示します(サーバー証明書がある場合、つまりサーバーがhelloに応答し、匿名スイートを選択しません)。-showcerts示すすべての本命は、まず中間体および/またはルート証明書、サーバを受け取りました。
答えを見つけました。Opensslが提供します。
openssl s_client -connect $ {REMHOST}:$ {REMPORT}
openssl x509 -text <<EOF cert-text EOF証明書の詳細も参照してください
sudo rm -f cert.pem && sudo echo -n | openssl s_client -connect localhost:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./cert.pem礼儀serverfault.com/questions/139728/...
@bignoseの回答に基づいて、以下はシェフのレシピなどによく適合する自己完結型のバージョンです。
sudo apt-get install gnutls-bin
gnutls-cli --print-cert myserver.com </dev/null| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > myserver.crt
sudo cp myserver.crt /usr/local/share/ca-certificates/myserver.crt
sudo update-ca-certificates
true | openssl s_client -connect google.com:443 2>/dev/null | openssl x509
このopensslのモードはstdinを想定しているため、を介して提供しtrue |、これは-connectパラメーターで指定されたサーバーに接続します。2>/dev/null沈黙エラー(オプション)、/dev/stdinシェルパイプを入力ファイルとして使用するように指定して、出力全体をx509パーサーに渡すことができます。そして、それは出力の-----BEGIN CERTIFICATE-----to -----END CERTIFICATE-----部分だけを出力しs_clientます。> google.com.pemコマンドの最後に追加することで、ファイルにリダイレクトできます。
私が知る限り、これは証明書チェーンを検証するものではなく、エンドサーバーが提供するSSL IDのみを伝えることができます。
x509デフォルトでstdinを読み込むため-in /dev/stdin冗長です(3)s_clientサーバー証明書がローカルのトラストアンカー(ルート)に正しくチェーンされていることを確認しますが、有効期限はありませんこれを示す情報を抑制しました(4)失効を確認しません(5)サーバー証明書の名前を1.0.2でのみ確認し、デフォルトでは確認しません(ただし、証明書を見て簡単に確認できます)その後)