Kostenlose SSL-Zertifikate installieren:
certbot - “Let’s Encrpt”¶
Immer mehr Browser warnen ihre Benutzer, wenn Sie keine SSL bzw. TLS-Verschlüsselte Version ihrer Webseiten anbieten.
Ein kostenloser Weg, das für eine https-Verbindung benötigte Zertifikat zu erhalten, ist das Projekt “Let’s encrypt”, dass durch Goolge, Apple und anderer Brachengrößen unterstützt und gesponsert wird.
Hier folgt nun eine Schritt-für-Schritt Anleitung, die unsere “Best-Practise” aus fast 2 Jahren Betriebserfahrung mit “Let’s Encrypt” einbezieht.
Bemerkung
Wenn Sie Intertech-Domainkunde sind können Sie mit einem Klick ein “Let’s Encrypt” Zertifikat zur ihrer Domain beantragen
Installation von certbot¶
CentOS 7¶
Ubuntu et al¶
cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
Konfiguration Webserver-Software¶
Alternative: apache-config¶
mkdir -p /var/www/certbot/.well-known/acme-challenge/
chown -R www-data:www-data /var/www/certbot/
vim /etc/apache2/conf-available/certbot.conf
Basis-Konfiguration für certbot anlegen:
/etc/apache2/conf-available/certbot.conf
:
Alias /.well-known/acme-challenge/ "/var/www/certbot/.well-known/acme-challenge/"
<Directory "/var/www/certbot/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Aktivieren der soeben erstellten Konfiguration:
a2enconf certbot
https-Redirect konfigurieren:
vi /etc/apache2/sites-available/0080-www.ihre-domain.de.conf
/etc/apache2/sites-available/0080-www.ihre-domain.de.conf
:
VirtualHost *:80>
ServerName www.ihre-domain.de
ServerAlias ihre-domain.de
ServerAdmin webmaster@ihre-domain.de
# RewriteEngine On
#
# RewriteCond %{HTTPS} off
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
DocumentRoot /var/www/www.ihre-domain.de/htdocs
ErrorLog /var/www/www.ihre-domain.de/logs/error.log
CustomLog /var/www/www.ihre-domain.de/logs/access.log combined
<Directory /var/www/www.ihre-domain.de/htdocs>
Options Indexes FollowSymLinks
Options -Indexes
AllowOverride None
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
https-vhost konfigurieren:
vim /etc/apache2/sites-available/0443-www.ihre-domain.de.conf
:
<VirtualHost *:443>
ServerName www.ihre-domain.de
ServerAlias ihre-domain.de
ServerAdmin webmaster@ihre-domain.de
DocumentRoot /var/www/www.ihre-domain.de/web
ErrorLog /var/www/www.ihre-domain.de/logs/error.log
CustomLog /var/www/www.ihre-domain.de/logs/access.log combined
SSLEngine on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
SSLCertificateFile /etc/letsencrypt/live/www.ihre-domain.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.ihre-domain.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.ihre-domain.de/chain.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
<Directory /var/www/www.ihre-domain.de/htdocs>
Options Indexes FollowSymLinks
Options -Indexes
AllowOverride None
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
Alternative: nginx-config¶
/etc/nginx/sites-enabled/www.ihre-domain.de
:
server {
listen 80;
server_name www.ihre-domain.de;
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
SELinux¶
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/certbot(/.*)?'
chcon -R -t httpd_sys_rw_content_t /var/www/certbot
Zertifikat erstellen¶
certbot-auto certonly --text --agree-tos --rsa-key-size 4096 --email hostmaster@ihre-domain.de -a webroot --webroot-path /var/www/certbot -d www.ihre-domain.de
AutoRenew der Zertifikate¶
root@server:~# crontab -e
47 2 * * 1 root /usr/local/bin/certbot-auto renew --renew-hook "service apache2 reload"
bzw. CentOS 7:
root@server:~# crontab -e
47 2 * * 1 root /usr/local/bin/certbot-auto renew --renew-hook "systemctl restart httpd"