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"