Uzak sunucu SSL sertifikasını yerel olarak dosya olarak kaydetme


319

Uzak bir sunucunun SSL sertifikasını indirmem gerekiyor (HTTPS değil, ancak SSL anlaşmasının Google Chrome / IE / wget ile aynı olması ve tümünün kıvrılması, sertifika kontrolünde hata vermesi gerekiyor) ve sertifikayı dizüstü bilgisayarlarımda güvenilir olarak eklemem gerekiyor Windows ' Sertifika deposu, BT görevlilerimin bana CA sertifikası almalarını sağlayamadığımdan beri.

bu ofis iletişimi içindir, bu yüzden asıl müşteriyi sertifika almak için kullanamıyorum.

Bunu nasıl yaparım, Windows 7'ye ve Linux yığınıma ihtiyacım var, böylece herhangi bir araç / komut dosyası dili iyi.


Bir posta sunucusunun sertifikasını almak için bkz. Security.stackexchange.com/questions/70528/…
Bu Brezilyalı Adam

Büyük olasılıkla, tarayıcınız bunun için yerleşik bir özelliğe sahiptir - belki de "geliştirici araçları" altında.
nobar

Yanıtlar:


316

OpenSSL’e erişiminiz varsa, deneyin

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts

{HOSTNAME} ve {PORT} ile değerlerin ne olursa olsun değiştirilmesi.


2
Bir GUI açmak zorunda olmadığım için bu seçeneği tercih ediyorum ve SSH üzerinden sunucularımızdan yapabiliyorum.
12'de

2
Ayrıca, HTTP dışındaki protokoller için de çalışır.
mat

14
elec3647'nin çözümü , PEM'in bir kabuk boru hattında çıkarılmasını tamamen otomatik hale getirir.
phs

4
443, HTTPS için varsayılan bağlantı noktasıdır.
Flimm

4
-servernameSanal ana bilgisayar sertifikası almak için bu seçeneğe ihtiyacım vardı . gist.github.com/Artistan/5219484efb2fe51cd064175b3d0d5971
Artistan

240

Sertifikanın çekilmesi ve indirilmesi için hızlı bir yöntem, çıktının -showderts'den x509 ssl komutuna çıktığını, bu da her şeyi gereksiz yere soyan bir komuttur. Örneğin:

openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

Sertifikayı wget ile kullanmak için,

wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem

5
Bunu denedim (başka bir web sitesinde) - ancak tam bir zincir zinciri bekleniyordu: bu sadece zincirdeki ilkini geri getirdi gibi görünüyor - bu bekleniyor mu?
monojohnny

8
Bu benim için çalışmıyor: 27262 sertifikası yüklenemiyor: hata: 0906D06C: PEM yordamları: PEM_read_bio: başlangıç ​​satırı yok: /SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/pem/pem_lib.c: 648: BEKLENEN: TRUSTED BELGELENDİRME
Janusz

4
Monojohnny ile aynı fikirdeyim, bu sana tam zinciri vermez.
Michael Munsey

4
Geç ama @ monojohnny: openssl s_client -showcertsAlınan zincirdeki tüm cerları gösterir (eğer bağlantı başarılı olursa), ancak boru tesisatı openssl x509yalnızca birincisini alır ve gerisini atar. Bunların hepsini kullanmak yerine kullanmak ...| sed -n '/^-----BEGIN CERT/,/^-----END CERT/p'veya Her bir konseri ayrı bir dosyaya koymak ...| awk '/^-----BEGIN CERT/,/^-----END CERT/'için biraz daha karmaşık awkkullanabilirsiniz, bu sayede kullanımlarını kolaylaştıracak opensslve diğer araçlarla kullanabilirsiniz.
dave_thompson_085 11:16

3
wget kullanarak sadece bir index.html=>HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘index.html.1’
OZZIE

126

Dürüst olmak gerekirse, bunu daha önce hiç denemedim (hiç gerekmedi) ancak Firefox’ta daha önce denedim ve tasarruf için çalışıyor gibi görünüyor:

  1. Üstte SSL sertifikası simgesine / altta Asma Kilit simgesine tıklayın.
  2. Click View Certificate
  3. Tıklayın DetailsTab
  4. Hiyerarşiden hangi sertifikayı istediğinizi seçin [resimde daire içine alınmadı]
  5. Click Export

alt metin


Bilmek güzel - ama merakım için, neyi başarmaya çalıştığınızı biraz daha açıklayabilir misiniz? Bir SSL müşteri sertifikası vermek için hiç ihtiyacım olmadı ve neden gerçekten de ihtiyaç duymanız gerektiğini merak ediyorum ...
William Hilsum

1
Bu bir sunucu sertifikası, müşteri sertifikası değil. Bir istemciye özel anahtar ve sertifika vermenin ana nedeni, bir yedek tutmak veya başka bir tarayıcı veya bilgisayar kullanarak kimlik doğrulaması yapmaktır.
gbroiles

@gbroiles - soruyu okuyun, yanlış terminolojiyi kullandı ama bu onun problemini çözdü.
William Hilsum

1
ve ben sorunuzu cevapladım - neden birisi müşteri sertifikası almak istesin ki? "SSL müşteri sertifikası" terimi sizin teriminiz idi.
gbroiles

1
Bunu Chrome'da yapmanın bir yolu yok gibi görünüyor değil mi?
fatuhoku

50

Chrome tarayıcısını kullanarak sertifika verme

  1. SSL kullanarak web sitesine bağlanın ( https: // ne olursa olsun )

2. Kilit sembolüne tıklayın ve ardından Detaylar'a tıklayın

  1. Chrome sürüm 56'dan bu yana, aşağıdakileri yaparsınız: Üç Nokta Menüsüne -> Diğer Araçlar -> Geliştirici Araçları'na gidin, ardından Güvenlik Sekmesine tıklayın. Bu size Sertifikayı Görüntüle butonu ile Güvenlik Genel Bakış verecektir .

  2. Tıklayın Görünüm belgesi düğmesi.

    Kalıcı bir pencere açılacaktır. İki bölmesi vardır. En üstteki, site sertifikasının (sıradaki en son sertifika), ara sertifikaların ve kök sertifikanın (en üstteki) güven hiyerarşisini gösterir.

    İkinci, daha büyük bölmede, sertifikalardan birinin ayrıntılarını gösterir.

    Sıfır veya daha fazla ara sertifika olabilir.

    Kök sertifikanın altın kenarlıklı bir simgeye sahip olduğunu unutmayın. Diğerlerinin mavi kenarlıkları var.

    Aşağıdaki ekran görüntüsüne bakınız.

  3. Bir sertifikayı vermek için:

    1. İlk önce güven hiyerarşisindeki sertifika simgesine tıklayın.
    2. Sertifika, modelin ana bölümünde gösterilir.
    3. Modelin ana bölümündeki sertifikanın büyük simgesine tıklayın. Simgeyi masaüstüne sürükleyin . Chrome, sertifikayı masaüstünüze kopyalar.

görüntü tanımını buraya girin


1
Simgeyi bir metin düzenleyicisine sürüklemek zorunda kaldım, masaüstü benim için işe yaramadı.
Cory Klein

2
Windows'taki Chrome için, 'Sertifikayı görüntüle'yi tıkladıktan sonra modal Mac'ten farklıdır. Ayrıntılar sekmesini ve ardından Dosyaya Kopyala ... seçeneğini tıklayın. Daha sonra basit olan format ve dosya adını seçin.
PolyTekPatrick

1
Mac OS'ta Chrome v63 kullandığımda, sertifikayı sürüklemekten aldığım metin dosyası insan tarafından okunabilir durumdadır, ancak X.509 .crt gibi makinede okunabilir bir forma nasıl dönüştüreceğimi bulabildiğim herhangi bir yapılandırılmış biçimde değil.
Jim DeLaHunt

adres çubuğundan veya bu dev sekmesinden
açılırsa

1
Krom 72.0.3626.121 üzerinde artık çalışmıyor
A. D'Alfonso

20

Bu gbroiles' cevabı , ama cURL projesi olduğunu işaret etmek istediği birkaç fazla ayrıntı içeren bir sayfası vardır kullanmayla ilgili opensslUzak sunucunun SSL sertifikası kurtarmak için:

  • openssl s_client -connect {HOSTNAME}: {PORT} | tee günlük dosyası
  • Tip QUITve Enter / Return tuşuna basın.
  • Sertifika "BEGIN CERTIFICATE" ve "END CERTIFICATE" işaretleri arasında listelenir.
  • Sertifikadaki verileri görmek istiyorsanız, şunları kullanabilirsiniz:

    openssl x509 - bilgi için PEM - cert dosyası - metin - certdata

    burada certfileçıkarılan belgesi logfile. İçeri bak certdata.


Bu benim için çalıştı. Daha açık olmak gerekirse, logfile'i düzenledim ve BEGIN CERTIFICATE ve END CERTIFICATE dışında kalan her şeyi kırptım ve sonucu certfile.pem olarak kaydettim (uzantının gerekli olup olmadığından emin değilim).
Michael Welch

16

otomatikleştirilmiş

-ververname benim sunucumuzdaki sanal ana bilgisayardan doğru sertifikayı alabilmem için gerekliydi.

openssl s_client -showcerts -connect host.name.com:443 -servername host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > host.name.com.pem

masaüstü için bir sertifikaya da dönüştürebilirsiniz

openssl x509 -inform PEM -in host.name.com.pem -outform DER -out host.name.com.cer

Son bölüm,
kullandığınız mac anahtarlığı için kullanılan pencerelerden emin olmadığımdan emin olmalısınız.

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain host.name.com.cer



Bazı uygulamaların System ve SystemRoot anahtarlıklar ile ilgili sorun yaşadığını unutmayın (Golang, sana bakıyorum), bu nedenle bu seviyeler için güven oluşturup ayarladıktan sonra login.keychain, Keychain Accessuygulamayı kendi uygulamasıyla kendiniz de kopyalamak isteyebilirsiniz. System / SystemRoot'taki sertifikaya göz atabilir ve onu loginanahtarlığınıza sürükleyip bırakabilirsiniz .
dragon788

1
@ dragon788 - niyetim bu komut satırı ile otomatikleştirmek ve bu benim için çalışıyor. Login.keychain için CLI ile de bir çözüm bulursanız, lütfen burada paylaşın! Teşekkürler!
Artistan

Web’de okuduklarımdan sadece -dkomuttan çıkmanın sadece sistem anahtarlığı yerine kullanıcı anahtarlığına uygulanacağına inanıyorum .
dragon788

Ayrıca bir ara sertifika ekliyorsanız, doğru bir şekilde eklenebilmesi için kullanmak trustAsRootyerine kullanmak isteyeceksiniz trustRoot.
dragon788

2

Bu sadece sertifikaları içeren sonuçları verecektir.

echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "

0

Windows'ta ise çok daha kolay bir yol bulundu. Microsoft Edge'i denedi (krom öncesi) ve adres çubuğundaki kilidi tıklayın -> Sertifikayı görüntüle İletişim Kutusu, bir .crt dosyası olarak kaydedilen "Dosyaya Aktar" düğmesiyle açılır.

Edge için pek bir şey kullanmazdım ama bu çok kolaydı.

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.