Alle (Web-)Server innerhalb des MWN benötigen Zertifikate für sichere TLS Verbindungen. Der von uns empfohlene Anbieter ist Let's Encrypt. Die primäre Validierung von Let's Encrypt ist das HTTP-Challenge Verfahren. Dies ist aber nicht möglich wenn der Server nur vom MWN aus erreichbar ist. Als Alternative bietet Let's Encrypt auch ein DNS Challenge Verfahren an, welches aber aktuell manuell gepflegt werden muss, sofern Ihr DNS Eintrag beim LRZ Nameserver liegt.

Um dieses Problem zu lösen, bietet das IT-Management der TUM einen ACME-DNS-Dienst an, der den Prozess der DNS-Validierung automatisiert und den Erhalt und die automatische Erneuerung von Let's Encrypt-Zertifikaten mit einem CNAME-Eintrag vereinfacht.

Wichtig: Wenn Ihr Server von außerhalb des MWN erreichbar ist, sollten Sie anstelle des DNS- das Let's Encrypt-HTTP-Challenge Verfahren verwenden.

ACME-DNS löst zwei Probleme

  1. Automatisierung des DNS-Challenge Verfahrens: die DNS Records können per API gesetzt werden.
  2. Sicherheit: ACME-DNS bietet eine API mit begrenztem Umfang ausschließlich für TXT-Datenaktualisierung auf der Subdomäne „_acme-challenge“, wodurch Sicherheitsrisiken minimiert werden, falls die API-Credentials kompromittiert werden.

Weitere technische Details finden Sie im EFF deeplinks blog post.

ACME-DNS Hostacme-dns.it.tum.de


acme-dns

Anleitung (am Beispiel Ubuntu 22.04)

Nehmen wir an, dass Sie einen internen Server unter <my-internal-server.it.tum.de> betreiben, der ein Zertifikat braucht (entsprechend anpassen, ohne spitze Klammern).

  1. Certbot installieren: eine Anleitung finden Sie hier https://certbot.eff.org/instructions 
  2. ACME-DNS-Client installieren: https://github.com/acme-dns/acme-dns-client
  3. MWN Verbindung aktivieren z.B. über VPN
  4. Registrieren Sie die Domain bei acme-dns:
    sudo /usr/local/bin/acme-dns-client register -d my-internal-server.it.tum.de -s https://acme-dns.it.tum.de
    Exemplarische Ausgabe:
    _acme-challenge.my-internal-server.it.tum.de.     IN CNAME 407147b1-2c1a-4a7a-9698-bfbf11b58d2a.acme-dns.it.tum.de
  5. Es wurde eine zufällige Subdomain (407147b1-2c1a-4a7a-9698-bfbf11b58d2a.acme-dns.it.tum.de) erzeugt, welche Sie über einen CNAME Eintrag (_acme-challenge.my-internal-server.it.tum.de) unter Ihrer Domain referenzieren müssen.
  6. Sofern Sie Zugang zum Webdns haben, können Sie den Eintrag wie folgt anlegen:
  7. Wenn Sie keinen Zugang zum Webdns haben wenden Sie sich an Ihren Domain Admin um den Eintrag (exemplarisches Beispiel oben) anlegen zu lassen
  8. Zertifikat mit Certbot anfordern:
    sudo /usr/local/bin/acme-dns-client register -d my-internal-server.it.tum.de -s https://acme-dns.it.tum.de
    → Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/my-internal-server.it.tum.de/fullchain.pem ...
  9. Automatische Erneuerung einrichten: https://eff-certbot.readthedocs.io/en/latest/using.html#setting-up-automated-renewal

Anleitung (am Beispiel Windows Server )

Verbinden Sie sich per RDP zu Ihrem Windows Server und führen Sie dort folgende Schritte aus:

  1. Ordner simple-acme auf Laufwerk C:\ anlegen
  2. Windows ACME Tool herunterladen https://simple-acme.com/download (Full, x64) und in C:\simple-acme speichern
  3. ZIP Datei in den Ordner C:\simple-acme entpacken
  4. Windows PowerShell als Administrator ausführen (Start klicken, 'Power' tippen, Rechts-Klick auf den Eintrag 'Windows PowerShell' und im Kontext Menü 'Als Administrator ausführen' klicken)
  5. Ins Verzeichnis C:\simple-acme wechseln
    Windows PowerShell
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
    Lernen Sie das neue plattformübergreifende PowerShell kennen – https://aka.ms/pscore6
    
    PS C:\WINDOWS\system32> cd c:\simple-acme
  6. den Assistenten zum Erstellen eines LE Zertifikates starten
    PS C:\simple-acme> .\wacs.exe --acmednsserver "https://acme-dns.it.tum.de"
  7. Create cerificate (full options) durch drücken der Taste M wählen
     A simple cross platform ACME client (WACS)
     Software version 2.3.4.2084 (release, pluggable, standalone, 64-bit)
     Connecting to https://acme-v02.api.letsencrypt.org/...
     Scheduled task not configured yet
     Check the manual at https://simple-acme.com
     Please leave a ★ at https://github.com/simple-acme/simple-acme
    
     N: Create certificate (default settings)
     M: Create certificate (full options)
     R: Run renewals (0 currently due)
     A: Manage renewals (0 total)
     O: More options...
     Q: Quit
    
     Please choose from the menu:m
  8. Manual enter host names durch drücken der Taste 2 auswählen
     Running in mode: Interactive, Advanced
     Source plugin IIS bindings not available: Unsupported version of IIS detected.
    
     Please specify how the list of domain names that will be included in the
     certificate should be determined. If you choose for one of the "all bindings"
     options, the list will automatically be updated for future renewals to
     reflect the bindings at that time.
    
     1: Read bindings from IIS
     2: Manually enter host names
     3: CSR created by another program
     C: Abort
    
     How shall we determine the domain(s) to include in the certificate?:
     A: Manage renewals (0 total)
     O: More options...
     Q: Quit
    
     Please choose from the menu:2
  9. geben Sie den hostname für den das Zertifikat erstellt werden soll an
     Description:        A host name to get a certificate for. This may be a
                         comma-separated list.
    
     Host: my-internal-server.it.tum.de
  10. bestätigen Sie die Eingabe durch Enter drücken
     Source generated using plugin Manual input: my-internal-server.it.tum.de
    
     Friendly name '[Manual] my-internal-server.it.tum.de'. <Enter> to accept or type desired name:
  11. Single cerificate durch drücken der Taste 4 auswählen
     By default your source identifiers are covered by a single certificate. But
     if you want to avoid the 100 domain limit, want to prevent information
     disclosure via the SAN list, and/or reduce the operational impact of a single
     validation failure, you may choose to convert one source into multiple
     certificates, using different strategies.
    
     1: Separate certificate for each host (e.g. sub.example.com)
     2: Separate certificate for each IIS site
     3: Separate certificate for each registerable domain (e.g. *.example.com)
     4: Single certificate
     C: Abort
    
     Would you like to split this source into multiple certificates?:4
  12. dns Validierung durch drücken der Taste 6 auswählen
     The ACME server will need to verify that you are the owner of the domain
     names that you are requesting the certificate for. This happens both during
     initial setup *and* for every future renewal. There are two main methods of
     doing so: answering specific http requests (http-01) or create specific dns
     records (dns-01). For wildcard identifiers the latter is the only option.
     Various additional plugins are available from
     https://github.com/simple-acme/simple-acme/.
    
      1: [http] Let simple-acme answer HTTP validation request
      2: [http] Save verification files on (network) path
      3: [http] Upload verification files via FTP(S)
      4: [http] Upload verification files via SSH-FTP
      5: [http] Upload verification files via WebDav
      6: [dns] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
      7: [tls-alpn] Let simple-acme answer TLS validation request
      8: [any] Certificate(s) are pre-authorized outside of simple-acme
      9: [any] Perform validation challenge manually (auto-renew not possible)
     10: [any] Perform validation challenge with your own script
     C: Abort
    
     How would you like prove ownership for the domain(s)?: 6
  13. Enter drücken um den ACME-DNS Dienst zu bestätigen
     Description:        Root URI of the acme-dns service
     Argument:           https://acme-dns.it.tum.de (press <Enter> to use this)
    
     AcmeDnsServer:
  14. Sofern Sie Zugang zum  Webdns haben, legen Sie bitte folgenden CNAME Eintrag an: 
     Creating new acme-dns registration for domain my-internal-server.it.tum.de
    
     Domain:             my-internal-server.it.tum.de
     Record:             _acme-challenge.my-internal-server.it.tum.de
     Type:               CNAME
     Content:            c905bc21-368e-4aa8-b838-707a32b9ae7b.acme-dns.it.tum.de.
     Note:               Some DNS control panels add the final dot automatically.
                         Only one is required.
    
     Please press <Enter> after you've created and verified the record



    Wenn Sie keinen Zugang zum Webdns haben wenden Sie sich an Ihren Domain Admin um den Eintrag (exemplarisches Beispiel oben) anlegen zu lassen
  15. Drücken Sie Enter um die Erstellung uns Validierung des Zertifikates durchzuführen (nachdem der DNS Eintrag erstellt wurde!)
  16. Generate an EC public/private key pair durch drücken der Taste 1 auswählen
     Verification of acme-dns configuration succesful.
    
     After ownership of the domain(s) has been proven, we will create a
     Certificate Signing Request (CSR) to obtain the actual certificate. The CSR
     determines properties of the certificate like which (type of) key to use. If
     you are not sure what to pick here, RSA is the safe default.
    
     1: Generate an EC public/private key pair
     2: Generate an RSA public/private key pair
     C: Abort
    
     What kind of private key should be used for the certificate?: 1 
  17. Speichern Sie das Zertifikat im Windows Certificate Store durch drücken der Taste 2
     When we have the certificate, you can store in one or more ways to make it
     accessible to your applications. The Windows Certificate Store is the default
     location for IIS (unless you are managing a cluster of them).
    
     1: Add to IIS Central Certificate Store
     2: Add to Windows Certificate Store (Local Computer)
     3: Create P7B archive file (no private key!)
     4: Create PEM encoded files (for Apache, nginx, etc.)
     5: Create PFX/PKCS12 archive file
     6: No (additional) store steps
    
     How would you like to store the certificate?: 2
  18. Default Store auswählen durch drücken der Taste 2
     1: [My] - General computer store (for Exchange/RDS)
     2: [Default] - Use global default, currently My
    
     Choose store to use, or type the name of another unlisted store: 2
  19. No (additional) store steps durch drücken der Taste 6 wählen
     1: [My] - General computer store (for Exchange/RDS)
     2: [Default] - Use global default, currently My
    
     Choose store to use, or type the name of another unlisted store: 2
  20. Optional falls Sie ein Zertifikat für den Windows Remote Desktop Zugang erstellen wollen: speichern Sie folgendes Skript unter C:\simple-acme\Scripts\ImportRDP.ps1
    Param(
        [Parameter(Position=0,Mandatory=$True)]
        [string]$SSLCertificateSHA1Hash
    )
    
    
    $tsgs = Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
    Set-WmiInstance -path $tsgs.__path -argument @{SSLCertificateSHA1Hash=$SSLCertificateSHA1Hash}
    
    
    Sie konnen die Datei auch hier herunterladen ImportRDP.ps1

  21. Optional falls Sie ein Zertifikat für den Windows Remote Desktop Zugang erstellen wollen: Start external scripts or program durch drücken der Taste 2 auswählen
     Installation plugin Manage IIS bindings not available: Unsupported version of IIS detected.
    
     With the certificate saved to the store(s) of your choice, you may choose one
     or more steps to update your applications, e.g. to configure the new
     thumbprint, or to update bindings.
    
     1: Create or update bindings in IIS
     2: Start external script or program
     3: No (additional) installation steps
    
     Which installation step should run first?: 2
  22. Optional falls Sie ein Zertifikat für den Windows Remote Desktop Zugang erstellen wollen: geben Sie den Pfad und das Skript zum an
     Description:        Path to script file to run after retrieving the
                         certificate. This may be any executable file or a
                         Powershell (.ps1) script.
    
     File: .\Scripts\ImportRDP.ps1
  23. Optional falls Sie ein Zertifikat für den Windows Remote Desktop Zugang erstellen wollen: geben Sie den Aufrufparameter CertThumbprint als Parameter für das Script an
     {CertCommonName}:   Common name (primary domain name)
     {CachePassword}:    .pfx password
     {CacheFile}:        .pfx full path
     {CertFriendlyName}: Certificate friendly name
     {CertThumbprint}:   Certificate thumbprint
     {StoreType}:        Type of store (e.g. CertificateStore, PfxFile, ...)
     {StorePath}:        Path to the store
     {RenewalId}:        Renewal identifier
     {OldCertCommonName}: Common name (primary domain name) of the previously
                          issued certificate
     {OldCertFriendlyName}: Friendly name of the previously issued certificate
     {OldCertThumbprint}: Thumbprint of the previously issued certificate
     {vault://json/key}: Secret from the vault
    
     Description:        Parameters for the script to run after retrieving the
                         certificate. Refer to
                         https://simple-acme.com/reference/plugins/installation/script
                         for further instructions.
    
     Arguments: {CertThumbprint}


  24. wählen Sie No (additional) installation steps durch drücken der Taste 3
     1: Create or update bindings in IIS
     2: Start external script or program
     3: No (additional) installation steps
    
     Add another installation step?: 3
  25. wählen Sie unspecified durch drücken der Taste 1
     1: Unspecified (fallback to default in setting)
     2: classic: https://letsencrypt.org/docs/profiles#classic
     3: shortlived: https://letsencrypt.org/docs/profiles#shortlived (not yet generally available)
     4: tlsclient: https://letsencrypt.org/docs/profiles#tlsclient
     5: tlsserver: https://letsencrypt.org/docs/profiles#tlsserver
    
     Certificate profile to use: 1
  26. Lesen und Akzeptieren Sie die Servicebedingungen
     Terms of service:   C:\ProgramData\simple-acme\acme-v02.api.letsencrypt.org\LE-SA-v1.6-August-18-2025.pdf
    
     Open in default application? (y/n*) - yes
    
     Do you agree with the terms? (y*/n) - yes
    
     Enter email(s) for notifications about problems and abuse (comma-separated): <Enter>
  27. warten Sie bis die Erstellung und Validierung durchgeführt wurde
     Plugin Manual input generated source my-internal-server.it.tum.de with 1 identifiers
     Plugin Single created 1 order
     [my-internal-server.it.tum.de] Authorizing...
     [my-internal-server.it.tum.de] Authorizing using dns-01 validation (acme-dns)
     Verification of acme-dns configuration succesful.
     [my-internal-server.it.tum.de] Record tpvTzqGjMx_rqGZz7VG7834dCEuYpnvWi1mIuH_l7Ug successfully created
     [my-internal-server.it.tum.de] Preliminary validation succeeded
     Waiting 30 seconds for global DNS propagation...
     [my-internal-server.it.tum.de] Authorization result: valid
     [my-internal-server.it.tum.de] Record tpvTzqGjMx_rqGZz7VG7834dCEuYpnvWi1mIuH_l7Ug deleted
     Downloading certificate [Manual] my-internal-server.it.tum.de
     Store with Windows Certificate Store...
     Installing certificate in the certificate store
     Unable to save using CryptoAPI, retrying with CNG...
     Adding certificate [Manual] my-internal-server.it.tum.de @ 2025.11.18 in store My
     Adding certificate CN=E8, O=Let's Encrypt, C=US in store CA
     Add FullControl rights for VORDEFINIERT\Administratoren
     Installing with Custom script...
     Script .\Scripts\ImportRDP.ps1 starting with parameters 424C111E55DE69C9DDB31CCDE1B5D203D6E5F5C0
     Script finished
     Adding Task Scheduler entry with the following settings
     - Name simple-acme renew (acme-v02.api.letsencrypt.org)
     - Path C:\simple-acme
     - Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
     - Start at 09:00:00
     - Random delay 04:00:00
     - Time limit 02:00:00
    
    
  28. beantworten Sie die Frage nach dem user mit no
     Do you want to specify the user the task will run as? (y/n*) - no
    
    
  29. Fertig. Die können das Programm mit drücken der Taste q beenden
     N: Create certificate (default settings)
     M: Create certificate (full options)
     R: Run renewals (0 currently due)
     A: Manage renewals (1 total)
     O: More options...
     Q: Quit
    
     Please choose from the menu: q

Weitere Links für Plugins zu ACME-DNS




  • Keine Stichwörter