UCC / SAN SSL Sertifikasındaki alanları listeleme


15

SAN / UCC SSL Sertifikası'ndaki tüm etki alanlarını listelemenin bir yolu var mı (ideal olarak linux / os x üzerinde komut satırı kullanmak)?

Açıkçası, verileri elde etmenin bir yolu olmalı, çünkü tarayıcılar bunu yapabilir. Maalesef listeyi görebiliyorum ancak kesip yapıştıramıyorum.

Yanıtlar:


25

openssl x509 -text < foo.crt hile yapmalı.


3
Posterity için, bu başka bir sunucu için yaptığımdan beri kullandığım tam komut:openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text
Jordan Reiter

3
Alanların temiz bir alanla sınırlandırılmış listesini almak için grep ve sed'den geçebilirsinizopenssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
Geoffrey

Lütfen aşağı kaydırın: panticz.de 'nin cevabı daha iyidir ;-)
lucaferrario

10

Etki alanlarını bu komutla listeleyebilirsiniz (linux üzerinde test edilmiştir):

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

Bu, kabul edilen cevaptan daha iyi sonuç verir.
VaTo

Evet, bunun yerine kabul edilen cevap olmalı.
Kal

1

Sadece SAN'ları görmek istiyorsanız grep DNS:, açık bir çözümdür.

Daha fazla işlemek için daha temiz bir listeye sahip olmak istiyorsanız, bu Perl regex'ini yalnızca adları çıkarmak için kullanabilirsiniz: @names=/\sDNS:([^\s,]+)/g

Örneğin:

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);'

Hangi çıktı:

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

Böylece boru while read name; do echo "processing $name ..."; donevb.

Ya da bir hat üzerinde virgülle ayrılmış listesi için, yerine join("\n",ilejoin(",",

( -0777Perl anahtarı, satır satır yerine tüm girdiyi aynı anda okumasını sağlar)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.