GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von openssl, um das Zertifikat von einem Server abzurufen

Obwohl ich Aris Antwort zustimme (und sie positiv bewertet habe :), musste ich einen zusätzlichen Schritt tun, damit es mit Java unter Windows funktioniert (wo es bereitgestellt werden musste):

openssl s_client -showcerts -connect www.example.com:443 < /dev/null | openssl x509 -outform DER > derp.der

Vor dem Hinzufügen von openssl x509 -outform DER Konvertierung, erhielt ich eine Fehlermeldung von keytool unter Windows, die sich über das Format des Zertifikats beschwerte. Das Importieren der .der-Datei funktionierte einwandfrei.


Es stellt sich heraus, dass hier mehr Komplexität herrscht:Ich musste viel mehr Details angeben, um das ins Rollen zu bringen. Ich denke, es hat etwas mit der Tatsache zu tun, dass es sich um eine Verbindung handelt, die eine Client-Authentifizierung erfordert, und der Hankshake benötigte mehr Informationen, um mit der Phase fortzufahren, in der die Zertifikate abgelegt wurden.

Hier ist mein Arbeitsbefehl:

openssl s_client -connect host:port -key our_private_key.pem -showcerts \
                 -cert our_server-signed_cert.pem

Hoffentlich ist dies ein Schubs in die richtige Richtung für alle, die mehr Informationen gebrauchen könnten.


Ein Einzeiler zum Extrahieren des Zertifikats von einem Remote-Server im PEM-Format, diesmal mit sed :

openssl s_client -connect www.google.com:443 2>/dev/null </dev/null |  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

Mit SNI

Wenn der Remote-Server SNI verwendet (d. h. mehrere SSL-Hosts auf einer einzigen IP-Adresse gemeinsam nutzt), müssen Sie den richtigen Hostnamen senden, um das richtige Zertifikat zu erhalten.

openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null

Ohne SNI

Wenn der Remote-Server kein SNI verwendet, können Sie -servername überspringen Parameter:

openssl s_client -showcerts -connect www.example.com:443 </dev/null


Um die vollständigen Details des Zertifikats einer Site anzuzeigen, können Sie auch diese Befehlskette verwenden:

$ echo | \
    openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | \
    openssl x509 -text

Linux
  1. OpenCA-Fehler Zertifikat kann nicht aus der Datenbank geladen werden

  2. Verbinden Sie sich von Mac OS X über Terminal mit Linux

  3. Verbinden Sie sich von Windows aus mit PuTTY mit Linux

  4. Migrieren eines Linux-Servers über die Befehlszeile

  5. Wie erhalte ich die Anzahl der CPUs in Linux mit C?

So installieren Sie die neueste OpenSSL-Version von Source unter Linux

Lernen Sie Ihr System kennen (über die Befehlszeile)

So generieren Sie selbstsignierte SSL-Zertifikate mit OpenSSL

So erhalten Sie die beste Leistung vom Nginx-Server

RabbitMQ - Abrufen von Nachrichten aus einer Warteschlange mit Curl

Wie kann ich Protokollmeldungen vom LAMP-Server unter Ubuntu 10.04 erhalten?