wiki.in.tum.de
Technische Universität München
You are here: Foswiki>Informatik/Benutzerwiki Web>ServerZertifikate (28 Jul 2020, BenjaminHofNe94rit)Edit Attach

Server-Zertifikate

Die RBG stellt Zertifikate für die Web PKI aus. Zertifikate (.in.tum.de, .ma.tum.de, .rbg.tum.de) für Ubuntu VMs im ESXi können automatisch bezogen werden.

In allen anderen Fällen, also andere Domain, Windows VM, keine VM im ESXi, muss der untere Workflow ("TUM Server-Zertifikat") verwendet werden.

Server-Zertifikat für Ubuntu VM

Für neue VMs ist die erforderliche Software bereits vorinstalliert. Für ältere VMs muss dies einmalig bei der Systemgruppe beantragt werden.

  1. In der StrukturDB müssen alle Aliase korrekt eingetragen sein. Bei Service-IPs muss servicehost auf den tatsächlichen Host (also Server/VM/...) verweisen.
  2. Das Zertifikat wird dann in /var/lib/rbg-cert/live/HOST.cert.pem liegen
  3. 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.
  4. Zertifikate kann man nur mit 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.

Beispiel-Script für Apache2 reload

Da Programme (nginx, postfix, …) nicht riechen können, wann ein neues Zertifikat da ist, muss man ihnen das mitteilen. Am einfachsten mit Scripten in /usr/local/cert.d/..., die ausführbar sind (chmod +x):
$ cat /usr/local/cert.d/apache
#!/bin/bash
set -o nounset
set -o errexit

systemctl reload apache2

# 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 restart mydaemon

Serverzertifikat für alle anderen Maschinen, deren Namen über die Strukturdb verwaltet werden

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.

Vorbereitung bei Nutzung von rbg-cert

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 2048 --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!

Enrollment

Der public key ist in den Hosteintrag der VM laden, bspw. per struklib auf lsadmin oder per https://rbgwebapp.in.tum.de/struktur/treeview. Nach spätestens einer guten Minute sollte der Key dann der RA bekannt sein, ab diesem Zeitpunkt kann die API verwendet werden.

API

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.

TUM Server-Zertifikat

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.
  1. Auf dem Zielserver z.B. /etc/ssl/tum anlegen, chown root:root, chmod 700 /etc/ssl/tum
  2. cd /etc/ssl/tum, openssl genrsa -out yourservername.key 2048
  3. 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
  4. Bei Aliasnamen 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
  5. Certificate Signing Request (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
  6. Den .csr auf bei der DFN-PKI hochladen
  7. Während der Apokalypse bitte per den Antrag per E-Mail an rbg-system@in.tum.de, per Post oder per Fax+Zeitmaschine an 089/289-18507 schicken. Dies ist nur möglich, wenn die Unterschrift des Antragstellers bei der Systemgruppe aktenkundig ist (bspw. auf einem halbwegs aktuellen Antrag für ein S/MIME-Zertifikat von uns).
  8. Warten bis das Zertifikat ausgestellt wurde (bekommt man via Mail)
  9. Jetzt bilden yourservername.key und das Zertifikat aus der Mail das Schlüsselpaar
  10. Optional kann man beide zu einer p12-Datei vereinen: openssl pkcs12 -export -out yourcertificatebundle.p12 -inkey yourservername.pem -in certificatefrommail.pem
Topic revision: r22 - 28 Jul 2020, BenjaminHofNe94rit
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback