Kategorie:OPNsense/Zertifikatsverwaltung: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Opnsense“ durch „OPNsense“
Markierung: Manuelle Zurücksetzung
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Zertifikatsverwaltung =
'''topic''' - Kurzbeschreibung
== Beschreibung ==
== Installation ==
== Anwendungen ==
=== Problembehebung ===
== Aufruf ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Konfiguration ==
=== Dateien ===
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Page ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt ===
=== Weblinks ===


== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
= TMP =
Mit dem Let's-Encrypt-Plugin können Sie für Ihre Webdienste kostenlos gültige X.509-Zertifikate von der Zertifizierungsstelle Let's Encrypt generieren. Dies ermöglicht eine verschlüsselte Nutzung Ihrer Webdienste über https ohne Zertifikatswarnungen. Auch für verschlüsselte ldap-Anfragen an den Samba-Server können Let's-Encrypt-Zertifikate eingesetzt werden.
Mit dem Let's-Encrypt-Plugin können Sie für Ihre Webdienste kostenlos gültige X.509-Zertifikate von der Zertifizierungsstelle Let's Encrypt generieren. Dies ermöglicht eine verschlüsselte Nutzung Ihrer Webdienste über https ohne Zertifikatswarnungen. Auch für verschlüsselte ldap-Anfragen an den Samba-Server können Let's-Encrypt-Zertifikate eingesetzt werden.


Zeile 6: Zeile 51:


Das Plugin muss zunächst über die Firmwareverwaltung installiert werden:
Das Plugin muss zunächst über die Firmwareverwaltung installiert werden:
{| style="border-spacing:0;width:9.708cm;"
{| style="border-spacing:0;width:9.708cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| System / Firmware / Plugins / os-acme-client → Install
|| System / Firmware / Plugins / os-acme-client → Install
|-
|-
|}
|}
=== Grundkonfiguration ===


== Grundkonfiguration ==
{| style="border-spacing:0;width:12.278cm;"
{| style="border-spacing:0;width:12.278cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 24: Zeile 64:
* Let's Encrypt Environment: Production Environment [default]  
* Let's Encrypt Environment: Production Environment [default]  
* Haken bei HAProxy Integration  
* Haken bei HAProxy Integration  
|-
|-
|}
|}
=== Anlage eines Let's-Encrypt-Kontos ===
=== Anlage eines Let's-Encrypt-Kontos ===
{| style="border-spacing:0;width:17cm;"
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Accounts → Add* Haken bei: enabled  
|| Services / Let's Encrypt / Accounts → Add* Haken bei: enabled  
* Name: z. B. lets-encrypt-production  
* Name: z.&nbsp;B.&nbsp; lets-encrypt-production  
* E-Mail-Address: <an diese E-Mail-Adresse gelangen ihre Zertifikate betreffende Informationen wie z. B. Warnungen bei Ablauf der Gültigkeit>  
* E-Mail-Address: <an diese E-Mail-Adresse gelangen ihre Zertifikate betreffende Informationen wie z.&nbsp;B.&nbsp; Warnungen bei Ablauf der Gültigkeit>  
 
 
 
 
|-
|-
|}
|}
=== Anlage einer Validierungsmethode ===
=== Anlage einer Validierungsmethode ===
{| style="border-spacing:0;width:15.408cm;"
{| style="border-spacing:0;width:15.408cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Validadtion Methods → Add* Haken bei: enabled  
|| Services / Let's Encrypt / Validadtion Methods → Add* Haken bei: enabled  
* Name: z. B. http-01  
* Name: z.&nbsp;B.&nbsp; http-01  
* Challenge Type: HTTP-01  
* Challenge Type: HTTP-01  
* HTTP-01  
* HTTP-01  
Zeile 57: Zeile 87:
** Haken bei: Enable Auto-Configuration  
** Haken bei: Enable Auto-Configuration  
** HAProxy Frontends: http_lan_wan  
** HAProxy Frontends: http_lan_wan  
|-
|-
|}
|}
=== Anlage von Zertifikaten ===
=== Anlage von Zertifikaten ===
Richten Sie für jeden Ihrer Webdienste - auch für jene, die nur innerhalb des Schulhauses erreichbar sein sollen - ein Zertifikat ein.
Richten Sie für jeden Ihrer Webdienste - auch für jene, die nur innerhalb des Schulhauses erreichbar sein sollen - ein Zertifikat ein.


Beispiel für den Webdienst Nextcloud:
Beispiel für den Webdienst Nextcloud:
{| style="border-spacing:0;width:17cm;"
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Certificates → Add* Haken bei: enabled  
|| Services / Let's Encrypt / Certificates → Add* Haken bei: enabled  
* Common Name: nextcloud.ihre-schule.de  
* Common Name: nextcloud.ihre-schule.de  
* Alt Names: z. B. www.nextcloud.ihre-schule.de (damit der Dienst auch mit vorangestelltem www erreichbar ist)  
* Alt Names: z.&nbsp;B.&nbsp; www.nextcloud.ihre-schule.de (damit der Dienst auch mit vorangestelltem www erreichbar ist)  
* LE Account: z. B. lets-encrypt-production  
* LE Account: z.&nbsp;B.&nbsp; lets-encrypt-production  
* Validation Method: http-01  
* Validation Method: http-01  
* Haken bei: Auto Renewal  
* Haken bei: Auto Renewal  
* Renewal Interval: 60  
* Renewal Interval: 60  
|-
|-
|}
|}
== Den HAProxy für die Verwendung von Let's Encrypt konfigurieren ==
== Den HAProxy für die Verwendung von Let's Encrypt konfigurieren ==
Durch die Angaben unter Settings und bei der Validierungsmethode http-01 hat das Let's-Encrypt-Plugin entsprechende Eintragungen im HAProxy vorgenommen. Überprüfen Sie deren Anwesenheit:
Durch die Angaben unter Settings und bei der Validierungsmethode http-01 hat das Let's-Encrypt-Plugin entsprechende Eintragungen im HAProxy vorgenommen. Überprüfen Sie deren Anwesenheit:
{| style="border-spacing:0;width:15.937cm;"
{| style="border-spacing:0;width:15.937cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 106: Zeile 124:
** Execute function: Use specified Backend Pool  
** Execute function: Use specified Backend Pool  
** Use backend pool: acme_challenge_backend  
** Use backend pool: acme_challenge_backend  
|-
|-
|}
|}
Stellen Sie sicher, dass im Public Service http_lan_wan die Regel redirect_acme_challenges an erster Stelle auftaucht. Sie können die Reihenfolge per Drag & Drop ändern:
Stellen Sie sicher, dass im Public Service http_lan_wan die Regel redirect_acme_challenges an erster Stelle auftaucht. Sie können die Reihenfolge per Drag & Drop ändern:
{| style="border-spacing:0;width:13.093cm;"
{| style="border-spacing:0;width:13.093cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Public Services → http_lan_wan* Select Rules: redirect_acme_challenges (vor allen anderen Regeln)  
|| HAProxy / Settings / Virtual Services / Public Services → http_lan_wan* Select Rules: redirect_acme_challenges (vor allen anderen Regeln)  
|-
|-
|}
|}
== Zertifikate generieren ==
== Zertifikate generieren ==
Nachdem der HAProxy für die ACME-Challenge-Anfragen konfiguriert ist, können nun die Zertifikate generiert werden:
Nachdem der HAProxy für die ACME-Challenge-Anfragen konfiguriert ist, können nun die Zertifikate generiert werden:
{| style="border-spacing:0;width:17cm;"
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 134: Zeile 141:
|-
|-
|}
|}
Ob das Generieren der Zertifikate funktioniert hat, kann unter Services / Let's Encrypt / Log File nachverfolgt werden. Suchen Sie bei Problemen nach dem Schlagwort "error".
Ob das Generieren der Zertifikate funktioniert hat, kann unter Services / Let's Encrypt / Log File nachverfolgt werden. Suchen Sie bei Problemen nach dem Schlagwort "error".


== Zertifikate im HAProxy hinterlegen ==
== Zertifikate im HAProxy hinterlegen ==
Damit der HAProxy die mit Let's Encrypt generierten Zertifikate nun bei https-Anfragen bereitstellt, müssen diese bei den entsprechenden Public-Services hinterlegt werden:
Damit der HAProxy die mit Let's Encrypt generierten Zertifikate nun bei https-Anfragen bereitstellt, müssen diese bei den entsprechenden Public-Services hinterlegt werden:
{| style="border-spacing:0;width:17cm;"
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Public Services / https_lan (Dienst für ausschließlich interne https-Anfragen)* SSL Offloading / Certificates: z. B. fog.ihre-schule.de, usermanagement.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)  
|| Services / HAProxy / Settings / Virtual Services / Public Services / https_lan (Dienst für ausschließlich interne https-Anfragen)* SSL Offloading / Certificates: z.&nbsp;B.&nbsp; fog.ihre-schule.de, usermanagement.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)  
 
 
 
Services / HAProxy / Settings / Virtual Services / Public Services / https_lan_wan (Dienst für interne und externe https-Anfragen)* SSL Offloading / Certificates: z. B. nextcloud.ihre-schule.de, collabora.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)
 
 
 


Services / HAProxy / Settings / Virtual Services / Public Services / https_lan_wan (Dienst für interne und externe https-Anfragen)* SSL Offloading / Certificates: z.&nbsp;B.&nbsp; nextcloud.ihre-schule.de, collabora.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)
|-
|-
|}
|}
== Besonderheit: Zertifikat für verschlüsselte ldap-Anfragen an den Samba-Server ==
== Besonderheit: Zertifikat für verschlüsselte ldap-Anfragen an den Samba-Server ==
Da der HAProxy die ldap-Anfragen nicht verarbeiten kann, wird der betroffene Port 636 für Anfragen von außen über eine NAT-Regel an den Samba-Server weitergeleitet:
Da der HAProxy die ldap-Anfragen nicht verarbeiten kann, wird der betroffene Port 636 für Anfragen von außen über eine NAT-Regel an den Samba-Server weitergeleitet:
{| style="border-spacing:0;width:10.888cm;"
{| style="border-spacing:0;width:10.888cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 167: Zeile 164:
* Redirect Target Port: 636  
* Redirect Target Port: 636  
* Description: samba-ldap  
* Description: samba-ldap  
|-
|-
|}
|}
Die Zertifikatsgenerierung für ldap.ihre-schule.de soll aber trotzdem über das Let's-Encrypt-Plugin nach obigen Beispiel erfolgen.
Die Zertifikatsgenerierung für ldap.ihre-schule.de soll aber trotzdem über das Let's-Encrypt-Plugin nach obigen Beispiel erfolgen.


Zeile 178: Zeile 172:


=== SSH-Kommunikation zwischen Samba-Server und OPNsense vorbereiten ===
=== SSH-Kommunikation zwischen Samba-Server und OPNsense vorbereiten ===
Siehe hierzu die [https://schulnetzkonzept.de/samba Beschreibung zum Samba-Server].
Siehe hierzu die [https://schulnetzkonzept.de/samba Beschreibung zum Samba-Server].


=== Skript zum Kopieren der Zertifikate ===
=== Skript zum Kopieren der Zertifikate ===
* Damit nach einer Erneuerung des Zertifikats von ldap.ihre-schule.de durch das Let's-Encrypt-Plugin dieses auf dem LDAP-Server landet, ist ein Skript erforderlich, welches die Dateien von OPNsense auf den LDAP-Server kopiert, entsprechende Dateiberechtigungen setzt und den Domänen-Controller neu startet.
* Dieses Skript wird in OPNsense so hinterlegt, dass es später an entsprechender Stelle in der Webmin-Oberfläche ausgewählt werden kann.
* Achten Sie bei der Verwendung der nachfolgenden Datei auf die Verwendung der richtigen IP-Adresse und Pfade.


Damit nach einer Erneuerung des Zertifikats von ldap.ihre-schule.de durch das Let's-Encrypt-Plugin dieses auf dem LDAP-Server landet, ist ein Skript erforderlich, welches die Dateien von OPNsense auf den LDAP-Server kopiert, entsprechende Dateiberechtigungen setzt und den Domänen-Controller neu startet.
vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf
 
Dieses Skript wird in OPNsense so hinterlegt, dass es später an entsprechender Stelle in der Webmin-Oberfläche ausgewählt werden kann.
 
Achten Sie bei der Verwendung der nachfolgenden Datei auf die Verwendung der richtigen IP-Adresse und Pfade.
 
vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf


====== Datei vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf ======
====== Datei vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf ======
 
[ldap-upload-certs]
[ldap-upload-certs]
command:scp -i /root/.ssh/id_rsa_samba /var/etc/acme-client/home/ldap.ihre-schule.de/* root@10.1.100.7:/etc/samba/tls
command:scp -i /root/.ssh/id_rsa_samba /var/etc/acme-client/home/ldap.ihre-schule.de/* root@10.1.100.7:/etc/samba/tls
parameters:
parameters:
type:script
type:script
message:copy certificates to ldap-server
message:copy certificates to ldap-server
description:LDAP-Server - Copy Certificates
description:LDAP-Server - Copy Certificates
 
[ldap-restart-dc]
[ldap-restart-dc]
command:ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7 "chmod -R 0600 /etc/samba/tls && service samba-ad-dc restart"
command:ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7 "chmod -R 0600 /etc/samba/tls && service samba-ad-dc restart"
parameters:
parameters:
type:script
type:script
message:restarting ldap-server-dc
message:restarting ldap-server-dc
description:LDAP-Server - Restart DC
description:LDAP-Server - Restart DC


Damit das Skript im System zur Verfügung steht muss der Dienst configd neu gestartet werden:
Damit das Skript im System zur Verfügung steht muss der Dienst configd neu gestartet werden:
 
service configd restart
service configd restart


== Skript beim Let's-Encrypt-Zertifikat hinterlegen ==
== Skript beim Let's-Encrypt-Zertifikat hinterlegen ==
Zunächst müssen die beiden Aktionen des Skriptes als Automatisierungsaufgaben im Let's-Encrypt-Plugin definiert werden:
Zunächst müssen die beiden Aktionen des Skriptes als Automatisierungsaufgaben im Let's-Encrypt-Plugin definiert werden:
{| style="border-spacing:0;width:11.991cm;"
{| style="border-spacing:0;width:11.991cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 228: Zeile 213:
** Run Command: System or Plugin Command  
** Run Command: System or Plugin Command  
** System Command: LDAP-Server - Restart DC  
** System Command: LDAP-Server - Restart DC  
|-
|-
|}
|}
Anschließend werden die beiden Automatisierungsaufgaben dem Zertifikat ldap.ihre-schule.de zugeordnet.
Anschließend werden die beiden Automatisierungsaufgaben dem Zertifikat ldap.ihre-schule.de zugeordnet.
{| style="border-spacing:0;width:11.486cm;"
{| style="border-spacing:0;width:11.486cm;"
|- style="border:none;padding:0.049cm;"
|- style="border:none;padding:0.049cm;"
Zeile 242: Zeile 222:
** 1. Aufgabe: LDAP-Server - Copy Certificates  
** 1. Aufgabe: LDAP-Server - Copy Certificates  
** 2. Aufgabe: LDAP-Server - Restart DC  
** 2. Aufgabe: LDAP-Server - Restart DC  
|-
|}
Somit werden nach Erneuerung des Zertifikats für ldap.ihre-schule.de automatisch die Zertifikatsdateien auf den LDAP-Server kopiert und anschließend der DC-Dienst neu gestartet.= Installation und Konfiguration des OpenVPN-Servers =
== Grundinstallation ==
Mithilfe des OpenVPN-Servers können Sie z. B. als Administrator von außen auf das interne Netzwerk zugreifen.
Für die Einrichtung des OpenVPN-Servers steht ein Wizard zur Verfügung, der auch die notwendigen Firewall-Einstellungen hinterlegt:
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Servers → Use a wizard to to setup a new server* Type of Server: Local User Access
* Certificate Authority → Add new CA
** Descripive Name: z. B. schulnetz.intra-ca
** Country Code: z. B. DE
** entsprechende Einträge für: State or Province, City, Organization, und Email→ Add new CA
* Choose a Server Certificate → Add new Certificate
** Descriptive name: z. B. schulnetz.intra
** Country Code: z. B. DE
** entsprechende Einträge für: State or Province, City, Organization, und Email→ Button: Add Certificate
* General OpenVPN Server Information
** Interface: WAN
** Protocol: UDP
** Local Port: 1194
* Tunnel Settings
** IPv4 Tunnel Network: 10.0.8.0/24 (ein anderes Netz als Ihr Schulnetz)
** IPv4 Local Network: z. B. 10.1.0.0/20,10.1.100.0/24,10.1.254.0/24 (für Administratoren alle drei internen Subnetze - bei Bedarf ggf. anpassen)
* Traffic from clients to server
** Haken bei Firewall Rule
* Traffic from clients through VPN
** Haken bei OpenVPN Rule
|-
|}
== Anlegen einer VPN-Gruppe ==
Durch Anlage einer Gruppe für den VPN-Zugriff, kann man folgende Festlegungen tätigen:* Berechtigung für die VPN-Einwahl nur für Mitglieder der Gruppe
* Beschränkung der OPNsense-Web-Oberfläche für die Gruppenmitglieder, sodass zugehörige Benutzer lediglich ihr eigenes Passwort ändern können
{| style="border-spacing:0;width:16.279cm;"
|- style="border:none;padding:0.049cm;"
|| System / Access / Groups → Add* Group name: openvpnusers → Save
* Gruppe openvpnusers erneut bearbeiten
** Assigned Privileges → Add: Haken bei GUI System: User Password Manager
|-
|}
== Anlegen von VPN-Benutzern ==
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| System / Access / Users → Add* Username: <gewünschter Benutzername>
* Password: <gewünschtes Passwort>
* Full Name: <Vollständiger Name>
* Group membership: openvpnusers
* Certificate: Haken bei: Click to create a user certificate → Save
** Method: Create an internal Certificate
** Descriptive name: <geben Sie hier den gleichen Namen an wie oben bei Username>
** Certificate authority: <geben Sie hier die gleiche Zertifizierungsstelle an wie bei der Einrichtung des OpenVPN-Servers - z. B. schulnetz.intra>
|-
|}
== Export der VPN-Zugangsdaten für angelegte User ==
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Client Export* Hostname: IP oder Dyndns-Adresse
* Haken bei Use random local Port, damit sich mehrere Clients gleichzeitig verbinden können
|-
|}
Unterhalb der Einstellungsmöglichkeiten können für angelegte Benutzer deren individuellen Zugangsdaten heruntergeladen werden. Ggf. wählen Sie hierzu bei Export Type eine passende Downloadmöglichkeit.
== Client-Installationsdateien und Konfigurationsdateien ausgeben ==
Nach Anlage eines VPN-Users können Sie diesem für sein System (z. B. Windows, Mac, ...) personalisierte Dateien für Installation und Konfiguration des OpenVPN-Clients aushändigen:
{| style="border-spacing:0;width:10.659cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Client Export
→ OpenVPN Clients→ Wahl der gewünschten Dateien des entsprechenden Users
|-
|-
|}
|}
Somit werden nach Erneuerung des Zertifikats für ldap.ihre-schule.de automatisch die Zertifikatsdateien auf den LDAP-Server kopiert und anschließend der DC-Dienst neu gestartet.


[[Kategorie:OPNsense]]
[[Kategorie:OPNsense/Dienste]]

Aktuelle Version vom 12. November 2024, 19:38 Uhr

topic - Kurzbeschreibung

Beschreibung

Installation

Anwendungen

Problembehebung

Aufruf

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Page

Info-Pages

Siehe auch

Links

Projekt

Weblinks

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5


TMP

Mit dem Let's-Encrypt-Plugin können Sie für Ihre Webdienste kostenlos gültige X.509-Zertifikate von der Zertifizierungsstelle Let's Encrypt generieren. Dies ermöglicht eine verschlüsselte Nutzung Ihrer Webdienste über https ohne Zertifikatswarnungen. Auch für verschlüsselte ldap-Anfragen an den Samba-Server können Let's-Encrypt-Zertifikate eingesetzt werden.

Installation und Konfiguration des acme-Plugins

Das Plugin muss zunächst über die Firmwareverwaltung installiert werden:

System / Firmware / Plugins / os-acme-client → Install

Grundkonfiguration

Services / Let's Encrypt / Settings* Haken bei: Enable Plugin
  • Haken bei: Auto Renewal
  • Let's Encrypt Environment: Production Environment [default]
  • Haken bei HAProxy Integration

Anlage eines Let's-Encrypt-Kontos

Services / Let's Encrypt / Accounts → Add* Haken bei: enabled
  • Name: z. B.  lets-encrypt-production
  • E-Mail-Address: <an diese E-Mail-Adresse gelangen ihre Zertifikate betreffende Informationen wie z. B.  Warnungen bei Ablauf der Gültigkeit>

Anlage einer Validierungsmethode

Services / Let's Encrypt / Validadtion Methods → Add* Haken bei: enabled
  • Name: z. B.  http-01
  • Challenge Type: HTTP-01
  • HTTP-01
    • HTTP Service: HAProxy HTTP Frontend Integration (OPNsense plugin)
  • HAProxy
    • Haken bei: Enable Auto-Configuration
    • HAProxy Frontends: http_lan_wan

Anlage von Zertifikaten

Richten Sie für jeden Ihrer Webdienste - auch für jene, die nur innerhalb des Schulhauses erreichbar sein sollen - ein Zertifikat ein.

Beispiel für den Webdienst Nextcloud:

Services / Let's Encrypt / Certificates → Add* Haken bei: enabled
  • Common Name: nextcloud.ihre-schule.de
  • Alt Names: z. B.  www.nextcloud.ihre-schule.de (damit der Dienst auch mit vorangestelltem www erreichbar ist)
  • LE Account: z. B.  lets-encrypt-production
  • Validation Method: http-01
  • Haken bei: Auto Renewal
  • Renewal Interval: 60

Den HAProxy für die Verwendung von Let's Encrypt konfigurieren

Durch die Angaben unter Settings und bei der Validierungsmethode http-01 hat das Let's-Encrypt-Plugin entsprechende Eintragungen im HAProxy vorgenommen. Überprüfen Sie deren Anwesenheit:

* HAProxy / Settings / Real Servers → acme_challenge_host
    • Server Address: 127.0.0.1
    • Server Port: 43580
  • HAProxy / Settings / Virtual Services / Backend Pools → acme_challenge_backend
    • Server: acme_challenge_host
  • HAProxy / Settings / Rules & Checks / Conditions → find_acme_challenge
    • Condition Type: Path starts with
    • Path Prefix: /.well-known/acme-challenge/
  • HAProxy / Settings / Rules & Checks / Rules → redirect_acme_challenges
    • Test type: IF
    • Select conditions: find_acme_challenge
    • Logical Operator: AND
    • Execute function: Use specified Backend Pool
    • Use backend pool: acme_challenge_backend

Stellen Sie sicher, dass im Public Service http_lan_wan die Regel redirect_acme_challenges an erster Stelle auftaucht. Sie können die Reihenfolge per Drag & Drop ändern:

HAProxy / Settings / Virtual Services / Public Services → http_lan_wan* Select Rules: redirect_acme_challenges (vor allen anderen Regeln)

Zertifikate generieren

Nachdem der HAProxy für die ACME-Challenge-Anfragen konfiguriert ist, können nun die Zertifikate generiert werden:

Services / Let's Encrypt / Certificates → Issue/Renew Certificates Now (bzw. Klick auf das Neu-Laden-Symbol neben jedem Zertifikat)

Ob das Generieren der Zertifikate funktioniert hat, kann unter Services / Let's Encrypt / Log File nachverfolgt werden. Suchen Sie bei Problemen nach dem Schlagwort "error".

Zertifikate im HAProxy hinterlegen

Damit der HAProxy die mit Let's Encrypt generierten Zertifikate nun bei https-Anfragen bereitstellt, müssen diese bei den entsprechenden Public-Services hinterlegt werden:

Services / HAProxy / Settings / Virtual Services / Public Services / https_lan (Dienst für ausschließlich interne https-Anfragen)* SSL Offloading / Certificates: z. B.  fog.ihre-schule.de, usermanagement.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)

Services / HAProxy / Settings / Virtual Services / Public Services / https_lan_wan (Dienst für interne und externe https-Anfragen)* SSL Offloading / Certificates: z. B.  nextcloud.ihre-schule.de, collabora.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)

Besonderheit: Zertifikat für verschlüsselte ldap-Anfragen an den Samba-Server

Da der HAProxy die ldap-Anfragen nicht verarbeiten kann, wird der betroffene Port 636 für Anfragen von außen über eine NAT-Regel an den Samba-Server weitergeleitet:

Firewall / NAT / Port Forward→ Add* Interface: WAN
  • Protocol: TCP/UDP
  • Desintation: WAN Adress From Port 636 To Port 636
  • Redirect Target IP: 10.1.100.7 (IP Samba-Server)
  • Redirect Target Port: 636
  • Description: samba-ldap

Die Zertifikatsgenerierung für ldap.ihre-schule.de soll aber trotzdem über das Let's-Encrypt-Plugin nach obigen Beispiel erfolgen.

Da der HAProxy die ldap-Anfragen aber nicht entgegennimmt, muss der Samba-Server selbst die Zertifikatsinformationen erhalten und ausgeben. Nachdem das Let's-Encrypt-Plugin das Zertifikat für ldap.ihre-schule.de generiert bzw. erneuert hat, soll es die Zertifikatsdateien also auf den Samba-Server kopieren. Hierzu sind die nachfolgenden Schritte erforderlich:

SSH-Kommunikation zwischen Samba-Server und OPNsense vorbereiten

Siehe hierzu die Beschreibung zum Samba-Server.

Skript zum Kopieren der Zertifikate

  • Damit nach einer Erneuerung des Zertifikats von ldap.ihre-schule.de durch das Let's-Encrypt-Plugin dieses auf dem LDAP-Server landet, ist ein Skript erforderlich, welches die Dateien von OPNsense auf den LDAP-Server kopiert, entsprechende Dateiberechtigungen setzt und den Domänen-Controller neu startet.
  • Dieses Skript wird in OPNsense so hinterlegt, dass es später an entsprechender Stelle in der Webmin-Oberfläche ausgewählt werden kann.
  • Achten Sie bei der Verwendung der nachfolgenden Datei auf die Verwendung der richtigen IP-Adresse und Pfade.
vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf
Datei vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf
[ldap-upload-certs]
command:scp -i /root/.ssh/id_rsa_samba /var/etc/acme-client/home/ldap.ihre-schule.de/* root@10.1.100.7:/etc/samba/tls
parameters:
type:script
message:copy certificates to ldap-server
description:LDAP-Server - Copy Certificates

[ldap-restart-dc]
command:ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7 "chmod -R 0600 /etc/samba/tls && service samba-ad-dc restart"
parameters:
type:script
message:restarting ldap-server-dc
description:LDAP-Server - Restart DC

Damit das Skript im System zur Verfügung steht muss der Dienst configd neu gestartet werden:

service configd restart

Skript beim Let's-Encrypt-Zertifikat hinterlegen

Zunächst müssen die beiden Aktionen des Skriptes als Automatisierungsaufgaben im Let's-Encrypt-Plugin definiert werden:

Services / Let's Encrypt / Automation → Add* 1. Automatisierungsaufgabe
    • Haken bei: enabled
    • Name: LDAP-Server - Copy Certificates
    • Run Command: System or Plugin Command
    • System Command: LDAP-Server - Copy Certificates
  • 2. Automatisierungsaufgabe
    • Haken bei: enabled
    • Name: LDAP-Server - Restart DC
    • Run Command: System or Plugin Command
    • System Command: LDAP-Server - Restart DC

Anschließend werden die beiden Automatisierungsaufgaben dem Zertifikat ldap.ihre-schule.de zugeordnet.

Services / Let's Encrypt / Certificates / ldap.ihre-schule.de → edit* Automations (Achtung: Reihenfolge einhalten!)
    • 1. Aufgabe: LDAP-Server - Copy Certificates
    • 2. Aufgabe: LDAP-Server - Restart DC

Somit werden nach Erneuerung des Zertifikats für ldap.ihre-schule.de automatisch die Zertifikatsdateien auf den LDAP-Server kopiert und anschließend der DC-Dienst neu gestartet.

Diese Kategorie enthält zurzeit keine Seiten oder Medien.