Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
fortgeschrittene:apache-ssl [2012/03/23 08:52] ingo_wichmann [Zertifikat] |
fortgeschrittene:apache-ssl [2022/12/23 15:40] (aktuell) ingo_wichmann [CAA Record] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | Todo: https://ssl-config.mozilla.org/ benutzen | ||
| + | |||
| + | Todo: https://weakdh.org/sysadmin.html cipher list intregrieren (( | ||
| + | <file> | ||
| + | SSLProtocol all -SSLv2 -SSLv3 | ||
| + | |||
| + | SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA | ||
| + | |||
| + | SSLHonorCipherOrder on | ||
| + | </file> | ||
| + | )) | ||
| + | |||
| + | TODO: Let's encrypt von Apache selber machen lassen: https://httpd.apache.org/docs/2.4/mod/mod_md.html | ||
| + | |||
| ====== SSL / TLS für Apache ====== | ====== SSL / TLS für Apache ====== | ||
| ===== Vorraussetzungen ===== | ===== Vorraussetzungen ===== | ||
| * [[apache]] installiert | * [[apache]] installiert | ||
| - | * [[ssl| SSL Zertifikat]] erstellt | + | * [[ssl| SSL Zertifikat]] und Diffie-Hellman Parameter-Datei erstellt |
| - | * Korrektes [[bind|DNS]] | + | * Korrektes [[bind|DNS]] evtl. inkl. CAA Record |
| * Korrekte [[zeitserver|Uhrzeiten]] auf allen Rechnern | * Korrekte [[zeitserver|Uhrzeiten]] auf allen Rechnern | ||
| + | ==== CAA Record ==== | ||
| + | Falls auf der Domain CAA Einträge hinterlegt sind, entweder die aktuelle CA ergänzen oder die Einträge entfernen: | ||
| + | dig CAA linuxhotel.de @141.1.1.1 | ||
| + | |||
| + | für Wildcard Zertifikate: | ||
| + | <file> | ||
| + | example.com. 0 IN CAA 0 issue "cacert.org" | ||
| + | example.com. 0 IN CAA 0 issuewild "cacert.org" | ||
| + | example.com. 0 IN CAA 0 issue "letsencrypt.org" | ||
| + | example.com. 0 IN CAA 0 issuewild "letsencrypt.org" | ||
| + | </file> | ||
| ===== Zertifikate, Anträge und Schlüssel an die passenden Stellen kopieren ===== | ===== Zertifikate, Anträge und Schlüssel an die passenden Stellen kopieren ===== | ||
| - | ==== Debian 4.0 ==== | + | ==== Debian (ab 8.0) ==== |
| cd /etc/ssl | cd /etc/ssl | ||
| cp /root/server-ssl/servercert.pem certs/ | cp /root/server-ssl/servercert.pem certs/ | ||
| cp /root/server-ssl/serverkey.pem private/ | cp /root/server-ssl/serverkey.pem private/ | ||
| cp /home/ca/ca*/cacert.pem certs/ | cp /home/ca/ca*/cacert.pem certs/ | ||
| - | cp /home/ca/ca*/cacert.pem /var/www/apache2-default/cacert.crt | + | cp /home/ca/ca*/cacert.pem /var/www/html/cacert.crt |
| - | ==== SuSE 10.2 ==== | + | ==== SuSE (12.3) ==== |
| cd /etc/apache2 | cd /etc/apache2 | ||
| - | mkdir ssl.crt ssl.key ssl.csr | + | (( Bei älteren openSuSE Versionen: |
| + | mkdir ssl.crt ssl.key ssl.csr | ||
| + | )) | ||
| cp /root/server-ssl/servercert.pem ssl.crt/server.crt | cp /root/server-ssl/servercert.pem ssl.crt/server.crt | ||
| cp /root/server-ssl/serverkey.pem ssl.key/server.key | cp /root/server-ssl/serverkey.pem ssl.key/server.key | ||
| - | cp /root/server-ssl/serverreq.pem ssl.csr/server.csr | ||
| cp /home/ca/ca*/cacert.pem ssl.crt/ca.crt | cp /home/ca/ca*/cacert.pem ssl.crt/ca.crt | ||
| - | cp /home/ca/ca*/cacert.pem /var/www/apache2-default/cacert.crt | + | cp /home/ca/ca*/cacert.pem /srv/www/htdocs/cacert.crt |
| ==== Centos 5 ==== | ==== Centos 5 ==== | ||
| Zeile 28: | Zeile 54: | ||
| cp /root/server-ssl/serverkey.pem private/server.key | cp /root/server-ssl/serverkey.pem private/server.key | ||
| + | ===== mit OpenSSL s_server testen ====== | ||
| + | |||
| + | cd /etc/ssl | ||
| + | sudo -u www-data -g ssl openssl s_server -cert certs/servercert.pem -key private/serverkey.pem -www | ||
| + | firefox https://localhost:4433 | ||
| + | sudo -u www-data -g ssl openssl s_server -cert certs/servercert.pem -key private/serverkey.pem -WWW | ||
| + | firefox https://localhost:4433/certs/cacert.pem | ||
| + | |||
| + | TODO: noch nicht getestet: | ||
| + | sslscan notebook05.linuxhotel.de | ||
| + | testssl.sh notebook05.linuxhotel.de | ||
| + | |||
| + | |||
| + | Sicherheit überwachen lassen: https://siwecos.de/ | ||
| ===== Apache konfigurieren ===== | ===== Apache konfigurieren ===== | ||
| ==== SuSE ==== | ==== SuSE ==== | ||
| Zeile 33: | Zeile 73: | ||
| cp vhost-ssl.template notebook07.linuxhotel.de-ssl.conf | cp vhost-ssl.template notebook07.linuxhotel.de-ssl.conf | ||
| - | ''/etc/apache2/vhosts.d/notebook07.linuxhotel.de-ssl.conf'' : ( SuSE 10.2 ) | + | ''/etc/apache2/vhosts.d/notebook07.linuxhotel.de-ssl.conf'' : ( openSuSE 13.2 ) |
| <file> | <file> | ||
| <VirtualHost _default_:443> | <VirtualHost _default_:443> | ||
| Zeile 40: | Zeile 80: | ||
| SSLCertificateFile /etc/apache2/ssl.crt/server.crt | SSLCertificateFile /etc/apache2/ssl.crt/server.crt | ||
| SSLCertificateKeyFile /etc/apache2/ssl.key/server.key | SSLCertificateKeyFile /etc/apache2/ssl.key/server.key | ||
| + | SSLCaCertificateFile /etc/apache2/ssl.crt/ca.crt | ||
| + | SSLOpenSSLConfCmd DHParameters /etc/ssl/dhparams.pem | ||
| </VirtualHost> | </VirtualHost> | ||
| </file> | </file> | ||
| - | SSL Modul aktivieren: ( SuSE 10.2 ) | + | SSL Modul aktivieren: ( openSuSE 10.2 ) |
| a2enmod ssl | a2enmod ssl | ||
| - | SSL Flag aktivieren: ( SuSE 10.2 ) | + | Für SSLSessionCache (openSuSE 13.1) |
| + | a2enmod mod_socache_shmcb | ||
| + | |||
| + | SSL Flag aktivieren: ( SuSE open10.2 ) | ||
| a2enflag SSL | a2enflag SSL | ||
| Zeile 56: | Zeile 101: | ||
| /etc/init.d/apache2 restart | /etc/init.d/apache2 restart | ||
| - | ==== Debian (5.0) ==== | + | ==== Debian (ab 4.0) ==== |
| cd /etc/apache2/ | cd /etc/apache2/ | ||
| - | ''/etc/apache2/ports.conf'' : ( Debian 4.0 ) | + | ''/etc/apache2/ports.conf'' : ( Debian 4.0 - 7 ) |
| <file> | <file> | ||
| NameVirtualHost *:80 | NameVirtualHost *:80 | ||
| Zeile 71: | Zeile 116: | ||
| </IfModule> | </IfModule> | ||
| </file> | </file> | ||
| - | cp sites-available/default sites-available/default-ssl | + | ''/etc/apache2/ports.conf'' : ( Debian 8.0 ) |
| + | <file> | ||
| + | Listen 80 | ||
| - | ''/etc/apache2/sites-available/default-ssl'' : ( Debian 4.0 ) | + | <IfModule ssl_module> |
| + | Listen 443 | ||
| + | </IfModule> | ||
| + | </file> | ||
| + | |||
| + | ''/etc/apache2/sites-available/default-ssl.conf'' : ( Debian 8.0 ) | ||
| <file> | <file> | ||
| <VirtualHost _default_:443> | <VirtualHost _default_:443> | ||
| - | DocumentRoot "/var/www/notebook32.linuxhotel.de/html" | + | … |
| SSLEngine on | SSLEngine on | ||
| + | … | ||
| SSLCertificateFile /etc/ssl/certs/servercert.pem | SSLCertificateFile /etc/ssl/certs/servercert.pem | ||
| + | … | ||
| SSLCertificateKeyFile /etc/ssl/private/serverkey.pem | SSLCertificateKeyFile /etc/ssl/private/serverkey.pem | ||
| + | … | ||
| + | SSLCaCertificateFile /etc/ssl/ssl.crt/ca.crt | ||
| + | … | ||
| + | #Die folgende Zeile geht erst ab apache 2.4.8 und openssl 1.0.2: | ||
| + | #SSLOpenSSLConfCmd DHParameters /etc/ssl/dhparams.pem | ||
| + | |||
| </VirtualHost> | </VirtualHost> | ||
| </file> | </file> | ||
| Zeile 94: | Zeile 154: | ||
| Dienst neu starten: | Dienst neu starten: | ||
| - | /etc/init.d/apache2 restart | + | service apache2 restart |
| ==== CentOS 5 ==== | ==== CentOS 5 ==== | ||
| Zeile 102: | Zeile 162: | ||
| SSLCertificateFile /etc/pki/tls/certs/server.crt | SSLCertificateFile /etc/pki/tls/certs/server.crt | ||
| SSLCertificateKeyFile /etc/pki/tls/private/server.key | SSLCertificateKeyFile /etc/pki/tls/private/server.key | ||
| + | SSLCaCertificateFile /etc/ssl/ssl.crt/ca.crt | ||
| + | SSLOpenSSLConfCmd DHParameters /etc/ssl/dhparams.pem | ||
| </file> | </file> | ||
| Zeile 109: | Zeile 171: | ||
| apachectl configtest | apachectl configtest | ||
| apachectl -S | apachectl -S | ||
| + | |||
| + | ===== SSLCaCertificateFile ===== | ||
| + | Für "offizielle" Zertifikate braucht man zusätzlich noch einen Eintrag für die CA: ''SSLCaCertificateFile''. Und zusätzlich bis Apache Version 2.4.8 ''SSLCertificateChainFile''. Was gebraucht wird und was die beiden Dateien enthalten sollte in der Dokumentation des Herausgebers (der CA) des Zertifikats stehen. | ||
| + | (( | ||
| + | Mehr dazu: | ||
| + | * http://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile )) | ||
| + | * http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcacertificatefile | ||
| + | * http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatechainfile | ||
| + | )) | ||
| ===== Testen ===== | ===== Testen ===== | ||