HTTPS / SSL på Apache – Debian 7 6

Skrevet af: Patrick Kerwood

I dette indlæg gennemgår jeg hvordan man laver et self-signed SSL certifikat og får det til at spille med Apache.

Når et SSL certifikat er self-signed betyder det at man selv har signeret for troværdigheden af det. I modsætning til et certifikat udstedt af et firma, som lægger navn og signatur til, samt koster penge. Forskellen er at din og andres browsere kender til det firma, som har udstedt signaturen og lader dig bruger HTTPS uden prolemer.
Hvis din browser for fat i et self-signed SSL certifikat, vil den advare dig og i første omgang, ikke tillade dig at gå til siden du har requested.

Som nævnt, laver jeg i guiden her, et self-signed certifikat. Men hvis du vil have et “rigtigt” et, kan du faktisk få det ved http://startssl.com, ganske gratis og er helt fint til privat brug.

Jeg går selvfølgelig ud fra du allerede har en webserver med Apache. Hvis ikke, kan du se dette indlæg: Installer Debian LAMP Server

Start med at lave certifikatet. Nedenstående kommando vil oprette filer i /etc/ssl/private, en crt og en key fil. Certifikatet vil virke i 365 dage. Du kan selvfølgelig ændre det til noget andet.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/apache.key -out /etc/ssl/private/apache.crt

Du vil efterfølgende blive promptet for nedenstående, som du skal udfylde. Hvad du udfylder det med, er sådan set ligemeget. Med undtagelse af Common Name, det skal være dit domæne navn. Hvis ikke du bruger et domæne navn, kan du bruge din IP.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DK
State or Province Name (full name) [Some-State]:Jylland
Locality Name (eg, city) []:By
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linuxbloggen Inc
Organizational Unit Name (eg, section) []:Et eller andet navn
Common Name (e.g. server FQDN or YOUR name) []:dit-domæne-navn.dk            
Email Address []:webmaster@linuxbloggen.dk

Ændre permissions på apache.crt og apache.key.
sudo chmod 640 /etc/ssl/private/{apache.key,apache.crt}sudo chown root.ssl-cert /etc/ssl/private/{apache.key,apache.crt}

Enable SSL modulet i Apache.
sudo a2enmod ssl

Enable default-ssl virtual host.
sudo a2ensite default-ssl

Åben filen default-ssl, find og ændre nedenstående linjer.
sudo nano /etc/apache2/sites-available/default-ssl SSLEngine On
SSLCertificateFile /etc/ssl/private/apache.crt
SSLCertificateKeyFile /etc/ssl/private/apache.key

Restart Apache.
sudo service apache2 restart

Du kan nu tilgå din side med SSL, eg. https://dit-domæne.dk. Men du skal manuelt skrive “https”. En linje kan tilføjes til default virtual host, som redirecter til https.

Åben default og tilføj nedenstående linje, under <VirtualHost *:80>.
sudo nano /etc/apache2/sites-available/default Redirect permanent / https://dit-domæne.dk/

Din server redirecter dig nu fra http til https.


13 maj 2014   | Alle · Debian

6 thoughts on “HTTPS / SSL på Apache – Debian 7

  1. Reply Jonas HC apr 14,2015 17:40

    Hej Patrick

    Allerførst skal du have stor tak for din intuitive og gode guides/indlæg, det er super godt – bliv endelig ved.

    Jeg har fulgt denne her guide samt din installation af rtorrent/rutorrent.

    Jeg forsøger at få alle mine forbindelser igennem https til apache (heriblandt rutorrent), og tror det er lykkedes. Jeg har egentlig bare flyttet alt indholdet i ../sites-available/rutorrent over i ../sites/available/default-ssl, og slettet …/sites-available/default. Og så selvfølgelig kørt sudo a2ensite default-ssl.

    Mit spørgsmål er, om det er nok, hvis man vil sikre sig, at alle sine forbindelser skal kører over ssl/https?

    Jeg kan stadig få adgang til min server ved http, men den beder om username og pass som jeg ikke har sat op. Kan man gøre sådan at intet bliver vist ved http?

    • Reply Patrick Kerwood apr 14,2015 19:07

      Du kan redirekte http til https. Du skulle ikke have slettet default filen. Du kan tilføje dette til din default fil for at redirect.

      &lt;VirtualHost *:80&gt;
      &nbsp;&nbsp;&nbsp;&nbsp;        ServerName linuxbloggen.dk
      &nbsp;&nbsp;&nbsp;&nbsp;        ServerAlias www.linuxbloggen.dk
      &nbsp;
      &nbsp;&nbsp;&nbsp;&nbsp;        Redirect permanent / https://linuxbloggen.dk/
      &lt;/VirtualHost&gt;

      Jeg kan ikke huske om man skal have proxy modulet enabled for at det virker, men du kan jo prøve.

  2. Reply Jacob F apr 15,2015 17:05

    Hej Patrick

    Hvis jeg logger ind med http på rutorrent jf. din guide, skal jeg angive password.
    Men efter jeg har fulgt denne guide, så spørger den ikke efter kode på https, men kun med http??

    Er det mig der har glemt noget?

    Jeg ønsker at kunne tilgå rutorrent fra både http og https, men helst gerne med kode på begge? :-)

  3. Reply Patrick Kerwood apr 16,2015 13:52

    Det er sikkert fordi at følgende linje mangler i din ssl vhost fil.
    SCGIMount /rutorrent/RPC2 127.0.0.1:5000
            &lt;location /rutorrent&gt;
    &nbsp;&nbsp;&nbsp;&nbsp;                AuthName "Tits or GTFO"
    &nbsp;&nbsp;&nbsp;&nbsp;                AuthType Basic
    &nbsp;&nbsp;&nbsp;&nbsp;                Require Valid-User
    &nbsp;&nbsp;&nbsp;&nbsp;                AuthUserFile /var/www/rutorrent/.htpasswd
            &lt;/location&gt;

    Det er lidt svært at gætte uden at have set det.

    • Reply Jacob F apr 16,2015 16:58

      Det virker i hvert fald efter jeg har sat det ind i /etc/apache2/sites-available/default-ssl

      Tak for det, og de GODE guides du har lavet! :D

    • Reply Patrick Kerwood apr 16,2015 21:46

      Det var godt..

      Tak.. Godt nogen kan bruge dem ?

Leave a Reply