Certifikat via Lets Encrypt och Certbot
Först behövs snapd. Kommer per default med Ubuntu. Kontrollera installerade snap paket med snap list
Ta bort eventuella installation av certbot-auto och Certbot OS med sudo apt-get remove certbot
Installera certbot med sudo snap install --classic certbot
Förbered maskinen så att certbot-kommandot kan köras: sudo ln -s /snap/bin/certbot /usr/bin/certbot
Få ett certifikat och uppdatera apache-konf med sudo certbot --apache , alternativt få enbart ett certifikat och uppdatera apache manuellt med sudo certbot certonly --apache
När du har fått ett certifikat, gör en backup av apache-konfen och skapa en ny apache-konffil: sudo mv /etc/apache2/sites-available/bookstack.conf /etc/apache2/sites-available/bookstack.conf.old , sudo vim /etc/apache2/sites-available/bookstack.conf
Ändra relevanta värden och skapa en ny apache-konfiguration (vhost):
ServerName YOUR-DOMAIN-HERE
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
ServerName YOUR-DOMAIN-HERE
ServerAdmin webmaster@localhost
DocumentRoot /var/www/bookstack/public/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/YOUR-DOMAIN-HERE/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/YOUR-DOMAIN-HERE/privkey.pem
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Options -MultiViews -Indexes
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Aktivera apaches SSL modul: sudo a2enmod ssl
Verifiera om det finns några fel med sudo apachectl configtest och åtgärda vid behov
Redigera bookstacks .env-fil: sudo vim /var/www/bookstack/.env , ändra APP_URL till HTTPS istället för HTTP
Slutligen, starta om apache2! sudo systemctl restart apache2
Skapa certifikat manuellt
Först behövs ett värde för en dns-01 challenge:
sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.your-domain -d your-domain
Byt ut värden ovanför till det som önskas. Exemplet ber om ett wildcard. Man kommer behöva lägga till ett värde i sin externa DNS-zon för validering. Certifikaten hamnar sedan i en undermapp till /etc/letsencrypt/live/ .
Certifikat som har hämtats med certbot kan kontrolleras med sudo certbot certificates . Certifikat kan tas bort med sudo certbot delete .
Vid förnyelse hade jag problem med att få ut en ny TXT-sträng för DNS validering. Borttagande av certifikat och skapande med nedan syntax för att få TXT värdet fungerade:
sudo certbot certonly --manual --preferred-challenges=dns --email admin@jehrlander.net --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d jehrlander.net -d *.jehrlander.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for jehrlander.net and *.jehrlander.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.jehrlander.net.
with the following value:
xxxxxx
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -