web-dev-qa-db-ja.com

Linuxコマンドラインを介してリモートSSL証明書を保存する

HTTPSサーバーから提示された証明書を保存するためのLinuxコマンドラインの方法はありますか? curl/wget/opensslでSSL接続を確立し、HTTP応答のコンテンツではなく証明書を保存するという流れに沿ったもの。

私が探しているものと同等のGUIは、HTTPSサイトを参照し、ブラウザーの「セキュアサイト」アイコンをダブルクリックして、証明書をエクスポートすることです。ここでの目標は、非対話的に行うことです。

ありがとう、ジム

30
Jim

何かのようなもの:

openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem

これは、fetchmailでSSL対応のIMAPまたはPOP3サーバーの証明書を取得するために使用するものです(ただし、明らかにポート443を使用していません)

( "冗長" -servernameパラメータは、opensslにSNIサポート付きの要求を実行させるために必要です。)

43
Cry Havok

から http://www.madboa.com/geek/openssl/#cert-retrieve

#!/bin/sh
#
# usage: retrieve-cert.sh remote.Host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
9
Matt Simmons