<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Let%27s_Encrypt_Zertifikatskette_%28Generation_Y%29_in_OPNsense</id>
	<title>Let&#039;s Encrypt Zertifikatskette (Generation Y) in OPNsense - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Let%27s_Encrypt_Zertifikatskette_%28Generation_Y%29_in_OPNsense"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Let%27s_Encrypt_Zertifikatskette_(Generation_Y)_in_OPNsense&amp;action=history"/>
	<updated>2026-11-03T01:18:45Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Let%27s_Encrypt_Zertifikatskette_(Generation_Y)_in_OPNsense&amp;diff=74103&amp;oldid=prev</id>
		<title>Thomas.will am 2. November 2026 um 17:05 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Let%27s_Encrypt_Zertifikatskette_(Generation_Y)_in_OPNsense&amp;diff=74103&amp;oldid=prev"/>
		<updated>2026-11-02T17:05:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 2. November 2026, 17:05 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Zeile 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ein Wildcard-Zertifikat von Let&amp;#039;s Encrypt (*.it2XX.xinmen.de) soll in eine OPNsense importiert werden.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ein Wildcard-Zertifikat von Let&amp;#039;s Encrypt (*.it2XX.xinmen.de) soll in eine OPNsense importiert werden.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dabei treten zwei Effekte auf:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dabei treten zwei Effekte auf:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*OPNsense &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;meldet beim &lt;/del&gt;Import der &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Datei zu viele Zertifikate&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*OPNsense &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;lehnt den &lt;/ins&gt;Import der &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fullchain.pem ab: Only a single certificate is allowed (found 7 sections)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Nach dem Import funktioniert die Web-GUI in manchen Browsern, in anderen nicht (z.B. Firefox auf Debian ja, Firefox auf Rocky nein).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Nach dem Import funktioniert die Web-GUI in manchen Browsern, in anderen nicht (z.B. Firefox auf Debian ja, Firefox auf Rocky nein).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l70&quot;&gt;Zeile 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 70:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Werden &lt;/del&gt;fullchain.pem &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;und chain&lt;/del&gt;.pem &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;versehentlich zusammen &lt;/del&gt;eingefügt, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sind das 4 + 3 &lt;/del&gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7 &lt;/del&gt;Zertifikate.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Das Feld Certificate data in OPNsense nimmt nur ein einzelnes Zertifikat an. Mit der &lt;/ins&gt;fullchain.pem &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kommt die Meldung:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Früher waren es 2 + 1 = 3&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;das fiel nicht auf&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Only a single certificate is allowed (found 7 sections)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Die Angabe 7 sections ist die interne Zählweise von OPNsense, nicht die Zahl der Zertifikate. Die Datei enthält 4.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Das ist neu seit &#039;&#039;&#039;OPNsense 26.7.8&#039;&#039;&#039; (November 2026). Vorher konnte die fullchain&lt;/ins&gt;.pem &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;direkt &lt;/ins&gt;eingefügt &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;werden.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Wegen Parsing-Problemen, die im schlimmsten Fall zu Konfigurations-Injection führen konnten&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;erlaubt OPNsense seitdem nur noch ein Zertifikat pro Eintrag.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Es treffen also zwei Änderungen zusammen: die längere Kette bei Let&#039;s Encrypt und die strengere Prüfung in OPNsense.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===Mehrere parallele Zwischenzertifikate==&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Let&#039;s Encrypt verteilt die Ausstellung zufällig auf mehrere Zwischenzertifikate (z.B. YE1 und YE2).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zwei Teilnehmer im selben Kurs können also &lt;/ins&gt;Zertifikate &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;von unterschiedlichen Intermediates bekommen&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Die beiden Cross-Signs (Root YE&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ISRG Root X2) sind für alle gleich.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;Welches Zwischenzertifikat braucht mein Zertifikat?&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*openssl x509 -in fullchain&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pem -noout -issuer&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Warum es in manchen Browsern geht und in anderen nicht==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Warum es in manchen Browsern geht und in anderen nicht==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l134&quot;&gt;Zeile 134:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 149:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-00   Leaf          *.it2XX.xinmen.de&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-00   Leaf          *.it2XX.xinmen.de&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-01   YE2 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          &lt;/del&gt;Zwischenzertifikat&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-01   &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;YE1 oder &lt;/ins&gt;YE2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;Zwischenzertifikat&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-02   Root YE       Cross-Sign von ISRG Root X2&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-02   Root YE       Cross-Sign von ISRG Root X2&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-03   ISRG Root X2  Cross-Sign von ISRG Root X1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cert-03   ISRG Root X2  Cross-Sign von ISRG Root X1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l149&quot;&gt;Zeile 149:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 164:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-03 (ISRG Root X2, Cross-Sign)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-03 (ISRG Root X2, Cross-Sign)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-02 (Root YE, Cross-Sign)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-02 (Root YE, Cross-Sign)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-01 (YE2)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*cert-01 (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;YE1 bzw. &lt;/ins&gt;YE2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- im Zweifel beide anlegen&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Zertifikat importieren===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Zertifikat importieren===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unter &amp;#039;&amp;#039;&amp;#039;System -&amp;gt; Trust -&amp;gt; Certificates&amp;#039;&amp;#039;&amp;#039; die Methode &amp;#039;&amp;#039;&amp;#039;Import an existing Certificate&amp;#039;&amp;#039;&amp;#039; wählen.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unter &amp;#039;&amp;#039;&amp;#039;System -&amp;gt; Trust -&amp;gt; Certificates&amp;#039;&amp;#039;&amp;#039; die Methode &amp;#039;&amp;#039;&amp;#039;Import an existing Certificate&amp;#039;&amp;#039;&amp;#039; wählen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Certificate data: nur cert-00 (bzw. cert.pem)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Certificate data: nur &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;das Leaf, also &lt;/ins&gt;cert-00 (bzw. cert.pem)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Private key data: privkey.pem&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Private key data: privkey.pem&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OPNsense sollte &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;YE2 &lt;/del&gt;als Aussteller erkennen.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OPNsense sollte &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;das Zwischenzertifikat &lt;/ins&gt;als Aussteller erkennen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;Leaf direkt aus der fullchain.pem ausgeben (openssl liest nur das erste Zertifikat)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*openssl x509 -in fullchain.pem&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Zertifikat verwenden===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Zertifikat verwenden===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l216&quot;&gt;Zeile 216:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 234:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Der Server muss die vollständige Kette ausliefern. Zwischenzertifikate stehen in keinem Truststore.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Der Server muss die vollständige Kette ausliefern. Zwischenzertifikate stehen in keinem Truststore.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Generation Y: die Kette ist 4 Zertifikate lang, weil die neue Root YE über Cross-Signs an X2 und X1 angebunden ist.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Generation Y: die Kette ist 4 Zertifikate lang, weil die neue Root YE über Cross-Signs an X2 und X1 angebunden ist.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*In OPNsense: Leaf als Certificate, alle Zwischenzertifikate als Authorities.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*In OPNsense: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nur das &lt;/ins&gt;Leaf als Certificate &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(das Feld erlaubt nur ein Zertifikat)&lt;/ins&gt;, alle Zwischenzertifikate als Authorities.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Browsertests täuschen (AIA, Preload, Cache). Geprüft wird mit openssl s_client -showcerts.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Browsertests täuschen (AIA, Preload, Cache). Geprüft wird mit openssl s_client -showcerts.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff:1.41:old-74101:rev-74103:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Let%27s_Encrypt_Zertifikatskette_(Generation_Y)_in_OPNsense&amp;diff=74101&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „=Let&#039;s Encrypt Zertifikatskette (Generation Y) in OPNsense=  ==Ausgangslage== Ein Wildcard-Zertifikat von Let&#039;s Encrypt (*.it2XX.xinmen.de) soll in eine OPNsense importiert werden. Dabei treten zwei Effekte auf: *OPNsense meldet beim Import der Datei zu viele Zertifikate. *Nach dem Import funktioniert die Web-GUI in manchen Browsern, in anderen nicht (z.B. Firefox auf Debian ja, Firefox auf Rocky nein).  Beides hat dieselbe Ursache: Let&#039;s Encrypt hat die…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Let%27s_Encrypt_Zertifikatskette_(Generation_Y)_in_OPNsense&amp;diff=74101&amp;oldid=prev"/>
		<updated>2026-11-02T16:38:44Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „=Let&amp;#039;s Encrypt Zertifikatskette (Generation Y) in OPNsense=  ==Ausgangslage== Ein Wildcard-Zertifikat von Let&amp;#039;s Encrypt (*.it2XX.xinmen.de) soll in eine OPNsense importiert werden. Dabei treten zwei Effekte auf: *OPNsense meldet beim Import der Datei zu viele Zertifikate. *Nach dem Import funktioniert die Web-GUI in manchen Browsern, in anderen nicht (z.B. Firefox auf Debian ja, Firefox auf Rocky nein).  Beides hat dieselbe Ursache: Let&amp;#039;s Encrypt hat die…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Let&amp;#039;s Encrypt Zertifikatskette (Generation Y) in OPNsense=&lt;br /&gt;
&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
Ein Wildcard-Zertifikat von Let&amp;#039;s Encrypt (*.it2XX.xinmen.de) soll in eine OPNsense importiert werden.&lt;br /&gt;
Dabei treten zwei Effekte auf:&lt;br /&gt;
*OPNsense meldet beim Import der Datei zu viele Zertifikate.&lt;br /&gt;
*Nach dem Import funktioniert die Web-GUI in manchen Browsern, in anderen nicht (z.B. Firefox auf Debian ja, Firefox auf Rocky nein).&lt;br /&gt;
&lt;br /&gt;
Beides hat dieselbe Ursache: Let&amp;#039;s Encrypt hat die Zertifikatshierarchie umgestellt, und die Kette ist dadurch deutlich länger geworden.&lt;br /&gt;
&lt;br /&gt;
==Wie ein Client eine Zertifikatskette prüft==&lt;br /&gt;
Der Server schickt im TLS-Handshake sein eigenes Zertifikat (Leaf) und die Zwischenzertifikate (Intermediates).&lt;br /&gt;
Der Client hat einen Truststore, in dem nur Root-Zertifikate liegen.&lt;br /&gt;
&lt;br /&gt;
Der Client baut vom Leaf aus einen Pfad nach oben:&lt;br /&gt;
*Wer hat das Leaf ausgestellt? Ist dieses Zertifikat dabei?&lt;br /&gt;
*Wer hat dieses Zertifikat ausgestellt? Ist das wiederum dabei?&lt;br /&gt;
*... bis er auf ein Zertifikat trifft, das in seinem Truststore liegt. Dort hört er auf.&lt;br /&gt;
&lt;br /&gt;
Fehlt ein Glied, ist die Kette gebrochen und die Verbindung wird abgelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Zwischenzertifikate liegen in keinem Truststore. Der Server muss sie mitschicken.&lt;br /&gt;
&lt;br /&gt;
==Was sich bei Let&amp;#039;s Encrypt geändert hat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zeitraum !! Kette in fullchain.pem !! Anzahl&lt;br /&gt;
|-&lt;br /&gt;
| bis Anfang 2024 || Leaf -&amp;gt; R3 -&amp;gt; ISRG Root X1 (Cross-Sign von DST Root CA X3) || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2024 bis 2026 || Leaf -&amp;gt; R10/R11 bzw. E5/E6 || 2&lt;br /&gt;
|-&lt;br /&gt;
| jetzt (Generation Y) || Leaf -&amp;gt; YE2 -&amp;gt; Root YE (Cross-Sign) -&amp;gt; ISRG Root X2 (Cross-Sign) || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bis 2026 hing das Zwischenzertifikat direkt unter ISRG Root X1 bzw. X2. Diese Roots sind seit Jahren in jedem Truststore.&lt;br /&gt;
Leaf + ein Intermediate reichten also immer.&lt;br /&gt;
&lt;br /&gt;
Mit Generation Y hängt das Zertifikat unter der neuen Root &amp;#039;&amp;#039;&amp;#039;Root YE&amp;#039;&amp;#039;&amp;#039;. Diese Root ist neu und noch nicht in allen Truststores enthalten.&lt;br /&gt;
Damit trotzdem jeder Client durchkommt, liefert Let&amp;#039;s Encrypt zwei Cross-Signs mit.&lt;br /&gt;
&lt;br /&gt;
==Cross-Signs==&lt;br /&gt;
Ein Cross-Sign ist ein zweites Zertifikat mit demselben Namen und demselben Schlüssel, aber von einer anderen CA unterschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Root YE   selbstsigniert        -&amp;gt; liegt bei neuen Clients im Truststore&lt;br /&gt;
Root YE   signiert von X2       -&amp;gt; Zertifikat Nr. 3 der Kette&lt;br /&gt;
&lt;br /&gt;
ISRG Root X2  selbstsigniert    -&amp;gt; liegt seit 2020 in den Truststores&lt;br /&gt;
ISRG Root X2  signiert von X1   -&amp;gt; Zertifikat Nr. 4 der Kette&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil Name und Schlüssel gleich sind, passt die Signatur von YE2 zu beiden Varianten von Root YE.&lt;br /&gt;
Der Cross-Sign ist eine Brücke: die neue Root wird von einer alten, weit verbreiteten Root bezeugt.&lt;br /&gt;
&lt;br /&gt;
Je nach Truststore endet die Prüfung an einer anderen Stelle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Client kennt Root YE   Leaf -&amp;gt; YE2 -&amp;gt; [Root YE]&lt;br /&gt;
Client kennt nur X2    Leaf -&amp;gt; YE2 -&amp;gt; Root YE (cross) -&amp;gt; [X2]&lt;br /&gt;
Client kennt nur X1    Leaf -&amp;gt; YE2 -&amp;gt; Root YE (cross) -&amp;gt; X2 (cross) -&amp;gt; [X1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ISRG Root X1 kennt praktisch jeder Client. Mit der vollständigen Kette funktioniert es also überall.&lt;br /&gt;
&lt;br /&gt;
==Die Dateien von certbot==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cert.pem       nur das Leaf&lt;br /&gt;
chain.pem      nur die Zwischenzertifikate (3 Stück)&lt;br /&gt;
fullchain.pem  Leaf + Zwischenzertifikate (4 Stück)&lt;br /&gt;
privkey.pem    privater Schlüssel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Werden fullchain.pem und chain.pem versehentlich zusammen eingefügt, sind das 4 + 3 = 7 Zertifikate.&lt;br /&gt;
Früher waren es 2 + 1 = 3, das fiel nicht auf.&lt;br /&gt;
&lt;br /&gt;
==Warum es in manchen Browsern geht und in anderen nicht==&lt;br /&gt;
===AIA - Nachladen fehlender Zertifikate===&lt;br /&gt;
Jedes Zertifikat enthält die Erweiterung &amp;#039;&amp;#039;&amp;#039;Authority Information Access (AIA)&amp;#039;&amp;#039;&amp;#039;. Dort steht, wo der Aussteller heruntergeladen werden kann.&lt;br /&gt;
&lt;br /&gt;
;AIA-Eintrag im Leaf anzeigen&lt;br /&gt;
*openssl x509 -in cert.pem -noout -ext authorityInfoAccess&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Authority Information Access:&lt;br /&gt;
    CA Issuers - URI:http://ye2.i.lencr.org/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fehlt dem Client ein Glied, kann er per HTTP-GET auf diese URL das Ausstellerzertifikat holen, die Signatur prüfen und den Pfad weiterbauen.&lt;br /&gt;
Das Ergebnis wird gecacht.&lt;br /&gt;
&lt;br /&gt;
Die URL ist absichtlich HTTP und nicht HTTPS: um eine HTTPS-Verbindung zu prüfen, bräuchte man wieder eine gültige Kette.&lt;br /&gt;
Sicher ist es trotzdem, weil das geladene Zertifikat signiert ist. Ein Angreifer kann den Download nur verhindern, aber nichts unterschieben.&lt;br /&gt;
&lt;br /&gt;
===Wer nachlädt und wer nicht===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Client !! AIA-Nachladen&lt;br /&gt;
|-&lt;br /&gt;
| Windows (Edge, Chrome) || ja, systemweit über CryptoAPI&lt;br /&gt;
|-&lt;br /&gt;
| macOS / iOS (Safari, Chrome) || ja&lt;br /&gt;
|-&lt;br /&gt;
| Android ab 7 || ja&lt;br /&gt;
|-&lt;br /&gt;
| Chrome unter Linux || ja, eigene Implementierung&lt;br /&gt;
|-&lt;br /&gt;
| Firefox || nein&lt;br /&gt;
|-&lt;br /&gt;
| curl, wget, OpenSSL, Python, Mailserver || nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Firefox verzichtet absichtlich darauf: jeder AIA-Abruf verrät der CA, welche Seite gerade besucht wird.&lt;br /&gt;
Stattdessen lädt Firefox die bekannten Zwischenzertifikate vorab aus der CCADB (gemeinsame Datenbank der Browserhersteller) und cacht Zwischenzertifikate von anderen Seiten.&lt;br /&gt;
&lt;br /&gt;
Daraus ergibt sich das Verhalten im Labor:&lt;br /&gt;
*Firefox auf Debian: kennt den fehlenden Cross-Sign schon (Preload oder Cache) -&amp;gt; geht&lt;br /&gt;
*Firefox auf Rocky (frisches Profil, Truststore über p11-kit aus dem System) -&amp;gt; kennt ihn nicht -&amp;gt; SEC_ERROR_UNKNOWN_ISSUER&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Der Browsertest ist also kein Beweis, dass der Server richtig konfiguriert ist.&amp;#039;&amp;#039;&amp;#039; Massgeblich ist, was der Server tatsächlich ausliefert.&lt;br /&gt;
&lt;br /&gt;
==Umsetzung in OPNsense==&lt;br /&gt;
OPNsense erwartet im Zertifikatsfeld nur das Leaf. Die Zwischenzertifikate werden getrennt als Authorities angelegt.&lt;br /&gt;
OPNsense verknüpft das Zertifikat dann über den Aussteller mit den Authorities und baut die Kette selbst.&lt;br /&gt;
&lt;br /&gt;
===Kette prüfen und aufteilen===&lt;br /&gt;
;Anzahl der Zertifikate in der Datei&lt;br /&gt;
*grep -c &amp;quot;BEGIN CERTIFICATE&amp;quot; fullchain.pem&lt;br /&gt;
&lt;br /&gt;
;Inhalt anzeigen (Subject und Issuer jedes Zertifikats)&lt;br /&gt;
*openssl crl2pkcs7 -nocrl -certfile fullchain.pem | openssl pkcs7 -print_certs -noout&lt;br /&gt;
&lt;br /&gt;
;Datei in Einzelzertifikate aufteilen&lt;br /&gt;
*csplit -z -f cert- fullchain.pem &amp;#039;/-----BEGIN CERTIFICATE-----/&amp;#039; &amp;#039;{*}&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cert-00   Leaf          *.it2XX.xinmen.de&lt;br /&gt;
cert-01   YE2           Zwischenzertifikat&lt;br /&gt;
cert-02   Root YE       Cross-Sign von ISRG Root X2&lt;br /&gt;
cert-03   ISRG Root X2  Cross-Sign von ISRG Root X1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Kontrolle eines Einzelzertifikats&lt;br /&gt;
*openssl x509 -in cert-02 -noout -subject -issuer&lt;br /&gt;
&lt;br /&gt;
===Authorities importieren===&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;System -&amp;gt; Trust -&amp;gt; Authorities&amp;#039;&amp;#039;&amp;#039; jeweils &amp;#039;&amp;#039;&amp;#039;Import an existing Certificate Authority&amp;#039;&amp;#039;&amp;#039; wählen.&lt;br /&gt;
Nur das Zertifikat einfügen, das Feld für den Private Key bleibt leer.&lt;br /&gt;
&lt;br /&gt;
Reihenfolge von oben nach unten, damit jede Authority ihren Aussteller schon vorfindet:&lt;br /&gt;
*cert-03 (ISRG Root X2, Cross-Sign)&lt;br /&gt;
*cert-02 (Root YE, Cross-Sign)&lt;br /&gt;
*cert-01 (YE2)&lt;br /&gt;
&lt;br /&gt;
===Zertifikat importieren===&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;System -&amp;gt; Trust -&amp;gt; Certificates&amp;#039;&amp;#039;&amp;#039; die Methode &amp;#039;&amp;#039;&amp;#039;Import an existing Certificate&amp;#039;&amp;#039;&amp;#039; wählen.&lt;br /&gt;
*Certificate data: nur cert-00 (bzw. cert.pem)&lt;br /&gt;
*Private key data: privkey.pem&lt;br /&gt;
&lt;br /&gt;
OPNsense sollte YE2 als Aussteller erkennen.&lt;br /&gt;
&lt;br /&gt;
===Zertifikat verwenden===&lt;br /&gt;
*Web-GUI: &amp;#039;&amp;#039;&amp;#039;System -&amp;gt; Settings -&amp;gt; Administration -&amp;gt; SSL Certificate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*HAProxy und andere Dienste: im jeweiligen Plugin auswählen&lt;br /&gt;
&lt;br /&gt;
==Kontrolle==&lt;br /&gt;
Nicht im Browser prüfen, sondern mit openssl. openssl lädt nichts nach und hat keinen Cache.&lt;br /&gt;
&lt;br /&gt;
;Welche Zertifikate schickt der Server?&lt;br /&gt;
*openssl s_client -connect opnsense.it2XX.xinmen.de:443 -servername opnsense.it2XX.xinmen.de -showcerts &amp;lt;/dev/null | grep -E &amp;#039;^ *[0-9] s:|i:&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Falsch (Kette unvollständig):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0 s:CN=*.it2XX.xinmen.de&lt;br /&gt;
   i:C=US, O=Let&amp;#039;s Encrypt, CN=YE2&lt;br /&gt;
 1 s:C=US, O=Let&amp;#039;s Encrypt, CN=YE2&lt;br /&gt;
   i:C=US, O=ISRG, CN=Root YE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Richtig (Kette vollständig):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0 s:CN=*.it2XX.xinmen.de&lt;br /&gt;
   i:C=US, O=Let&amp;#039;s Encrypt, CN=YE2&lt;br /&gt;
 1 s:C=US, O=Let&amp;#039;s Encrypt, CN=YE2&lt;br /&gt;
   i:C=US, O=ISRG, CN=Root YE&lt;br /&gt;
 2 s:C=US, O=ISRG, CN=Root YE&lt;br /&gt;
   i:C=US, O=Internet Security Research Group, CN=ISRG Root X2&lt;br /&gt;
 3 s:C=US, O=Internet Security Research Group, CN=ISRG Root X2&lt;br /&gt;
   i:C=US, O=Internet Security Research Group, CN=ISRG Root X1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Ergebnis der Prüfung&lt;br /&gt;
*openssl s_client -connect opnsense.it2XX.xinmen.de:443 -servername opnsense.it2XX.xinmen.de &amp;lt;/dev/null 2&amp;gt;/dev/null | grep &amp;quot;Verify return code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Verify return code: 0 (ok)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Übung: AIA live beobachten==&lt;br /&gt;
;Was liegt hinter den AIA-URLs?&lt;br /&gt;
*curl -s http://ye2.i.lencr.org/ | openssl x509 -inform DER -noout -subject -issuer&lt;br /&gt;
*curl -s http://ye.i.lencr.org/ | openssl x509 -inform DER -noout -subject -issuer&lt;br /&gt;
&lt;br /&gt;
;Nachladen im Browser beobachten&lt;br /&gt;
*Wireshark starten, Filter: http.host contains &amp;quot;lencr&amp;quot;&lt;br /&gt;
*OPNsense mit unvollständiger Kette (nur Leaf + YE2) in Chrome aufrufen -&amp;gt; die AIA-Abrufe sind zu sehen&lt;br /&gt;
*Dasselbe in Firefox -&amp;gt; kein Abruf, Fehlermeldung SEC_ERROR_UNKNOWN_ISSUER&lt;br /&gt;
&lt;br /&gt;
Vorher frisches Browserprofil verwenden, sonst kommen die Zertifikate aus dem Cache und es wird nichts nachgeladen.&lt;br /&gt;
&lt;br /&gt;
==Dauerhafte Lösung: os-acme-client==&lt;br /&gt;
Let&amp;#039;s-Encrypt-Zertifikate sind 90 Tage gültig. Der manuelle Import müsste also regelmäßig wiederholt werden.&lt;br /&gt;
Mit dem Plugin &amp;#039;&amp;#039;&amp;#039;os-acme-client&amp;#039;&amp;#039;&amp;#039; holt sich die OPNsense das Zertifikat selbst und erneuert es automatisch.&lt;br /&gt;
&lt;br /&gt;
Für ein Wildcard-Zertifikat ist die &amp;#039;&amp;#039;&amp;#039;DNS-01-Challenge&amp;#039;&amp;#039;&amp;#039; nötig. Dafür braucht die OPNsense API-Zugang zum DNS-Anbieter der Domain.&lt;br /&gt;
&lt;br /&gt;
==Merksätze==&lt;br /&gt;
*Der Server muss die vollständige Kette ausliefern. Zwischenzertifikate stehen in keinem Truststore.&lt;br /&gt;
*Generation Y: die Kette ist 4 Zertifikate lang, weil die neue Root YE über Cross-Signs an X2 und X1 angebunden ist.&lt;br /&gt;
*In OPNsense: Leaf als Certificate, alle Zwischenzertifikate als Authorities.&lt;br /&gt;
*Browsertests täuschen (AIA, Preload, Cache). Geprüft wird mit openssl s_client -showcerts.&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>