Änderungen von Dokument Server-Zertifikat

Zuletzt geändert von Jonas Jelten am 2024/08/23 12:30

Von Version 3.1
bearbeitet von Leo Fahrbach
am 2023/05/19 14:59
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 2.1
bearbeitet von Leo Fahrbach
am 2023/05/19 14:46
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -20,14 +20,16 @@
20 20   1 Um auf der Maschine die Dienste neuzustarten/neuzuladen, wenn ein neues Zertifikat da ist, legt man scripte in `/usr/local/cert.d/` ab, die mit `run-parts(8)` kompatibel sind. Das erste Argument ist der Teilpfad zum neuen Zertifikat. Unten ist ein Beispielscript für einen Apache2-reload.
21 21   1 Nun kann man mit `rbg-cert` Zertifikate beantragen:
22 22  
23 -```
24 -# Zur Kontrolle die konfigurierten Namen abfragen, fehlende in der StrukturDB eintragen!
23 +{{html wiki="true"}}
24 +{{code}}# Zur Kontrolle die konfigurierten Namen abfragen, fehlende in der StrukturDB eintragen!
25 25  rbg-cert --show
26 -# Initiale Beantragung oder nach Namensänderung neues Zertifikat beantragen:
26 +# Initiale Beantragung oder nach Namensänderung neues Zertifikat beantragen:
27 27  rbg-cert --force-request
28 -# Nach ein paar Minuten das Zertifikat downloaden (oder man wartet bis der systemd-timer läuft):
28 +# Nach ein paar Minuten das Zertifikat downloaden (oder man wartet bis der systemd-timer läuft):
29 29  rbg-cert
30 -```
30 +{{/code}}
31 +{{/html}}
32 +
31 31  `rbg-cert.service` und `rbg-cert.timer` **verlängern** das Zertifikat automatisch 30 Tage vor Ablauf.
32 32  
33 33  Bitte modifiziert unsere Software nicht, denn sie wird zentral von uns aktualisiert. Bei Fragen/Anregungen gerne die Systemgruppe kontaktieren.
... ... @@ -41,14 +41,17 @@
41 41  
42 42  Im `VirtualHost` Block in `/etc/apache2/sites-enabled/MYSERVICE.conf`:
43 43  
44 -```
46 +{{html wiki="true"}}
47 +{{code}}
45 45  SSLCertificateFile /etc/apache2/tls/fullchain.pem
46 46  SSLCertificateKeyFile /etc/apache2/tls/key.pem
47 -```
50 +{{/code}}
51 +{{/html}}
48 48  
49 49  Und der automatische renew-hook (`chmod +x` nicht vergessen!)
50 50  
51 -```
55 +{{html wiki="true"}}
56 +{{code}}
52 52  $ cat /usr/local/cert.d/apache2
53 53  #!/bin/bash
54 54  set -o nounset
... ... @@ -62,12 +62,13 @@
62 62  install --mode 0644 "$1".fullchain.pem /etc/apache2/tls/fullchain.pem
63 63  
64 64  systemctl reload apache2.service
65 -```
70 +{{/code}}
71 +{{/html}}
66 66  
67 67  ### Beispiel für nginx
68 68  
69 -```
70 -$ cat /etc/nginx/conf.d/ssl.conf
75 +{{html wiki="true"}}
76 +{{code}}$ cat /etc/nginx/conf.d/ssl.conf
71 71  # config from https://mozilla.github.io/server-side-tls/ssl-config-generator/
72 72  
73 73  ssl_certificate /etc/nginx/tls/fullchain.pem; # cert + parent CAs except root CA
... ... @@ -89,11 +89,13 @@
89 89  
90 90  add_header X-XSS-Protection "1; mode=block";
91 91  add_header X-Content-Type-Options nosniff;
92 -```
98 +{{/code}}
99 +{{/html}}
93 93  
94 94  Und der renew-hook (`chmod +x` nicht vergessen!)
95 95  
96 -```
103 +{{html wiki="true"}}
104 +{{code}}
97 97  $ cat /usr/local/cert.d/nginx
98 98  #!/bin/bash
99 99  set -o nounset
... ... @@ -107,11 +107,13 @@
107 107  install --mode 0644 "$1".fullchain.pem /etc/nginx/tls/fullchain.pem
108 108  
109 109  systemctl reload nginx.service
110 -```
118 +{{/code}}
119 +{{/html}}
111 111  
112 112  ### Allgemeines Beispiel
113 -```
114 -$ cat /usr/local/cert.d/yourservice
122 +
123 +{{html wiki="true"}}
124 +{{code}}$ cat /usr/local/cert.d/yourservice
115 115  #!/bin/bash
116 116  set -o nounset
117 117  set -o errexit
... ... @@ -122,7 +122,8 @@
122 122  #install --mode 0644 --owner myowner "$1".chain.pem /etc/mydaemon/tls/chain.pem
123 123  #install --mode 0644 --owner myowner "$1".fullchain.pem /etc/mydaemon/tls/chainwithcert.pem
124 124  #systemctl reload mydaemon
125 -```
135 +{{/code}}
136 +{{/html}}
126 126  
127 127  ## Serverzertifikat für alle anderen Maschinen, deren Namen über die Strukturdb verwaltet werden
128 128  
... ... @@ -134,8 +134,9 @@
134 134  
135 135  Das Programm `rbg-cert` verwendet auch die API, d.h. man kann es auf andere Maschinen portieren.
136 136  Zur Vorbereitung auf den Einsatz von rbg-cert sind folgende Schritte notwendig:
137 -```
138 -echo $UQN > /etc/uqn
148 +
149 +{{html wiki="true"}}
150 +{{code}}echo $UQN > /etc/uqn
139 139  apt install strongswan-pki
140 140  apt install python3-cryptography
141 141  
... ... @@ -148,7 +148,8 @@
148 148  
149 149  pki --pub --in $UQN.privkey.pem --outform pem > $UQN.pubkey.pem
150 150  # Diesen pubkey dann in der StrukturDB für PIRA registrieren
151 -```
163 +{{/code}}
164 +{{/html}}
152 152  
153 153  `rbg-cert` und systemd timer/service sind von einer aktuellen Ubuntu-VM zu kopieren.
154 154  
... ... @@ -162,12 +162,13 @@
162 162  
163 163  Production:
164 164  
165 -```
166 -URL: https://pira.in.tum.de/v0/server/[UQN]
178 +{{html wiki="true"}}
179 +{{code}}URL: https://pira.in.tum.de/v0/server/[UQN]
167 167  
168 - GET {cert, chain, fullchain, names, should_renew}
181 + GET → {cert, chain, fullchain, names, should_renew}
169 169   POST {csr}
170 -```
183 +{{/code}}
184 +{{/html}}
171 171  
172 172  Hier sind keine Tests zulässig.
173 173  
... ... @@ -177,13 +177,13 @@
177 177  
178 178  Manuelle Ausstellung mit Genehmigung durch RBG nur möglich, wenn technisch weder rbg-cert noch Let's Encrypt möglich sind:
179 179  
180 -1. Auf dem Zielserver z.B. nach `/etc/ssl/private`
181 -2. Certificate Signing Request (`csr`) erzeugen
182 - `openssl req -newkey rsa:3072 -nodes -keyout SERVERNAME.key -out SERVERNAME.csr -subj '/C=DE/O=Technische Universitaet Muenchen/CN=SERVERNAME.cit.tum.de'`
183 -3. [Bei der CA](https://cert-manager.com/customer/DFN/ssl/dUIh9O1QABKy40PikBgN):
184 - 1. `.csr` hochladen
185 - 2. unter "Subject Alternative Names" alle weiteren ggf. benötigten Namen eintragen
186 - 3. alle anderen Felder leer lassen
187 -4. Bitte den `commonName` (CN) mit Begründung warum rbg-cert und Let's Encrypt nicht möglich sind per E-Mail an rbg@in.tum.de schicken.
188 -5. auf "Certificate approved" E-Mail warten, "Certificate ID" entnehmen
189 -6. [herunterladen](https://cert-manager.com/customer/DFN/idp/ssl/dUIh9O1QABKy40PikBgN?action=download) mit ID und "Certificate (w/issuer after)"
194 +1 Auf dem Zielserver z.B. nach `/etc/ssl/private` wechseln
195 + 1 Certificate Signing Request (`csr`) erzeugen
196 +
197 + 1 [Bei der CA](https://cert-manager.com/customer/DFN/ssl/dUIh9O1QABKy40PikBgN):
198 + 1 `.csr` hochladen
199 + 1 unter "Subject Alternative Names" alle weiteren ggf. benötigten Namen eintragen
200 + 1 alle anderen Felder leer lassen
201 + 1 Bitte den `commonName` (CN) mit Begründung warum rbg-cert und Let's Encrypt nicht möglich sind per E-Mail an rbg@in.tum.de schicken.
202 + 1 auf "Certificate approved" E-Mail warten, "Certificate ID" entnehmen
203 + 1 [herunterladen](https://cert-manager.com/customer/DFN/idp/ssl/dUIh9O1QABKy40PikBgN?action=download) mit ID und "Certificate (w/issuer after)"