Vi har tidigare skrivit om hur marknaden förändras av lättheten att få certifikat via AWS och Letsencrypt.
Under helgen för kristi flygare var jag uppe i min stuga utanför Ånge och satte upp en Raspberry Pi 2 med Z-wave controller för att kunna slå på mina element några dagar innan jag åker upp på vintern.
Jag använde mig av en image från http://razberry.z-wave.me vilket gjorde uppsättningen löjligt enkel. I installationen finns en webserver på port 8083 där man kan styra hela härligheten.
Som ni ser har jag båda elementen påslagna och en ena elementet har dragit 18,3 kWh.
Mitt problem är att jag inte alls litar på den inbyggda webservern och dessutom vill jag naturligtvis köra SSL/TLS så jag installerade nginx som proxy framför den inbyggda webservern. Första steget är att installera nginx:
Det tråkiga är att den senaste versionen via apt-get är 1.6.2 som släpptes 16 September 2014. Så här ser configurationen ut för nginx:
Ni ser att jag har satt ett lösenord för att de fula fiskarna på Internet inte ska kunna komma åt webservern på port 8083 och jag har också satt upp lite HTTP headrar för att skydda mig själv.
Men jag vill ju också ha SSL/TLS! Letsencrypt är nu igång på allvar och även om de inte stödjer nginx direkt så fungerar det utmärkt och det är vad jag tänkte visa här.
Först måste vi skapa tillgång till katalogen “/.well-known”, vilket är den katalog där letsencrypt lägger sin challenge. Det gör vi i nginx configuration genom att lägga en location under location:
Kom ihåg att ladda om nginx efter configurationen med
Lägg nu en fil i katalogen .well-known och använd curl -v för att komma åt den så att du vet att allting fungerar.
Letsencrypt-klienten installeras genom att checka ut den från github:
Nu ska vi hämta certifikat, vilket vi gör genoma att köra letsencrypt-klienten. Jag har satt root för websiten till /etc/nginx/stugan.allberg.se och den ska skickas med i kommandot till letsencrypt. Parametern -d anger den address som servern har på Internet och kan anges flera gånger, t.ex. med och utan www. I mitt fall har jag bara en adress, stugan.allberg.se.
I vissa fall vill man öka nyckellängden från 2048 till 4096. I mitt fall behöver jag inte det men jag gör det för att jag kan… :-)
Om den behöver det så hämtar klienten ned lite paket via apt-get och ett antal Python-paket. I mitt fall tog det sin lilla tid på mobilt bredband i kombination med att Raspberry 2 inte heller är den bästa kompileringsplattformen. :-)
När klienten lyckas fick jag fyra nya filer under /etc/letsencrypt/live/stugan.allberg.se (nåja, egentlige är det länkar till filer som ligger under /etc/letsencrypt/archive):
Innan jag konfigurerar nginx behöver jag skapa starka Diffie-Hellman nycklar. Första gången jag gjorde det på min Raspberry höll den på i en timme innan jag avbröt. Nästa gång tog det 10 minuter så räkna med att det kommer att ta tid men avbryt och försök igen om det tar för lång tid. Ett annat sätt är naturligtvis att köra det på en dator med lite mer kräm och sedan kopiera upp den till din Raspberry.
Nu ska vi konfigurera in allting i nginx. Nu har jag delat på http och https-server så att jag alltid kör en redirect på http till https, men inte om det är till ./well-known. Letsencrypt-klienten kommer nämligen att behöva köras regelbundet för att uppdatera certifikatet.
Och på det viset fick jag i alla fall A+ från SSLlabs.