Linux/OpenSSL: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Thomas (Diskussion | Beiträge) |
||
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=Quelle= | =Self-signed Zertifikat= | ||
==Quelle== | |||
http://christopher.wojno.com/articles/2008/11/04/going-ssl-with-your-own-root-ca und http://christopher.wojno.com/articles/2008/11/08/creating-your-own-apache-ssl-certificate-signed-by-your-root-ca | http://christopher.wojno.com/articles/2008/11/04/going-ssl-with-your-own-root-ca und http://christopher.wojno.com/articles/2008/11/08/creating-your-own-apache-ssl-certificate-signed-by-your-root-ca | ||
=Vorbereitung= | ==Vorbereitung== | ||
mkdir /root/ca | mkdir /root/ca | ||
chmod 700 /root/ca | chmod 700 /root/ca | ||
Zeile 11: | Zeile 13: | ||
chmod 700 private | chmod 700 private | ||
=Root/CA-Zertifikat erstellen= | ==Root/CA-Zertifikat erstellen== | ||
cd /root/ca | cd /root/ca | ||
openssl genrsa -out private/cakey.pem -des3 2048 | openssl genrsa -out private/cakey.pem -des3 2048 | ||
Zeile 19: | Zeile 21: | ||
chmod 0660 serial.srl | chmod 0660 serial.srl | ||
=Server-Zertifikat erstellen (z.B. für Apache, Postfix, IMAP)= | ==Server-Zertifikat erstellen (z.B. für Apache, Postfix, IMAP)== | ||
cd /root/ca | cd /root/ca | ||
openssl genrsa -out www.pem 2048 | openssl genrsa -out www.pem 2048 | ||
Zeile 26: | Zeile 28: | ||
openssl x509 -req -days 3659 -in www.csr -CA certs/cacert.crt -CAkey private/cakey.pem -CAserial serial.srl -out www.crt | openssl x509 -req -days 3659 -in www.csr -CA certs/cacert.crt -CAkey private/cakey.pem -CAserial serial.srl -out www.crt | ||
=Server-Zertifikat in Apache einbinden= | ==Server-Zertifikat in Apache einbinden== | ||
cd /root/ca | cd /root/ca | ||
cp certs/cacert.crt /etc/apache2/ssl/ | cp certs/cacert.crt /etc/apache2/ssl/ | ||
Zeile 39: | Zeile 41: | ||
SSLCertificateChainFile /etc/apache2/ssl/cacert.crt | SSLCertificateChainFile /etc/apache2/ssl/cacert.crt | ||
=Server-Zertifikat in Postfix einbinden= | ==Server-Zertifikat in Postfix einbinden== | ||
cd /root/ca | cd /root/ca | ||
cp certs/cacert.crt /etc/postfix/ | cp certs/cacert.crt /etc/postfix/ | ||
Zeile 52: | Zeile 54: | ||
smtpd_tls_CAfile = /etc/postfix/cacert.crt | smtpd_tls_CAfile = /etc/postfix/cacert.crt | ||
=Server-Zertifikat in uw-imap einbinden= | ==Server-Zertifikat in uw-imap einbinden== | ||
cd /root/ca | cd /root/ca | ||
cat www.pem >/etc/ssl/certs/imapd.pem | cat www.pem >/etc/ssl/certs/imapd.pem | ||
cat www.crt >>/etc/ssl/certs/imapd.pem | cat www.crt >>/etc/ssl/certs/imapd.pem | ||
chmod 600 /etc/ssl/certs/imapd.pem | chmod 600 /etc/ssl/certs/imapd.pem | ||
=Echtes Domain-validiertes Zertifikat mit Zwischenzertifikat= | |||
==Zertifikat-Request erstellen== | |||
openssl req -new -nodes -sha256 -keyout name.key -out name.csr -newkey rsa:2048 | |||
Die Fragen beantworten: | |||
Country Name (2 letter code) [AU]:DE | |||
State or Province Name (full name) [Some-State]:Bundesland | |||
Locality Name (eg, city) []:Ort | |||
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private | |||
Organizational Unit Name (eg, section) []: | |||
Common Name (e.g. server FQDN or YOUR name) []:Domäne | |||
Email Address []:Mailadresse | |||
Kein Passwort eingeben. Mit dem '''name.csr''' online ein SSL-Zertifikat beantragen. | |||
==Zertifikat speichern== | |||
Nach der Erstellung bekommt man das Zertifikat und das Zwischenzertifikat normalerweise per E-Mail. Diese abspeichern unter: | |||
name.crt | |||
name.cabundle | |||
==Apache== | |||
'''name.key''', '''name.crt''' und '''name.cabundle''' kopieren nach '''/etc/apache2/ssl'''. | |||
'''/etc/apache2/vhosts.d/00_default_ssl_vhost.conf''': | |||
SSLCertificateFile /etc/apache2/ssl/name.crt | |||
SSLCertificateKeyFile /etc/apache2/ssl/name.key | |||
SSLCertificateChainFile /etc/apache2/ssl/name.cabundle | |||
==Postfix== | |||
cat name.crt name.cabundle >name.cer | |||
In der neuen Datei prüfen, dass '''BEGIN''' und '''END''' Markierungen jeweils in eigenen Zeilen sind. '''name.key''' und '''name.cer''' kopieren nach '''/etc/postfix'''. | |||
'''/etc/postfix/main.cf''': | |||
smtpd_tls_key_file = /etc/postfix/name.key | |||
smtpd_tls_cert_file = /etc/postfix/name.cer | |||
==VU+== | |||
cat name.crt name.cabundle >name.cer | |||
In der neuen Datei prüfen, dass '''BEGIN''' und '''END''' Markierungen jeweils in eigenen Zeilen sind. '''name.key''' und '''name.cer''' kopieren nach '''/etc/enigma2''' als '''key.pem''' und '''cert.pem'''. | |||
==uw-imap und Dovecot== | |||
cat name.key name.cer >imapd.pem | |||
'''imapd.pem''' kopieren nach '''/etc/ssl/certs'''. | |||
= Let's Encrypt = | |||
== Installieren == | |||
emerge app-crypt/certbot-apache | |||
== Zertifikat erstellen == | |||
Ohne Apache, Challenge über Port 80 von certbot: | |||
certbot certonly --standalone --preferred-challenges http -m meine@email.adresse -d domain.de | |||
== Postfix == | |||
'''/etc/postfix/main.cf:''' | |||
smtpd_tls_cert_file= /etc/letsencrypt/live/domain.de/fullchain.pem | |||
smtpd_tls_key_file= /etc/letsencrypt/live/domain.de/privkey.pem | |||
== Dovecot == | |||
'''/etc/dovecot/conf.d/10-ssl.conf:''' | |||
ssl = yes | |||
ssl_cert = </etc/letsencrypt/live/domain.de/fullchain.pem | |||
ssl_key = </etc/letsencrypt/live/domain.de/privkey.pem | |||
== Automatisch erneuern == | |||
'''/root/letsencrypt.sh:''' | |||
certbot renew | |||
postfix reload | |||
/etc/init.d/dovecot restart | |||
'''crontab -e''' | |||
@weekly /root/letsencrypt.sh | |||
= Verifizieren = | |||
== Webserver == | |||
openssl s_client -showcerts -connect server.de:443 -servername server.de | openssl x509 -noout -dates | |||
== SMTP == | |||
openssl s_client -starttls smtp -showcerts -connect server.de:587 | openssl x509 -noout -dates | |||
== IMAP == | |||
openssl s_client -showcerts -connect server.de:993 -servername server.de | openssl x509 -noout -dates |
Aktuelle Version vom 9. Juni 2024, 07:11 Uhr
Self-signed Zertifikat
Quelle
http://christopher.wojno.com/articles/2008/11/04/going-ssl-with-your-own-root-ca und http://christopher.wojno.com/articles/2008/11/08/creating-your-own-apache-ssl-certificate-signed-by-your-root-ca
Vorbereitung
mkdir /root/ca chmod 700 /root/ca cd /root/ca mkdir certs chmod 700 certs mkdir private chmod 700 private
Root/CA-Zertifikat erstellen
cd /root/ca openssl genrsa -out private/cakey.pem -des3 2048 openssl req -new -x509 -key private/cakey.pem -out certs/cacert.crt -days 3600
Im Common Name (CN) Feld keine Domäne eingeben, sondern z.B. <MeinName> CA Root.
echo "01" > serial.srl chmod 0660 serial.srl
Server-Zertifikat erstellen (z.B. für Apache, Postfix, IMAP)
cd /root/ca openssl genrsa -out www.pem 2048 openssl req -new -sha1 -out www.csr -key www.pem
Im Common Name (CN) Feld die Domäne eingeben.
openssl x509 -req -days 3659 -in www.csr -CA certs/cacert.crt -CAkey private/cakey.pem -CAserial serial.srl -out www.crt
Server-Zertifikat in Apache einbinden
cd /root/ca cp certs/cacert.crt /etc/apache2/ssl/ chmod 600 /etc/apache2/ssl/cacert.crt cp www.crt /etc/apache2/ssl/ chmod 600 /etc/apache2/ssl/www.crt cp www.pem /etc/apache2/ssl/ chmod 600 /etc/apache2/ssl/www.pem
/etc/apache2/vhosts.d/00_default_ssl_vhost.conf:
SSLCertificateFile /etc/apache2/ssl/www.crt SSLCertificateKeyFile /etc/apache2/ssl/www.pem SSLCertificateChainFile /etc/apache2/ssl/cacert.crt
Server-Zertifikat in Postfix einbinden
cd /root/ca cp certs/cacert.crt /etc/postfix/ chmod 600 /etc/postfix/cacert.crt cp www.crt /etc/postfix/ chmod 600 /etc/postfix/www.crt cp www.pem /etc/postfix/ chmod 600 /etc/postfix/www.pem
/etc/postfix/main.cf:
smtpd_tls_key_file = /etc/postfix/www.pem smtpd_tls_cert_file = /etc/postfix/www.crt smtpd_tls_CAfile = /etc/postfix/cacert.crt
Server-Zertifikat in uw-imap einbinden
cd /root/ca cat www.pem >/etc/ssl/certs/imapd.pem cat www.crt >>/etc/ssl/certs/imapd.pem chmod 600 /etc/ssl/certs/imapd.pem
Echtes Domain-validiertes Zertifikat mit Zwischenzertifikat
Zertifikat-Request erstellen
openssl req -new -nodes -sha256 -keyout name.key -out name.csr -newkey rsa:2048
Die Fragen beantworten:
Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:Bundesland Locality Name (eg, city) []:Ort Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:Domäne Email Address []:Mailadresse
Kein Passwort eingeben. Mit dem name.csr online ein SSL-Zertifikat beantragen.
Zertifikat speichern
Nach der Erstellung bekommt man das Zertifikat und das Zwischenzertifikat normalerweise per E-Mail. Diese abspeichern unter:
name.crt name.cabundle
Apache
name.key, name.crt und name.cabundle kopieren nach /etc/apache2/ssl.
/etc/apache2/vhosts.d/00_default_ssl_vhost.conf:
SSLCertificateFile /etc/apache2/ssl/name.crt SSLCertificateKeyFile /etc/apache2/ssl/name.key SSLCertificateChainFile /etc/apache2/ssl/name.cabundle
Postfix
cat name.crt name.cabundle >name.cer
In der neuen Datei prüfen, dass BEGIN und END Markierungen jeweils in eigenen Zeilen sind. name.key und name.cer kopieren nach /etc/postfix.
/etc/postfix/main.cf:
smtpd_tls_key_file = /etc/postfix/name.key smtpd_tls_cert_file = /etc/postfix/name.cer
VU+
cat name.crt name.cabundle >name.cer
In der neuen Datei prüfen, dass BEGIN und END Markierungen jeweils in eigenen Zeilen sind. name.key und name.cer kopieren nach /etc/enigma2 als key.pem und cert.pem.
uw-imap und Dovecot
cat name.key name.cer >imapd.pem
imapd.pem kopieren nach /etc/ssl/certs.
Let's Encrypt
Installieren
emerge app-crypt/certbot-apache
Zertifikat erstellen
Ohne Apache, Challenge über Port 80 von certbot:
certbot certonly --standalone --preferred-challenges http -m meine@email.adresse -d domain.de
Postfix
/etc/postfix/main.cf:
smtpd_tls_cert_file= /etc/letsencrypt/live/domain.de/fullchain.pem smtpd_tls_key_file= /etc/letsencrypt/live/domain.de/privkey.pem
Dovecot
/etc/dovecot/conf.d/10-ssl.conf:
ssl = yes ssl_cert = </etc/letsencrypt/live/domain.de/fullchain.pem ssl_key = </etc/letsencrypt/live/domain.de/privkey.pem
Automatisch erneuern
/root/letsencrypt.sh:
certbot renew postfix reload /etc/init.d/dovecot restart
crontab -e
@weekly /root/letsencrypt.sh
Verifizieren
Webserver
openssl s_client -showcerts -connect server.de:443 -servername server.de | openssl x509 -noout -dates
SMTP
openssl s_client -starttls smtp -showcerts -connect server.de:587 | openssl x509 -noout -dates
IMAP
openssl s_client -showcerts -connect server.de:993 -servername server.de | openssl x509 -noout -dates