In allen anderen Fällen, also andere Domain, Windows VM, keine VM im ESXi, muss der untere Workflow ("TUM Server-Zertifikat") verwendet werden.
Für neue VMs ist die erforderliche Software bereits vorinstalliert. Für ältere VMs muss dies einmalig bei der Systemgruppe beantragt werden.
servicehost
auf den tatsächlichen Host (also Server/VM/...) verweisen.
/var/lib/rbg-cert/live/HOST.cert.pem
liegen
/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.
rbg-cert
beantragen:
# Zur Kontrolle die konfigurierten Namen abfragen, fehlende in der StrukturDB eintragen! rbg-cert --show # Initiale Beantragung oder nach Namensänderung neues Zertifikat beantragen: rbg-cert --force-request # Nach ein paar Minuten das Zertifikat downloaden (oder man wartet bis der systemd-timer läuft): rbg-cert
rbg-cert.service
und rbg-cert.timer
verlängern das Zertifikat automatisch 30 Tage vor Ablauf.
Bitte modifiziert unsere Software nicht, denn sie wird zentral von uns aktualisiert. Bei Fragen/Anregungen natürlich immer gerne die Systemgruppe kontaktieren.
/usr/local/cert.d/...
, die ausführbar sind (chmod +x
):
$ cat /usr/local/cert.d/yourservice #!/bin/bash set -o nounset set -o errexit # of course, the paths may vary on your setup! #install --mode 0600 --owner myowner "$1".privkey.pem /etc/mydaemon/tls/privkey.pem #install --mode 0644 --owner myowner "$1".cert.pem /etc/mydaemon/tls/cert.pem #install --mode 0644 --owner myowner "$1".chain.pem /etc/mydaemon/tls/chain.pem #install --mode 0644 --owner myowner "$1".fullchain.pem /etc/mydaemon/tls/chainwithcert.pem #systemctl reload mydaemon
$ cat /etc/nginx/conf.d/ssl.conf # config from https://mozilla.github.io/server-side-tls/ssl-config-generator/ ssl_certificate /etc/nginx/tls/fullchain.pem; # cert + parent CAs except root CA ssl_certificate_key /etc/nginx/tls/key.pem; # secret key ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; #ssl_prefer_server_ciphers off; # HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always; # OCSP stapling ssl_stapling on; ssl_stapling_verify on; # verify chain of trust of OCSP response using Root CA and Intermediate certs ssl_trusted_certificate /etc/nginx/tls/trusted.pem; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options nosniff;
$ cat /usr/local/cert.d/nginx #!/bin/bash set -o nounset set -o errexit [ ! -d /etc/nginx/tls ] && mkdir /etc/nginx/tls install --mode 0600 "$1".privkey.pem /etc/nginx/tls/key.pem #install --mode 0644 "$1".cert.pem /etc/nginx/tls/cert.pem install --mode 0644 "$1".chain.pem /etc/nginx/tls/trusted.pem install --mode 0644 "$1".fullchain.pem /etc/nginx/tls/fullchain.pem systemctl reload nginx
SSLCertificateFile /var/lib/rbg-cert/live/MYHOST.fullchain.pem SSLCertificateKeyFile /var/lib/rbg-cert/live/MYHOST.privkey.pem
$ cat /usr/local/cert.d/apache2 #!/bin/sh systemctl reload apache2
Für andere Maschinen können die Zertifikate über API bezogen werden, sofern die Namen alle in der Strukturdb verwaltet werden. Die Namen müssen also ebenfalls wie obenstehend beschrieben in der Strukturdb konfiguriert werden.
Wir bitten, vor der Nutzung die Systemgruppe zur Beratung zu kontaktieren. Im Lauf der Zeit können API-Änderungen notwendig werden, dies bitte im Hinterkopf behalten.Das rbg-cert Tool verwendet auch die API, d.h. man kann es auf andere Maschinen portieren. Zur Vorbereitung auf den Einsatz von rbg-cert sind folgende Schritte notwendig:
echo $UQN > /etc/uqn mkdir -pm700 /var/lib/rbg-cert/live/ cd !$ pki --gen --type rsa --size 3072 --outform pem > $UQN.privkey.pem pki --pub --in $UQN.privkey.pem --outform pem > $UQN.pubkey.pem
rbg-cert und systemd timer sind von einer aktuellen Ubuntu-VM zu kopieren.
Falls Eigenentwicklungen zwingend notwendig sind, bitte das Verhalten von rbg-cert beibehalten!
Für Tests:
URL: https://vmrbg312.in.tum.de/v0/server/[UQN] GET → {cert, chain, fullchain, names, should_renew} POST {csr} RDN prefix: 'C=DE,ST=Bundesland,L=Stadt,O=Testinstallation Eins CA,OU=Fakultaet fuer Informatik'
Production:
URL: https://pira.in.tum.de/v0/server/[UQN] GET → {cert, chain, fullchain, names, should_renew} POST {csr}
Hier sind keine Tests zulässig.
Public keys können im Moment nicht aus der RA entfernt werden, bei Kompromittierung bitte ein Ticket zum manuellen Eingriff öffnen.
Diese Anleitung wird nur dann gebraucht, wenn die Verwendung rbg-cert nicht möglich ist. Also zum Beispiel bei Hostnamen, die nicht über die Strukturdatenbank der RBG verwaltet werden, oder nicht zu einer VM in unserem ESX gehören.
Für welche externen Domains (gnunet.org
, …) wir Zertifikate erstellen können, kann man hier ("Die folgenden Domainnamen...") sehen.
Für diese Fälle ist ein etwas komplizierterer Prozess notwendig, da der Zertifikatsantrag manuell erzeugt werden muss.
Zunächst kann man sich entscheiden:/etc/ssl/tum
anlegen, chown root:root
, chmod 700 /etc/ssl/tum
cd /etc/ssl/tum
, openssl genrsa -out yourservername.key 2048
yourservername.conf
bearbeiten prompt = no distinguished_name = req_distinguished_name [ req_distinguished_name ] countryName = DE stateOrProvinceName = Bayern localityName = Muenchen organizationName = Technische Universitaet Muenchen organizationalUnitName = Fakultaet fuer Informatik commonName = dienstoderservername.tum.de
yourservername.conf
erweitern. DNS.0
muss dem commonName
gleichen. SAN steht für Subject Alternative Name, hier werden alle Namen eingetragen, unter denen der Server erreichbar sein soll. [ req_exts ] subjectAltName = @SAN [SAN] DNS.0=dienstoderservername.tum.de DNS.1=dienstalias.tum.de ... etc
csr
) erzeugen. -reqexts req_exts
weglassen wenn keine SANs benutzt wurden. openssl req -config yourservername.conf -reqexts req_exts -new -key yourservername.key -sha256 -out yourservername.csr
.csr
auf bei der DFN-PKI hochladen. Das "Web Server"-Profil ist das "normale" für jeden üblichen Serverdienst.
yourservername.key
und das Zertifikat aus der Mail das Schlüsselpaar
openssl pkcs12 -export -out yourcertificatebundle.p12 -inkey yourservername.pem -in certificatefrommail.pem