Openssl Notes

From Bitbull Wiki
Jump to navigation Jump to search

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)
  1. Sever Cert
  2. ein oder mehrere intermediate certs
  3. 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]
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

  • 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