SSL/TLS configuratie in BSD of Linux

Technische problemen? Hier kun jij jouw vragen stellen!
Forumregels
Check eerst onze helpsectie (https://www.antagonist.nl/help) voordat je hier een vraag stelt. Voor de meeste vragen hebben we uitgebreide handleidingen met uitleg.
Plaats reactie
mg78
Berichten: 3
Lid geworden op: 24 sep 2020, 19:08

SSL/TLS configuratie in BSD of Linux

Bericht door mg78 » 25 sep 2020, 15:37

Voor een thuisservertje dat draait op FreeBSD met de lighttpd webserver ben ik al avonden aan het proberen SSL signed en werkend te krijgen zodat bezoekers geen beveiligingsmelding krijgen.

Ik heb een Antagonist domeinnaam en de beschikking over software als openssl en certbot maar de online beschrijvingen die ik tot nu toe heb geprobeerd lijken niet te werken:
https://www.corl3ss.com/FreeBSD_Lighttp ... de_01.html
https://www.interserver.net/tips/kb/how ... -lighttpd/

Zijn er online instructies hiervoor bekend die zouden moeten werken met een Antagonist domeinnaam met DNS-ip ingesteld op mijn thuis-ip?

Gebruikersavatar
Joris de Leeuw
Antagonist staff
Berichten: 1244
Lid geworden op: 13 feb 2016, 20:15

Re: SSL/TLS configuratie in BSD of Linux

Bericht door Joris de Leeuw » 27 sep 2020, 11:20

Hallo mg78,

Graag denk ik met je mee!

In dit verhaal maakt het niet uit waar jouw domeinnaam is geregistreerd. Het enige wat nodig is dat je de DNS van je domeinnaam verwijst naar het IP-adres van jouw internetverbinding. Wat bij Antagonist dient te gebeuren is dus relatief simpel. DNS is namelijk iets wat je bij Antagonist kosteloos kan aanpassen.
Het lastige verhaal is in dit geval alles binnen jouw netwerk en thuisservertje goed gaat. Daarvoor kan je het beste de documentatie van je webserver raadplegen voor instructies en/of op een plek voor hobbyisten zoals het forum van Tweakers inspiratie op doen en om hulp vragen. Dit is dan ook onafhankelijk van Antagonist en specifiek voor jouw thuissituatie.

Concreet komt het op het volgende neer:
Stap 1. Verwijs de DNS bij ons van je domeinnaam naar het IP-adres van je internetverbinding.
Stap 2. Zorg er nu voor dat binnen jouw netwerk het verkeer op je thuisserver uitkomt. Waarschijnlijk dien je hiervoor een aanpassing te maken in je router/firewall.
Stap 3. Zorg ervoor dat je webserver aanvragen op jouw domeinnaam afhandelt, mocht je dat nog niet hebben gedaan.
Stap 4. Start nu certbot op en geef aan dat je een certificaat wil voor je domeinnaam.
Met vriendelijke groet,

Joris de Leeuw
Antagonist staff

mg78
Berichten: 3
Lid geworden op: 24 sep 2020, 19:08

Re: SSL/TLS configuratie in BSD of Linux

Bericht door mg78 » 27 sep 2020, 12:56

Joris de Leeuw schreef:
27 sep 2020, 11:20
Hallo mg78,

Graag denk ik met je mee!
...
Bedankt, het kan goed dat het aan de serverinstellingen ligt.
De server werkt op dit moment normaal maar zonder geldig certificaat. Portmapping van 80 en 443 wordt inderdaad door de modem geregeld via NAT settings.

Deze server draait op een Orange Pi bordje. Ik ga eenzelfde 2e systeem vanaf het begin installeren om uit te sluiten dat ik iets heb veranderd of overgeschreven waardoor het niet meer werkt, dus een update volgt nog...

mg78
Berichten: 3
Lid geworden op: 24 sep 2020, 19:08

Re: SSL/TLS configuratie in BSD of Linux

Bericht door mg78 » 28 sep 2020, 20:45

Volgens mij heb ik het probleem gevonden: mijn eigen modem doet alleen ipv4. Ik had de ipv6/AAAA verwijzingen in mijn Antagonist settings laten bestaan, waardoor de letsencrypt challenge niet werkt. Ik heb die records uitgezet en zie nu "congratulations" staan na de laatste certbot poging dus dat lijkt te werken.


Globaal de vereiste configuratie voor FreeBSD 12.1 met de lighttpd server:
(server installeren met opdracht pkg -y install lighttpd)

/usr/local/etc/lighttpd/lighttpd.conf:

Code: Selecteer alles

var.log_root    = "/var/log/lighttpd"
var.server_root = "/usr/local/www/lighttpd"
var.state_dir   = "/var/run"
var.home_dir    = "/var/run/lighttpd"
var.conf_dir    = "/usr/local/etc/lighttpd"

var.vhosts_dir  = server_root + "/vhosts"
var.cache_dir   = "/var/cache/lighttpd"
var.socket_dir  = home_dir + "/sockets"
include "modules.conf"
server.port = 80

# enable als de internetverbinding het ondersteunt
server.use-ipv6 = "disable"

server.username  = "www"
server.groupname = "www"

server.document-root = "/usr/local/www" + "/data"
server.pid-file = state_dir + "/lighttpd.pid"
server.errorlog             = log_root + "/error.log"
include "conf.d/access_log.conf"
include "conf.d/debug.conf"
server.event-handler = "freebsd-kqueue"
server.network-backend = "writev"
server.max-fds = 2048
server.stat-cache-engine = "simple"
server.max-connections = 1024

index-file.names += (
  "index.xhtml", "index.html", "index.htm", "default.htm", "index.php"                        
)

url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" )
include "conf.d/mime.conf"
include "conf.d/dirlisting.conf"
server.follow-symlink = "enable"
server.upload-dirs = ( "/var/tmp" )

$SERVER["socket"] == "192.168.2.200:443" {
  ssl.engine                  = "enable"
  ssl.pemfile                 = "/usr/local/etc/lighttpd/ssl/domein.com.pem"
  server.name                 = "domein.com"
  ssl.ca-file                = "/usr/local/etc/lighttpd/ssl/chain.pem"
}
/usr/local/etc/lighttpd/modules.conf:

Code: Selecteer alles

server.modules = (
  "mod_access",
  "mod_openssl",
)
Vervolgens moet het programma py37-certbot + dependencies geinstalleerd worden vanuit de FreeBSD ports om een letsencrypt certificaat te genereren. Wat ik hier gedaan heb is zoveel mogelijk dependencies "binary" installeren met de "pkg install" opdracht en uiteindelijk py37-cerbot vanuit de ports te compilen. (Daar is geen precompiled package voor). Als je alles van source gaat compileren duurt dat meer dan een dag op een ARM computer met SD-kaart als harddisk, en de SD-kaart levenduur wordt korter vanwege de duizenden afzonderlijke schrijfacties.

Code: Selecteer alles

certbot certonly --webroot -w /usr/local/www/data -d domein.com
En de key files op de juiste plaats zetten:

Code: Selecteer alles

mkdir -p /usr/local/etc/lighttpd/ssl
cat /usr/local/etc/letsencrypt/live/domein.com/cert.pem /usr/local/etc/letsencrypt/live/domein.com/privkey.pem > /usr/local/etc/lighttpd/ssl/web.pem
cp /usr/local/etc/letsencrypt/live/domein.com/chain.pem /usr/local/etc/lighttpd/ssl
lighttpd server (her)starten: killall lighttpd && service lighttpd onestart

Plaats reactie