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
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
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å
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
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
Åben
sudo nano /etc/apache2/sites-available/default
Redirect permanent / https://dit-domæne.dk/
Din server redirecter dig nu fra http til https.
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?
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.
<VirtualHost *:80>
ServerName linuxbloggen.dk
ServerAlias www.linuxbloggen.dk
Redirect permanent / https://linuxbloggen.dk/
</VirtualHost>
Jeg kan ikke huske om man skal have proxy modulet enabled for at det virker, men du kan jo prøve.
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? :-)
Det er sikkert fordi at følgende linje mangler i din ssl vhost fil.
SCGIMount /rutorrent/RPC2 127.0.0.1:5000
<location /rutorrent>
AuthName "Tits or GTFO"
AuthType Basic
Require Valid-User
AuthUserFile /var/www/rutorrent/.htpasswd
</location>
Det er lidt svært at gætte uden at have set det.
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
Det var godt..
Tak.. Godt nogen kan bruge dem ?