Openssl Notes
Jump to navigation
Jump to search
Contents
1 Anzeigen/Prüfen
- Zertifikat komplett anzeigen
openssl x509 -noout -text -in <zertifikatsname.crt>
- den Herausgeber des Zertifikats anzeigen
openssl x509 -noout -issuer -in <zertifikatsname.crt>
- Für wen wurde das Zertifikat ausgestellt?
openssl x509 -noout -subject -in <zertifikatsname.crt>
- Für welchen Zeitraum ist das Zertifikat gültig?
openssl x509 -noout -dates -in <zertifikatsname.crt> echo QUIT | openssl s_client -connect host:443 2>/dev/null | sed -ne '/BEGIN CERT/,/END CERT/p' | openssl x509 -noout -text | grep -A2 Validity
- das obige kombiniert anzeigen
openssl x509 -noout -issuer -subject -dates -in <zertifikatsname.crt>
- den hash anzeigen
openssl x509 -noout -hash -in <zertifikatsname.crt>
- den MD5-Fingerprint anzeigen
openssl x509 -noout -fingerprint -in <zertifikatsname.crt>
- ein SSL-Zertifikat prüfen
openssl verify -CApath /etc/pki/tls/certs -verbose <zertifikatsname.crt>
- einen SSL-Port auf Zertifikate abfragen
openssl s_client -CApath /etc/pki/tls/certs -connect localhost:636 -showcerts openssl s_client -connect host:443
- Server Key von pfx extrahieren (PKCS#12)
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes #extract key openssl pkcs12 -in certname.pfx -nokeys -out cert.pem # export cert openssl rsa -in key.pem -out server.key # remove passphrase
2 Cert Infos abholen
- Cert chain aus einem Webservice holen
echo | openssl s_client -showcerts -connect www.google.ch:443
- um die cert chain richtig zu erstellen ist folgendes zu beachten
- Die Cert Chain wird in einem einzelnen UTF-8 File zusammen gestellt
- keine Winows Chars, benutze Notepad++ mit UTF8 und kopiere direkt aus Putty
- Die Chain muss wie folgt geordnet sein (openssl standard, wird von VMware Produkte gefordert)
- Sever Cert
- ein oder mehrere intermediate certs
- root CA cert
- Hier ein Beispiel
-----BEGIN CERTIFICATE----- MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT ... SERVER CERT ... b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT ... INTERMEDIATE CERT ... b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT ... ROOT CA CERT ... b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S -----END CERTIFICATE-----
3 Passphrase entfernen/ändern
- Passphrase für ein Keyfile entfernen
openssl rsa -in <zertifikatsname.key> -out <neueskeyfile.key>
- Passphrase für ein Keyfile ändern
openssl rsa -des3 -in <zertifikatsname.key> -out <neueskeyfile.key>
4 CSR erzeugen/anzeigen
- einen CSR + Keyfile erzeugen (für die Beantragung eines echten Zertifikats). Das <zertifikatsname.csr> sendet man danach an die zertifizierende Stelle, z.B. Thawte etc.
# 2048 Bit RSA-Key erzeugen openssl genrsa -out <zertifikatsname.key> 2048 # den CSR dazu erzeugen openssl req -new -key <zertifikatsname.key> -out <zertifikatsname.csr> # den Key mit einer Passphrase versehen openssl rsa -des3 -in <zertifikatsname.key> -out <zertifikatsname.key.sec>
- einen CSR (Zertifikatsrequest) anzeigen
openssl req -noout -text -in <request.csr>
4.1 CSR fuer Forman/Satellite erzeugen
mkdir /root/certificate chmod 700 /root/certificate cd /root/certificate CSR_C=CH CSR_ST=St_Gall CSR_L=Flawil CSR_O=BITBULL CSR_OU=IT CSR_FQDN=$(hostname -f) echo " [req] req_extensions = v3_req default_bits = 4096 prompt = no default_md = sha256 distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] C = $CSR_C ST = $CSR_ST L = $CSR_L O = $CSR_O OU = $CSR_OU CN = $CSR_FQDN [v3_req] basicConstraints = CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection subjectAltName = @alt_names [alt_names] DNS.1 = $CSR_FQDN " > $CSR_FQDN.cnf # generate csr and encrypted private key openssl req -new -out $CSR_FQDN.csr -keyout ${CSR_FQDN}_key.pem -config $CSR_FQDN.cnf # generate csr and plain private key openssl req -new -nodes -out $CSR_FQDN.csr -keyout ${CSR_FQDN}_key.pem -config $CSR_FQDN.cnf # verify csr openssl req -text -noout -verify -in $CSR_FQDN.csr
5 Zertifikate konvertieren
- PEM nach DER
openssl x509 -outform der -in certificate.pem -out certificate.der
- PEM nach P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
- PEM nach PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
- DER nach PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
- P7B nach PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
- P7B nach PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
- PFX nach PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes