Skaffa ett SSL-certifikat från letsencrypt och kör https

  • Författare
  • Meddelande
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10982
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg18 feb 2016, 17:02

Så, jag borde naturligtvis köra https på dbwebb.se, här är minnesanteckningar för hur jag borde fixa det.

Installera klienten från letsencrypt.

Jag kör på GitHub-varianten och skapar certen till mina Apache virtuella hostar.
Kod: Markera allt
$ ./letsencrypt-auto --help
$ ./letsencrypt-auto --apache


Glöm inte enable ssl-modulen.
Kod: Markera allt
$ sudo a2enmod ssl


Så, nu får jag konfigurera min virtuella host.
/etc/apache2/sites-available/mikaelroos.conf
Kod: Markera allt
Define site mikaelroos.se

<VirtualHost *:80>
        ServerName ${site}
        ServerAlias do1.${site}
        ServerAlias do2.${site}

        Redirect "/" "https://${site}/"
</VirtualHost>

<VirtualHost *:443>
        Include /etc/apache2/sites-available/ssl.include

        ServerAdmin mos@mikaelroos.se
        ServerName ${site}
        ServerAlias local.${site}
        ServerAlias do1.${site}
        ServerAlias do2.${site}
        DocumentRoot /home/mos/htdocs/${site}/htdocs

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog  /home/mos/htdocs/${site}/error.log
        CustomLog /home/mos/htdocs/${site}/access.log combined
</VirtualHost>


SSL-grejerna ligger i en egen fil.
ssl.include
Kod: Markera allt
Include /etc/letsencrypt/options-ssl-apache.conf

SSLCertificateFile /etc/letsencrypt/live/local.mikaelroos.se/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/local.mikaelroos.se/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/local.mikaelroos.se/chain.pem


Magiskt. ladda om konfigurationen och håll tummarna, felsök om problem.
Kod: Markera allt
$ sudo service apache2 reload
# om problem
$ sudo apachectl configtest


Mer info om felsökning.

Dessutom vill jag nu att http://www.mikaelroos.se skall gå till mikaelroos.se, eller egentligen vill jag det skall se ut så här:
Kod: Markera allt
http://www.mikaelroos.se   > https://mikaelroos.se
https://www.mikaelroos.se  > https://mikaelroos.se
http://mikaelroos.se       > https://mikaelroos.se


Jag valde att lösa det med en ny virtuell host. Så här.
/etc/apache2/sites-available/www.mikaelroos.se.conf
Kod: Markera allt
<VirtualHost *:80>
        Include /etc/apache2/sites-available/www.mikaelroos.se.redirect
</VirtualHost>

<VirtualHost *:443>
        Include /etc/apache2/sites-available/ssl.include
        Include /etc/apache2/sites-available/www.mikaelroos.se.redirect
</VirtualHost>


Filen som inkluderas ser ut så här:
/etc/apache2/sites-available/www.mikaelroos.se.redirect
Kod: Markera allt
Define site mikaelroos.se
ServerName www.${site}
ServerAlias do1.${site}
#ServerAlias do2.${site}
Redirect "/" "https://${site}/"


Puh, det fungerar, alla vägar leder nu till https://mikaelroos.se
http://www.mikaelroos.se
https://www.mikaelroos.se
http://mikaelroos.se
https://mikaelroos.se

Magiskt.

Det verkar som jag gjorde rätt också:
https://www.ssllabs.com/ssltest/analyze ... .se&latest

Jag får finslipa processen, möjligen borde jag inte skapat en certifikatsfil för samtliga virtuella hostar på maskinen, kanske borde jag ha en annan nyckellängd, i chatten rekommenderades 4096 istället för 2048.

Men, men, ett steg fram, det är inte jättesvårt att uppgradera sina virtuella hostar till ssl och https. Får fixa dbwebb.se imorgon kanske...
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10982
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg24 mar 2016, 12:24

Så, jag gjorde allt en gång till på an annan webbserver och valde an lite annan struktur.

Jag började med två virtuella hostar som bara låg på http, inte https, bara för att få det att fungera.

Jag skapade certifikaten utan att använda kopplingen till Apache.
Kod: Markera allt
./letsencrypt-auto certonly --standalone -d cimage.se -d www.cimage.se


Mina virtuella hostar ser nu ut så här, för webbplatsen cimage.se (http://www.cimage.se gör redirekt till cimage.se).
Kod: Markera allt
$ cat /etc/apache2/sites-available/cimage.se.conf
Define site cimage.se
ServerAdmin mos@dbwebb.se

<VirtualHost *:80>
        ServerName ${site}
        ServerAlias do1.${site}
        ServerAlias do2.${site}
        Redirect "/" "https://${site}/"
</VirtualHost>

<VirtualHost *:443>
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile              /etc/letsencrypt/live/cimage.se/cert.pem
        SSLCertificateKeyFile   /etc/letsencrypt/live/cimage.se/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/cimage.se/chain.pem

        ServerName ${site}
        ServerAlias do1.${site}
        ServerAlias do2.${site}
        DocumentRoot /home/mos/htdocs/${site}/htdocs

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog  /home/mos/htdocs/${site}/error.log
        CustomLog /home/mos/htdocs/${site}/access.log combined
</VirtualHost>


Samt.

Kod: Markera allt
$ cat /etc/apache2/sites-available/www.cimage.se.conf       
Define site cimage.se
ServerAdmin mos@dbwebb.se

<VirtualHost *:80>
        ServerName www.${site}
        Redirect "/" "https://www.${site}/"
</VirtualHost>

<VirtualHost *:443>
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile              /etc/letsencrypt/live/cimage.se/cert.pem
        SSLCertificateKeyFile   /etc/letsencrypt/live/cimage.se/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/cimage.se/chain.pem

        ServerName www.${site}
        Redirect "/" "https://${site}/"
</VirtualHost>


Tycker det blev enklare att samla i två filer och tog bort de includes jag hade.

Ser bra ut verkar det som:
https://www.ssllabs.com/ssltest/analyze ... .se&latest
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10982
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg19 maj 2016, 09:22

Ser ut som letencrypt har ett nytt kommando för att jobba med certifikaten, certbot. Verkar funka som det var tänkt.

https://letsencrypt.org/getting-started/
...
..:
.... /mos
Användarvisningsbild

xt9

javascript-guru

  • Inlägg: 83
  • Blev medlem: 12 aug 2014, 12:18
  • Ort: Norrköping

Re: Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg20 maj 2016, 20:34

Caddy är en intressant webserver som skapades i början av 2015. En av dess säljande features är automatisk https med letsencrypt.


Genomgång av automatisk https: https://www.youtube.com/watch?v=nk4EWHvvZtI

Caddy har även support för directives som t.ex. att klona ett visst git repo, eller automatiskt verifiera JWTs, Caddy har även stöd för att automatiskt göra om markdownfiler.

Personligen kommer jag följa Caddy med ett vaksamt öga 2016.
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10982
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg04 jul 2016, 23:39

Installerade ett cert för dbwebb.se med den nya varianten/kommandot certbot. Jag kunde inte köra direkt mot apache så jag valde varianten med webroot.

Denna gången körde jag bara följande kommando, sen gjorde jag inställningarna i UI:et. Apache var igång när jag körde kommandot.
Kod: Markera allt
$ sudo certbot certonly


Certifikatet installerades och därefter enablade jag min https-host.

Jag använder även följande inställningar, någon gång under resan har jag fått dem av letsencrypt, osäker på vid vilket tillfälle dock...

/etc/letsencrypt/options-ssl-apache.conf
Kod: Markera allt
# Baseline setting to Include for SSL sites
SSLEngine on

# Intermediate configuration, tweak to your needs
SSLProtocol             all -SSLv2 -SSLv3
SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on
SSLCompression          off

SSLOptions +StrictRequire

# Add vhost name to log entries:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

#CustomLog /var/log/apache2/access.log vhost_combined
#LogLevel warn
#ErrorLog /var/log/apache2/error.log

# Always ensure Cookies have "Secure" set (JAH 2012/1)
#Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"


Jag fick rating A vid test med https://www.ssllabs.com/ssltest/analyze ... =dbwebb.se, så det verkar funka.

Här är basen till Apaches config filer för http & https.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10982
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Skaffa ett SSL-certifikat från letsencrypt och kör https

Inlägg05 jul 2016, 23:59

Hmm, varianten med certbot certonly --webroot funkade inte så bra i min konfiguration som hade en redirect från www.server till server. Det blev lite lurigt att hantera.

Det fick bli varianten med standalone istället. Den funkade bättre. Nackdelen är att jag tillfälligt måste stoppa apache medans certificatet verifieras.
Kod: Markera allt
$ sudo certbot certonly --standalone -d $(WWW_SITE) -d www.$(WWW_SITE)
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Google [Bot] och 17 gäster