UCC / SAN SSL証明書のドメインのリスト


15

SAN / UCC SSL証明書のすべてのドメインをリストする方法はありますか(理想的にはlinux / os xのコマンドラインを使用)?

ブラウザがデータを抽出できるため、データを抽出する方法が必要です。残念ながら、リストは表示できますが、カットアンドペーストできません。

回答:


25

openssl x509 -text < foo.crt トリックを行う必要があります。


3
私は別のサーバーのためにそれをやっていたので、後世のために、これは、私が使用した完全なコマンドです:openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text
ヨルダンライター

3
清浄空間を取得するには、grepのを通してそれを渡すことができますドメインのリストを区切りなどのようにsedをopenssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
ジェフリー・

下にスクロールしてください:panticz.deの回答の方が優れています;-)
lucaferrario

9

このコマンドでドメインをリストできます(Linuxでテスト済み):

cat cert.pem | openssl x509 -text | grep DNS

これは、受け入れられた回答よりも優れた出力を提供します。
VaTo

ええ、これは代わりに受け入れられた答えでなければなりません。
カル

1

SAN をたいだけなら、それgrep DNS:は明らかな解決策です。

さらに処理するためのよりクリーンなリストが必要な場合は、このPerl正規表現を使用して名前だけを抽出できます。 @names=/\sDNS:([^\s,]+)/g

例えば:

true | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\bDNS:([^\s,]+)/g; print join("\n", sort @names);'

これはこれを出力します:

example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org

だからあなたはそれをwhile read name; do echo "processing $name ..."; done等にパイプすることができます

または、1行のコンマ区切りリストの場合はjoin("\n",join(",",

-0777perl のスイッチは、行ごとではなく入力全体を一度に読み取ります)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.