Zertifikat
Version vom 23. September 2015, 08:48 Uhr von Hamatoma (Diskussion | Beiträge)
Dateitypen
- Encodings (also used as extensions)
- .DER = The DER extension is used for binary DER encoded certificates. These files may also bear the CER or the CRT extension.
- .PEM = The PEM extension is used for different types of X.509v3 files which contain ASCII (Base64) armored data prefixed with a “—– BEGIN …” line.
- Extensions:
- .CRT = The CRT extension is used for certificates. The certificates may be encoded as binary DER or as ASCII PEM. The CER and CRT extensions are nearly synonymous. Most common among *nix systems
- .CER = alternate form of .crt (Microsoft Convention) You can use MS to convert .crt to .cer (.both DER encoded .cer, or base64[PEM] encoded .cer) The .cer file extension is also recognized by IE as a command to run a MS cryptoAPI command (specifically rundll32.exe cryptext.dll,CryptExtOpenCER) which displays a dialogue for importing and/or viewing certificate contents.
- KEY = The KEY extension is used both for public and private PKCS#8 keys. The keys may be encoded as binary DER or as ASCII PEM.
Version 4
Verzeichnis erstellen
CA_DIR=/home/ca mkdir -p $CA_DIR ; cd $CA_DIR mkdir {certsdb,certreqs,crl,private,newcerts} chmod 700 private touch index.txt cp /etc/ssl/openssl.cnf . $EDITOR openssl.cnf diff /etc/ssl/openssl.cnf openssl.cnf
< dir = ./demoCA # Where everything is kept > dir = /home/ca # Where everything is kept < default_days = 365 # how long to certify for > default_days = 730 # how long to certify for < countryName_default = AU > countryName_default = DE < stateOrProvinceName_default = Some-State > stateOrProvinceName_default = Bavaria > localityName_default = Munich < 0.organizationName_default = Internet Widgits Pty Ltd > 0.organizationName_default = e-motional-experience.de > commonName_default = e-motional-experience.de > emailAddress_default = hamatoma@gmx.de
CA generieren
ROOT_CA=rootCA VALID_DAYS=1000 # create a password protected key: openssl genrsa -des3 -out $ROOT_CA.key 4096 # self sign the certificate: openssl req -x509 -new -nodes -key $ROOT_CA.key -days $VALID_DAYS -out $ROOT_CA.pem -config ./openssl.cnf
Zertifikat erstellen
CERT=vmd9593 # Schlüssel generieren, kein Passwort: openssl genrsa -out $CERT.key 2048 # Zertifikatsanfrage generieren: CN (Common Name) evt. IP-Adresse openssl req -new -key $CERT.key -out $CERT.csr -sha512 -config ./openssl.cnf <pre>IP=79.143.188.145 AT='@' FN=${CERT}.extensions echo >$FN "[ ${CERT}_http ]" echo >>$FN "nsFN_CERTType = server" echo >>$FN "keyUsage = digitalSignature,nonRepudiation,keyEncipherment" echo >>$FN "extendedKeyUsage = serverAuth" echo >>$FN "subjectKeyIdentifier = hash" echo >>$FN "authorityKeyIdentifier = keyid,issuer" echo >>$FN "subjectAltName = $AT${CERT}_http_subject" echo >>$FN "[ ${CERT}_http_subject ]" echo >>$FN "IP.1 = $IP" echo >>$FN "IP.2 = 127.0.0.1" echo >>$FN "DNS.1 = f-r-e-i.de" echo >>$FN "DNS.2 = www.f-r-e-i.de" ... # Signieren: openssl x509 -req -days $VALID_DAYS -in ${CERT}.csr -signkey ${ROOT_CA}.key \ -out ${CERT}.crt -extfile $FN -extensions ${CERT}_http
Root-Zertifikat importieren
Mozilla Firefox / Thunderbird
Mozilla Firefox verwaltet Zertifikate selbst. Ein neues Zertifikat wird importiert unter „Einstellungen => Erweitert => Zertifikate => Zertifikate anzeigen => Zertifizierungsstellen => Importieren“. Wählt die Datei „ca-root.pem“ aus. „Wählt die Option „Dieser CA vertrauen, um Websites zu identifizieren“.
Chromium / Google Chrome
„Einstellungen“ => „Erweiterte Einstellungen anzeigen“ (unten) => „HTTPS/SSL“ => „Zertifikate verwalten“ => „Zertifizierungsstellen“ => „Importieren“ => „ca-root-pem“ auswählen => „Diesem Zertifikat zur Identifizierung von Websites vertrauen“
Debian
NAME=hm_root sudo cp $ROOT_CA.pem /usr/share/ca-certificates/$NAME.crt sudo dpkg-reconfigure ca-certificates
Version 3
CA generieren
FN_CA=hm_ca FN_CERT=vmd9593 # key generieren: openssl genrsa -out $FN_CA.key 2048 # Generate a CSR (FN_CERTificate Signing Request) openssl req -new -key $FN_CA.key -out $FN_CA.csr # Remove Passphrase from Key cp $FN_CA.key $FN_CA.key.org openssl rsa -in $FN_CA.key.org -out $FN_CA.key
Zertifikat erstellen
IP=79.143.188.145 AT='@' FN=${FN_CERT}_extensions echo >$FN "[ ${FN_CERT}_http ]" echo >>$FN "nsFN_CERTType = server" echo >>$FN "keyUsage = digitalSignature,nonRepudiation,keyEncipherment" echo >>$FN "extendedKeyUsage = serverAuth" echo >>$FN "subjectKeyIdentifier = hash" echo >>$FN "authorityKeyIdentifier = keyid,issuer" echo >>$FN "subjectAltName = $AT${FN_CERT}_http_subject" echo >>$FN "[ ${FN_CERT}_http_subject ]" echo >>$FN "IP.1 = $IP" echo >>$FN "IP.2 = 127.0.0.1" echo >>$FN "DNS.1 = f-r-e-i.de" echo >>$FN "DNS.2 = www.f-r-e-i.de" ... openssl x509 -req -days 730 -in ${FN_CA}.csr -signkey ${FN_CA}.key \ -out ${FN_CERT}.crt -extfile $FN -extensions ${FN_CERT}_http
Version 2
Erstellen CA
CA_DIR=/home/ca mkdir -p $CA_DIR ; cd $CA_DIR mkdir {certsdb,certreqs,crl,private,newcerts} chmod 700 private touch index.txt cp /etc/ssl/openssl.cnf . $EDITOR openssl.cnf diff /etc/ssl/openssl.cnf openssl.cnf
< dir = ./demoCA # Where everything is kept > dir = /home/ca # Where everything is kept < default_days = 365 # how long to certify for > default_days = 730 # how long to certify for < countryName_default = AU > countryName_default = DE < stateOrProvinceName_default = Some-State > stateOrProvinceName_default = Bavaria > localityName_default = Munich < 0.organizationName_default = Internet Widgits Pty Ltd > 0.organizationName_default = e-motional-experience.de > commonName_default = e-motional-experience.de > emailAddress_default = hamatoma@gmx.de
Erstellen CA
# no challenge password openssl req -new -newkey rsa:2048 -keyout private/cakey.pem -out careq.pem -config ./openssl.cnf openssl ca -create_serial -out cacert.pem -days 365 -keyfile private/cakey.pem -selfsign \ -extensions v3_ca_has_san -config ./openssl.cnf -infiles careq.pem
Version 1
Erstellen
openssl req -new -x509 -newkey rsa:2048 -keyout nginx.key -out nginx.pem -days 3650
Mit Signierung
FN_CA=dockerCA FN_CERT=hamatoma.de cd /etc/ssl test -d ca || mkdir ca cd ca openssl genrsa -out $FN_CA.key 2048 openssl req -x509 -new -nodes -key $FN_CA.key -days 3650 -out $FN_CA.crt openssl genrsa -out $FN_CERT.key 2048 # kein Passwort vergeben! openssl req -new -key $FN_CERT.key -out $FN_CERT.csr echo "subjectAltName = IP:212.144.248.3" > extfile.cnf openssl x509 -req -in $FN_CERT.csr -CA $FN_CA.crt -CAkey $FN_CA.key -CAcreateserial -out $FN_CERT.crt -days 3650 -extfile extfile.cnf cp $FN_CERT.crt ../certs cp $FN_CERT.key ../private
Passwort entfernen
openssl rsa -in nginx.key -out nginx.key
- Es wird einmal das Passwort abgefragt