PEM biçiminde bir SSL CRT dosyası var. Sertifikadan ortak adı (CN) komut satırından almamın bir yolu var mı?
PEM biçiminde bir SSL CRT dosyası var. Sertifikadan ortak adı (CN) komut satırından almamın bir yolu var mı?
Yanıtlar:
Eğer openssl
yüklediyseniz çalıştırabilirsiniz:
openssl x509 -noout -subject -in server.pem
openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
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'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)
sed
Sertifika ö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/\/.*$//'
.
openssl x509 -noout -subject -nameopt multiline | grep commonName
| sed -n 's/ *commonName *= //p'
certtool -i < whatever.pem | egrep "^\s+Subject:"
<
Argüman olarak kullanmadan , dosyayı standart girişe yönlendiren dikkat edin . Sans egrep
bu 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
certtool
gnutls'ın bir parçası, eğer kurulmamışsa, sadece ara. GnuTLS, IMO’dan OpenSSL’den biraz daha hoş.
gnutls-certtool
yüklenenleri kullanmak zorunda kaldımbrew install gnutls
gnutls-bin
Yukarıdaki cevabı buldum ve çok faydalı buldum, fakat aynı zamanda certtool
komut 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 certtool
uygun komutu gibi görünen bu yüzden, "d"
"ekran." Yani, bu komut:
certtool d myfoo.crt
(Benim durumumda dosya uzantısı sadece olur .crt
değil .pem
bu 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 openssl
bu durumda.
certtool
O zamanki operatörleri ( -
veya --
) ve man certtool
v. 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: