SSL sertifikasından ortak ad (CN) alıyor musunuz?


64

PEM biçiminde bir SSL CRT dosyası var. Sertifikadan ortak adı (CN) komut satırından almamın bir yolu var mı?


3
Bununla birlikte, çoklu alan sertifikalarında CN'nin hepsini içermediğine dikkat edin.
Torsten Bronger

Yanıtlar:


90

Eğer opensslyüklediyseniz çalıştırabilirsiniz:

openssl x509 -noout -subject -in server.pem

5
openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
CN'yi

1
@MatthewBuckett'in söylediklerini değiştirdim sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'ve CN'den sonra ek ayrıntılar aldığım için tam olarak etki alanını elde ettim. Geçerli bir CN için süper katı bir eşleşme değil ama çoğu durumda işe yarıyor, daha gevşeyebilir ve [a-zA-Z0-9\.\-]onunla yer değiştirebilirsiniz [^/]ama her zaman işe yarayacağından emin değilim.
flungo

1
\*@Flungo'nun joker karakter alanlarını desteklemek için kullandığı şeye ekle : sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/' ( [^/]benim durumumda çalışıyor olsa da)
bryn

1
sedSertifika örneği OU (organizationalUnit) için, ortak ad (CN) sonra belirlenen göreli ayırt edici adları (RDN) vardır veya C (Ülke) eğer yukarıda önerilen komutlar çalışmaz. Tek yönlü ilave bir olurdu gibi durumlarda karşılamak üzere sed: openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'.
Ohad Schneider

6
openssl x509 -noout -subject -nameopt multiline | grep commonName| sed -n 's/ *commonName *= //p'
CN'yi Konuyla

7
certtool -i < whatever.pem | egrep "^\s+Subject:"

<Argüman olarak kullanmadan , dosyayı standart girişe yönlendiren dikkat edin . Sans egrepbu bütün sertifikayı basacaktır, ama CN olduğu Subject:(a CN değeri de var dikkat tepesine yakın alanda Issuer:alanına).

X.509 Certificate Information:
    Version: 3
    Serial Number (hex): 01
    Issuer: [...] CN=unixandlinux.ex  <- Not this one.
    Validity: ...
    Subject: CN=goldilocks

certtoolgnutls'ın bir parçası, eğer kurulmamışsa, sadece ara. GnuTLS, IMO’dan OpenSSL’den biraz daha hoş.


2
İyi cevap, +1. Mac OS X için, gnutls-certtoolyüklenenleri kullanmak zorunda kaldımbrew install gnutls
Mike D

debian yüklemesindegnutls-bin
rubo77

1

Yukarıdaki cevabı buldum ve çok faydalı buldum, fakat aynı zamanda certtoolkomut sözdiziminin (bugün Ubuntu Linux'ta) çıktıda olduğu gibi goldilocks tarafından tarif edilenden belirgin şekilde farklı olduğunu buldum . Bu mükemmel cevabı "bugünün versiyonu" olanlarla güncellemenin en iyi yolu olduğunu düşündüm.

"i"Seçeneği (şimdi?) Göre, "ithalat" anlamına gelir man certtooluygun komutu gibi görünen bu yüzden, "d""ekran." Yani, bu komut:

certtool d myfoo.crt

(Benim durumumda dosya uzantısı sadece olur .crtdeğil .pembu alakalı değildir ....)

... ilgili kısımda şöyle görünen çıktı üretir:

Common Name     : Foobar

Kuşkusuz, goldilocks haklıydı: certtoolçıkışı çok daha çalışmak daha kolay kolay opensslbu durumda.


1
Tamamen farklı yazılım parçaları hakkında konuştuğumuzdan şüpheleniyorum. certtoolO zamanki operatörleri ( -veya --) ve man certtoolv. 3.5.8 (debian), 3.5.16 (fedora, yukarı akış istikrarlı dalında bundan sonraki tek versiyon olan) seçeneklerin sürdüğü bir versiyonunu hiç görmedim . bir ay önce), GnuTLS en çevrimiçi dokümantasyon ve aslında, Ubuntu 17.10 için çevrimiçi adam sayfası geçerli debian olarak (aynı sürüm) kastetmektedir:
goldilocks

: "-i, --certificate-info, verilen sertifikada bilgi yazdır" oysa "-d" olduğunu "--debug". Çok ilginç. O_o?
goldilocks

-1

Kullandım: openssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}'ekle | sed -e 's/^[ \t]*//'Beyaz boşlukla yaşayamıyorsanız

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.