Difference between revisions of "SSL"

From A-Eskwiki
Jump to: navigation, search
(Let's Encrypt introductie: Fix het webroot path)
 
(18 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[Category:Sysop]]
+
== Uitleg ==
  
== 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.
 
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/
+
Voor het certificaat van A-Eskwadraat maken we op dit moment gebruik van xolphin: [https://www.sslcertificaten.nl/ https://www.sslcertificaten.nl/]
  
 
== Wachtwoord van certificaat halen ==
 
== 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:
 
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
 
  [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.
 
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 ==
 
== Aanmaken CSR ==
 +
 
=== stap 1 ===
 
=== 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:
 
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/
 
  [root@server]# cd /etc/ssl/cert/
 +
 
=== stap 2 ===
 
=== stap 2 ===
  
 
Met het volgende commando kunnen de Private Key en de CSR worden gegenereerd:
 
Met het volgende commando kunnen de Private Key en de CSR worden gegenereerd:
<pre style="font-family: monospace, Courier; padding: 1em; border-color: rgb(221, 221, 221); color: rgb(0, 0, 0); line-height: 1.1em; font-size: 12.6999998092651px; background-color: rgb(249, 249, 249);">[root@server]# openssl req -nodes -newkey rsa:2048 \
+
<pre style="font-family: monospace, Courier; padding: 1em; border-color: rgb(221, 221, 221); color: rgb(0, 0, 0); line-height: 1.1em; font-size: 12.6999998092651px; background-color: rgb(249, 249, 249)">[root@server]# openssl req -nodes -newkey rsa:2048 \
 
-keyout a-eskwadraat_nl.`date +%Y%m%d`.key \
 
-keyout a-eskwadraat_nl.`date +%Y%m%d`.key \
 
-out a-eskwadraat_nl.`date +%Y%m%d`.csr \
 
-out a-eskwadraat_nl.`date +%Y%m%d`.csr \
Line 25: Line 31:
  
 
=== stap 3 ===
 
=== stap 3 ===
Voer de gegevens in die gebruikt worden voor het aanvragen van het SSL Certificaat. Het is erg belangrijk dat deze informatie overeenkomt met de whois gegevens van de domeinnaam en de gegevens van de organisatie zoals die geregistreerd zijn bij de Kamer van Koophandel. Voor sommige velden is er een standaardwaarde, deze is weergegeven tussen brackets. ( [standaard waarde] )
 
  
Bij de Common Name (CN) moet u de naam van de webserver opgeven zoals de client deze zal gaan aanspreken. In de meeste gevallen is dit een volledige domeinnaam zoals bijvoorbeeld: www.hieruwdomeinnaam.nl
+
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).
  
Let op: Laat u dus niet in de war brengen door (eg. YOUR name). Hier dient u NIET uw eigen naam in te vullen.
 
 
Bij de vraag om een challenge password in te voegen kunt u direct op enter toetsen om deze stap over te slaan. Door het ingeven van een challenge password zal u bij het starten van de webserver te allen tijde worden gevraagd dit wachtwoord in te voeren.
 
 
=== stap 4 ===
 
=== stap 4 ===
OpenSSL genereert twee bestanden: de Private Key (met als naam www_sslcertificaten_nl.key) en de CSR (met als naam www_sslcertificaten_nl.csr).
+
 
=== stap 5 ===
+
 
Beveilig de certificaatbestanden zodat niemand behalve de rootgebruiker erbij kan:
 
Beveilig de certificaatbestanden zodat niemand behalve de rootgebruiker erbij kan:
 +
 
  [root@server cert]# chmod 600 *.key *.csr
 
  [root@server cert]# chmod 600 *.key *.csr
 +
 
=== stap 6 ===
 
=== stap 6 ===
 +
 
Nu kan de CSR met behulp van het cat-commando worden weergegeven:
 
Nu kan de CSR met behulp van het cat-commando worden weergegeven:
  [root@server cert]# cat www_sslcertificaten_nl.csr  
+
 
 +
  [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.
 
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 http://www.freeipa.org/page/Apache_SNI_With_Kerberos] <br/>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).
 +
 +
'''Let op dat de serial altijd groter wordt dan de vorige (en niet een grotere stap dan 2**31).''' Als de serial een keer omlaag moet raadpleeg [http://www.microhowto.info/howto/reset_the_serial_number_of_a_dns_zone.html deze pagina].
 +
 +
=== 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
 +
 +
[[Category:Sysop]]

Latest revision as of 15:16, 6 July 2023

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).

Let op dat de serial altijd groter wordt dan de vorige (en niet een grotere stap dan 2**31). Als de serial een keer omlaag moet raadpleeg deze pagina.

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