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>
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
-----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]
default_bits = 4096
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[dn]
C = $CSR_C
ST = $CSR_ST
L = $CSR_L
O = $CSR_O
OU = $CSR_OU
CN = $CSR_FQDN
[req_ext]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
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
openssl x509 -outform der -in certificate.pem -out certificate.der
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
openssl x509 -inform der -in certificate.cer -out certificate.pem
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
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
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes