Zeile 18: |
Zeile 18: |
| cp dehydrated/dehydrated /usr/local/sbin/dehydrated | | cp dehydrated/dehydrated /usr/local/sbin/dehydrated |
| mkdir -p /etc/dehydrated | | mkdir -p /etc/dehydrated |
| + | </source> |
| + | |
| + | ===Apache konfigurieren=== |
| + | |
| + | '''/etc/apache2/sites-available/letsencrypt.conf''':Apache muss so konfiguriert werden, dass $domain/.well-known/acme-challenge/ auf das richtige Verzeichnis zeigt. Somit kann die Acme challenge erfolgreich durchgeführt werden. |
| + | <source lang=bash> |
| + | Alias /.well-known/acme-challenge/ /var/www/dehydrated/ |
| + | <Directory "/var/www/dehydrated/"> |
| + | Options None |
| + | AllowOverride None |
| + | Require all granted |
| + | ForceType text/plain |
| + | Options -Indexes |
| + | </Directory> |
| + | </source> |
| + | Dann noch die config aktivieren und apache neu laden: |
| + | <source lang=bash> |
| + | a2enconf letsencrypt |
| + | apachectl restart |
| </source> | | </source> |
| | | |
Zeile 310: |
Zeile 329: |
| ==cert_client== | | ==cert_client== |
| | | |
− | ==SSH konfigurieren== | + | ===apache reverse proxy konfigurieren=== |
| | | |
− | '''/root/.ssh/config''':Cron läuft als root, deswegen brauchen wir die config hier. $Hostname gegen den cert_client ersetzen. | + | '''/etc/apache2/conf-available/letsencrypt.conf''':Da die challenges von letsencrypt bei dem cert_client enden (http://$domain/.well-known/acme-challenge/), aber auf dem cert_master terminiert werden sollen, richten wir einen reverse proxy ein. |
| + | <source lang=bash> |
| + | SSLProxyEngine On |
| + | ProxyPassMatch ^/(.well-known/acme-challenge/.*) https://freifunk-mwu.de:443/$1 |
| + | ProxyPassReverse / https://freifunk-mwu.de:443/ |
| + | </source> |
| + | Jetzt noch config aktivieren und apache neustarten: |
| + | <source lang=bash> |
| + | a2enconf letsencrypt |
| + | apachectl restart |
| + | </source> |
| + | Es ist noch notwendig ein paar weitere Apache module zu aktivieren <source lang=bash inline>a2enmod $mod</source>, welche ist der Fehlermeldung beim neu starten zu entnehmen. |
| + | |
| + | ===SSH konfigurieren=== |
| + | |
| + | '''/root/.ssh/config''':Cron läuft als root, deswegen brauchen wir die config hier. $Hostname gegen den cert_client ersetzen, $cert_master gegen hostname cert_master. |
| <source lang=bash> | | <source lang=bash> |
| Host $cert_master | | Host $cert_master |
Zeile 324: |
Zeile 358: |
| | | |
| <source lang=bash inline>sftp $cert_master</source> muss ohne Eingabe funktionieren. | | <source lang=bash inline>sftp $cert_master</source> muss ohne Eingabe funktionieren. |
| + | |
| + | ===Cron=== |
| + | '''/etc/cron.daily/ssl_certs''': Hier wird das Zertifikat des Hosts $cert_client abgerufen. Dann werden Permissions angepasst und Dienste neu gestartet. Andere Dienste erfordern hier Anpassung (z.B. mail). |
| + | <source lang=bash> |
| + | #!/bin/sh |
| + | |
| + | DOMAINS="$cert_client.freifunk-mwu.de" |
| + | |
| + | rm /etc/apache2/ssl/* -r |
| + | for DOMAIN in $DOMAINS; |
| + | do |
| + | mkdir -p /etc/apache2/ssl/$DOMAIN |
| + | sftp -q -r zuckerwatte:/$DOMAIN /etc/apache2/ssl/ > /dev/null |
| + | |
| + | chmod 0550 /etc/apache2/ssl/$DOMAIN |
| + | chmod 0440 /etc/apache2/ssl/$DOMAIN/* |
| + | done |
| + | |
| + | chown -R www-data.admin /etc/apache2/ssl/ |
| + | apache2ctl restart |
| + | </source> |