SSL

From A-Eskwiki
Jump to: navigation, search

Uitleg

SSL wordt gebruikt om netwerk verbindingen te beveiligingen, zoals http en imap verkeer. Hiertoe gebruiken we bij a-eskwadraat een reverse proxy die het verkeer versleuteld voor de buitenwereld.

Voor het certificaat van A-Eskwadraat maken we op dit moment gebruik van xolphin: https://www.sslcertificaten.nl/

Wachtwoord van certificaat halen

Indien de private key is beveiligd met een wachtwoord, dan is dit wachtwoord ook nodig bij het opstarten. Dit kan vervelend zijn wanneer de server opnieuw opstart zonder dat iemand ter plaatse is om het wachtwoord in te tikken. Het wachtwoord kan met het volgende commando worden verwijderd. Zorg hierbij dat de shell zich bevindt in de map waarin de private key staat opgeslagen:

[root@server cert]# openssl rsa -in encrypted_private_key.key -out private_key.key

Vervang hierbij encrypted_private_key.key met de naam van de private key, en vervang private_key.key met de gewenste bestandsnaam voor de nieuwe private key zonder wachtwoord.

Aanmaken CSR

stap 1

Maak met behulp van SSH verbinding met de server en log in als root. Ga met behulp van het cd-commando naar de map toe waar de certificaten moeten worden bewaard:

[root@server]# cd /etc/ssl/cert/

stap 2

Met het volgende commando kunnen de Private Key en de CSR worden gegenereerd:

[root@server]# openssl req -nodes -newkey rsa:2048 \
-keyout a-eskwadraat_nl.`date +%Y%m%d`.key \
-out a-eskwadraat_nl.`date +%Y%m%d`.csr \
-subj '/C=NL/ST=Utrecht/L=Utrecht/O=A-Eskwadraat/OU=Sysop/CN=*.a-eskwadraat.nl/emailAddress=sysop@a-eskwadraat.nl'

stap 3

OpenSSL genereert twee bestanden: de Private Key (met als naam a-eskwadraat_nl.{datum}.key) en de CSR (met als naam a-eskwadraat_nl.{datum}.csr).

stap 4

Beveilig de certificaatbestanden zodat niemand behalve de rootgebruiker erbij kan:

[root@server cert]# chmod 600 *.key *.csr

stap 6

Nu kan de CSR met behulp van het cat-commando worden weergegeven:

[root@server cert]# cat a-eskwadraat_nl.`date +%Y%m%d`.csr 

De velden emailadres, optionele bedrijfsnaam en uitwisselingswachtwoord kunnen leeggelaten worden bij het aanvragen van een SSL certificaat.


IPA SSL intern

Hier staat eigenlijk alles dat je moet weten: http://www.freeipa.org/page/Apache_SNI_With_Kerberos
Het komt hier op neer (merk op dat 'dummyhost' de naam van de virtualhost is):

mkdir /etc/httpd/certs
semanage fcontext -a -t cert_t '/etc/httpd/certs(/.*)?' && restorecon -v /etc/httpd/certs
ipa host-add dummyhost.example.com --desc="Dummy Host" --location="<fqdn-of-webserver>"
ipa host-add-managedby dummyhost.example.com --hosts="<fqdn-of-webserver>"
ipa service-add HTTP/dummyhost.example.com
ipa service-add-host HTTP/dummyhost.example.com --hosts="<fqdn-of-webserver>"
ipa-getcert request -r -f /etc/httpd/certs/dummyhost.crt -k /etc/httpd/certs/dummyhost.key -N CN=dummyhost.example.com -D \
  dummyhost.example.com -K HTTP/dummyhost.example.com

Het zou kunnen dat je de package ipa-admintools moet installeren.

Let's Encrypt

Stap 1

Inloggen op ernst.


Stap 2

Certbot commando uitvoeren:

certbot certonly --manual -d *.a-eskwadraat.nl -d a-eskwadraat.nl --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01

Stap 3

Inloggen op vm-dns-auth.

Stap 4

Twee TXT-records aanpassen in /etc/nsd/zones/a-eskwadaraat.nl.zone en timestamps aanpassen (van hele bestand).

Stap 5

service nsd restart

Hierna uitloggen op vm-dns-auth.

Stap 6

Ga verder met certbot script uit stap 2.

Stap 7

service nginx restart

Stap 8

Certificaat kopiëren naar mail server.

Log in op vm-mailpp

Verwijder de oude certificaten.

rm -f /etc/ssl/certs/mail_a-eskwadraat_nl.crt
rm -f /etc/ssl/certs/mail_a-eskwadraat_nl.key

Kopieër de nieuwe certificaten vanaf Ernst:

scp root@ernst:/etc/letsencrypt/live/a-eskwadraat.nl/fullchain.pem /etc/ssl/certs/mail_a-eskwadraat_nl.crt
scp root@ernst:/etc/letsencrypt/live/a-eskwadraat.nl/privkey.pem /etc/ssl/certs/mail_a-eskwadraat_nl.key

Herstart postfix en dovecot

systemctl restart postfix
systemctl restart dovecot

Stap 9

Profit.

Let's Encrypt introductie

De website van de introductie intro-utrecht.nl gebruikt een eigen certificaat. Andere websites die genoemd staan in /etc/nginx/conf.d/vm-www-dmz.list werken nu ook via dit certificaat. Deze worden op het moment niet echt meer gebruikt, maar mochten hier problemen zijn met ssl ligt dat hier aan. Voer het volgende commando uit op ernst om het intro certificaat te vernieuwen:

certbot certonly --webroot -d intro-utrecht.nl,www.intro-utrecht.nl,bachelor.intro-utrecht.nl

Als er gevraagd wordt om een webroot, vul dan in:

/var/www/bachelor.intro-utrecht.nl/.well-known