<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Netz - Rettung - Recht (Artikel mit Tag ssl)</title>
    <link>https://netz-rettung-recht.de/</link>
    <description>Netzleben, Rettungs- und Rechtswesen</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 2.5.0 - http://www.s9y.org/</generator>
    <pubDate>Fri, 20 Dec 2019 05:40:49 GMT</pubDate>

    <image>
    <url>https://netz-rettung-recht.de/templates/2k11/img/s9y_banner_small.png</url>
    <title>RSS: Netz - Rettung - Recht - Netzleben, Rettungs- und Rechtswesen</title>
    <link>https://netz-rettung-recht.de/</link>
    <width>100</width>
    <height>21</height>
</image>

<item>
    <title>SSL/TLS im Web - Ende 2019</title>
    <link>https://netz-rettung-recht.de/archives/2201-SSLTLS-im-Web-Ende-2019.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2201-SSLTLS-im-Web-Ende-2019.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2201</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2201</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;code&gt;HTTPS&lt;/code&gt;, also der per SSL/TLS gesicherte Zugriff auf Webseiten, hat sich in den letzten Jahren - nicht zuletzt durch die problem- und kostenlosen Zertifikate von &lt;a href=&quot;https://letsencrypt.org/&quot; title=&quot; Let&amp;#39;s Encrypt&quot;&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;&lt;/a&gt; - stark verbreitet. War es noch vor fünf oder sechs Jahren eher der Ausnahmefall, dass Webseiten, die keinen Login erfordern, die Möglichkeit einer verschlüsselten Verbindung anbieten, ist &lt;code&gt;HTTPS&lt;/code&gt; mittlerweile gefühlt der Normalfall geworden. Doch es gibt immer noch Ausnahmen (übrigens auch dort, wo ein Login erforderlich ist).&lt;/p&gt;

&lt;p&gt;Ab und an gehe ich auf manchen meiner Webseiten bestehende Links nicht nur unter dem Gesichtspunkt durch, ob die verlinkten Seiten noch existieren, sondern prüfe auch, ob eine noch per &lt;code&gt;HTTP&lt;/code&gt; verlinkte Webseite nicht mittlerweile eine verschlüsselte Variante anbietet, und stelle dann sukzessive auch meine Links um. War das 2017 noch oft enttäuschend, konnte ich demletzt fast alle verbliebenen Links ändern.&lt;/p&gt;

&lt;p&gt;Es bleiben aber immer noch Ausnahmen, darunter (manche) Webseiten einer großen südwestdeutschen Landeshauptstadt, Fakultäten von Universitäten und ähnliche Institutionen.&lt;/p&gt;

&lt;p&gt;Besonders gut gefallen hat mir die Kassenzahnärztliche Vereinigung (KZV) in einem südwestdeutschen Bundesland, die zwar &lt;code&gt;HTTPS&lt;/code&gt;-Verbindungen annimmt, sie aber auf die unverschlüsselte Version der Webseite umleitet. So herum habe ich das noch nie gesehen - immerhin, man kommt ans Ziel und landet nicht bei einer Fehlermeldung oder auf einer zumindest partiell defekten Webseite, aber etwas skurril ist das dann schon.&lt;/p&gt;

&lt;p&gt;Sehr schön aber auch die vermutlich von einem großen Kongressanbieter betriebene Webseite einer jährlich zum Jahresanfang stattfindenden notfallmedizinisch orientierten Tagung: &lt;code&gt;HTTPS&lt;/code&gt; geht, aber das nicht von einer anerkannten CA signierte Zertifikat ist am 30.06.2016 (!) abgelaufen.&lt;/p&gt;

&lt;p&gt;Insgesamt ist das Bild also gut, aber es bleibt noch viel zu tun.&lt;/p&gt;

&lt;p&gt;Haben Sie Ihre Webseite schon umgestellt?&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/47ed5cd50e6d4307985a27a4098db1b7&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Fri, 20 Dec 2019 05:40:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2201-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>HSTS im Firefox ignorieren</title>
    <link>https://netz-rettung-recht.de/archives/2152-HSTS-im-Firefox-ignorieren.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2152-HSTS-im-Firefox-ignorieren.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2152</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2152</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;HSTS&lt;/em&gt; steht für &lt;em&gt;HTTP Strict Transport Security&lt;/em&gt; und ist ein &lt;a href=&quot;https://tools.ietf.org/html/rfc6797&quot; title=&quot;&quot;&gt;Standard&lt;/a&gt;, der unverschlüsselte Zugriffe auf solche Webseiten verhindern soll, die nur verschlüsselt angeboten werden.&lt;/p&gt;

&lt;p&gt;Dem liegt folgendes Angriffsszenario zugrunde: Die Webseite &lt;code&gt;www.example.com&lt;/code&gt; ist nur über HTTPS zugänglich. Der Angreifer &amp;#8220;A&amp;#8221; kann zwar Zugriffe des Benutzers &amp;#8220;B&amp;#8221; auf seinen eigenen Server umleiten, bspw. durch Manipulation des DNS, aber - wenn alles so läuft, wie es soll - kein Zertifikat für &lt;code&gt;www.example.com&lt;/code&gt; erhalten. Was macht er? Er leitet alle Zugriffe auf &lt;code&gt;https://www.example.com&lt;/code&gt; stattdessen auf &lt;code&gt;http://www.example.com&lt;/code&gt; (ohne Verschlüsselung!) um, und schon gibt es für den Benutzer keine Fehlermeldungen mehr. Dass die Verbindung jetzt unverschlüsselt ist, sieht er vielleicht nicht ohne weiteres. Außerdem kann der Angreifer natürlich einfach ein - nicht vertrauenswürdiges, d.h. selbst signiertes - Zertifikat für &lt;code&gt;www.example.com&lt;/code&gt; erzeugen. Das führt zwar zu einer Fehlermeldung, die der Nutzer aber ignorieren kann (&amp;#8220;Sicherheits-Ausnahmeregel erstellen&amp;#8221;). Auch das soll &lt;em&gt;HSTS&lt;/em&gt; unterbinden.&lt;/p&gt;

&lt;p&gt;Eine Website kann diese Policy durch Setzen eines HTTP-Headers (&lt;code&gt;Strict-Transport-Security&lt;/code&gt;) serverseitig signalisieren und dabei auch angeben, wie lange diese Einstellung gültig bleiben soll. Der Browser muss diese Vorgabe für die eingestellte Dauer speichern und während dieses Zeitraums (a) jeden unverschlüsselten Zugriff (HTTP) auf einen verschlüsselten Zugriff (HTTPS) umleiten sowie (b) bei jedem Zertifikatsfehler die Verbindung unterbinden, ohne dem Benutzer eine Möglichkeit zu geben, das Zertifikat doch zu akzeptieren:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This means that the user should not be presented with a dialog giving her the option to proceed.  Rather, it should be treated similarly to a server error where there is nothing further the user can do with respect to interacting with the target web application, other than wait and retry.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;serendipity_imageComment_center&quot; style=&quot;width: 1000px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;!-- s9ymdb:684 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;1000&quot; height=&quot;622&quot;  src=&quot;https://netz-rettung-recht.de/uploads/articles/2019/2019-01-13-hsts.png&quot;  alt=&quot;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Zertifikatsfehler bei &lt;em&gt;HSTS&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So weit, so gut. Es kann aber durchaus legitime Gründe geben, eine solche Verbindung als Benutzer trotzdem zu akzeptieren, beispielsweise dann, wenn man eine Website (oder eine Webapplikation) umzieht. Viele Applikationen (Blogs, &amp;#8230;) speichern den Hostnamen, so dass viele dafür spricht, &lt;code&gt;www.meinblog.example&lt;/code&gt; auch auf dem neuen Host wieder als  &lt;code&gt;www.meinblog.example&lt;/code&gt; und nicht als &lt;code&gt;test.meinblog.example&lt;/code&gt; einzurichten. Bevor man die DNS-Einträge ändert, kann man dann einfach seinem eigenen Rechner über die Hosts-Datei (&lt;code&gt;/etc/hosts&lt;/code&gt; oder &lt;code&gt;%windir%\system32\drivers\etc\hosts&lt;/code&gt;) die neue IP unterschieben und die Applikation testen. Leider schlägt das mit aktivierter &lt;em&gt;HSTS&lt;/em&gt; fehl, wenn die neue Installation noch kein SSL-Zertifikat hat - vielleicht deshalb, weil man es über &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; bezieht und die einfachen Validierungsroutinen fehlschlagen, so lange die DNS-Einträge für die Domain noch auf die alte Installation zeigen. Natürlich gibt es auch dafür Möglichkeiten, einfacher wäre es aber, schlicht ein fehlendes oder selbst signiertes Zertifikat akzeptieren zu können.&lt;/p&gt;

&lt;p&gt;Wie dem auch sei: es wäre doch schön, wenn man als Benutzer - trotz &lt;em&gt;HSTS&lt;/em&gt; - bewusst fehlerhafte HTTPS-Verbindungen akzeptieren könnte. Es könnte ja auch einfach einmal sein, dass ein Zertifikat nicht rechtzeitig erneut wurde &amp;#8230; Firefox bietet allerdings - standardkonform - keine Möglichkeit dazu über die Benutzeroberfläche.&lt;/p&gt;

&lt;p&gt;Hingegen ist es möglich, den &lt;em&gt;HSTS&lt;/em&gt;-Eintrag zu löschen mit der Folge, dass Firefox nichts mehr davon weiß, dass die entsprechende Domain eigentlich &lt;em&gt;HSTS&lt;/em&gt; implementiert. Dazu genügt es, Firefox zu beenden, im Profilverzeichnis (&lt;code&gt;%APPDATA%\Mozilla\Firefox\Profiles\&lt;/code&gt; plus Name des eigenen Profils) die Datei &lt;code&gt;SiteSecurityServiceState.txt&lt;/code&gt; zu editieren und den Eintrag für die betreffende Domain zu löschen, die Datei zu speichern und Firefox neu zu starten. Voila - er hat &lt;em&gt;HSTS&lt;/em&gt; vergessen und ermöglicht es nunmehr wie sonst auch, eine temporäre oder dauerhafte Ausnahmeregel zu erstellen und ein ungültiges oder nicht vertrauenswürdiges Zertifikat zu akzeptieren (natürlich nur, wenn der Webserver nicht direkt wieder &lt;em&gt;HSTS&lt;/em&gt; setzt &amp;#8230;).&lt;/p&gt;

&lt;p&gt;Freilich sollte man das nur tun, wenn man auch wirklich weiß, was man tut - sonst schießt man sich ggf. in den eigenen Fuß.&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/1e424814dabc4ba5ae76446defe1b5e2&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Fri, 18 Jan 2019 08:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2152-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>Github: alte TLS-Versionen und SSH-Algorithmen deaktiviert</title>
    <link>https://netz-rettung-recht.de/archives/2062-Github-alte-TLS-Versionen-und-SSH-Algorithmen-deaktiviert.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2062-Github-alte-TLS-Versionen-und-SSH-Algorithmen-deaktiviert.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2062</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2062</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;Github&lt;/em&gt; hat am 22.02.2018 Änderungen an der &lt;em&gt;HTTPS&lt;/em&gt;-und &lt;em&gt;SSH&lt;/em&gt;-Konfiguration vorgenommen und ältere und weniger sichere &lt;a href=&quot;https://githubengineering.com/crypto-removal-notice/&quot; title=&quot;Redirecting&amp;hellip;&quot;&gt;Zugriffsmöglichkeiten deaktiviert&lt;/a&gt;. Das betrifft sowohl &lt;em&gt;TLS 1.0&lt;/em&gt; und &lt;em&gt;TLS 1.1&lt;/em&gt; als auch - für den &lt;em&gt;SSH&lt;/em&gt;-Schlüsselaustauch - &lt;em&gt;diffie-hellman-group1-sha1 und *diffie-hellman-group14-sha1&lt;/em&gt;. Wenn die verwendete Client-Software nicht mindestens &lt;em&gt;TLS 1.2&lt;/em&gt; bzw. einen anderen Schlüsselaustausch-Algorithmus beherrscht, muss man mithin aktiv werden.&lt;/p&gt;

&lt;p&gt;Wer - wie ich - &lt;em&gt;&lt;a href=&quot;https://gitforwindows.org/&quot; title=&quot;Git for Windows&quot;&gt;Git for Windows&lt;/a&gt;&lt;/em&gt; zusammen mit &lt;em&gt;PLink&lt;/em&gt; aus dem &lt;em&gt;Putty&lt;/em&gt;-Paket als &lt;em&gt;SSH&lt;/em&gt;-Client verwendet, bekommt sonst möglicherweise - wenn er &lt;em&gt;Putty&lt;/em&gt; länger nicht mehr geupdatet hat - beim &lt;code&gt;git pull&lt;/code&gt; oder &lt;code&gt;git push&lt;/code&gt; eine Meldung dieser Art zu sehen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;FATAL ERROR: Couldn&#039;t agree a key exchange algorithm (available: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Natürlich (?) hatte ich die Ankündigungen über die Änderungen bei Github nicht präsent, vermutete aber etwas in der Art - und Google führte mich nach einiger Zeit zu einem &lt;a href=&quot;https://github.com/desktop/desktop/issues/4105&quot; title=&quot;Authentication failed when pushing to my repository · Issue #4105 · desktop/desktop · GitHub&quot;&gt;Issue&lt;/a&gt; im Github-Desktop-Projekt. Und siehe da - &lt;em&gt;Putty&lt;/em&gt; kann erst ab Version &lt;em&gt;0.68&lt;/em&gt; (21.02.2017) elliptische Kurven:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Support for elliptic-curve cryptography (the NIST curves and 25519), for host keys, user authentication keys, and key exchange.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ein &lt;em&gt;putty&lt;/em&gt;-Update später flutschte dann auch wieder alles.&lt;/p&gt;

&lt;p&gt;(Ab dieser Version wird allerdings ggf. eine 64bit-Version von &lt;em&gt;Putty&lt;/em&gt; installiert, die dann unter Windows nicht in &lt;code&gt;C:\Program Files (x86)&lt;/code&gt; landet, sondern in &lt;code&gt;C:\Program Files&lt;/code&gt;, so dass ggf. die Umgebungsvariable &lt;code&gt;GIT_SSH&lt;/code&gt; angepasst werden muss.)&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 03 Apr 2018 04:40:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2062-guid.html</guid>
    <category>git</category>
<category>ssh</category>
<category>ssl</category>

</item>
<item>
    <title>&quot;StartCom temination announcement&quot;</title>
    <link>https://netz-rettung-recht.de/archives/2043-StartCom-temination-announcement.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2043-StartCom-temination-announcement.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2043</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2043</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Bis zum &lt;a href=&quot;https://netz-rettung-recht.de/archives/2011-Blogumzug-Technikupgrade.html&quot; title=&quot;&quot;&gt;Umzug meines Blogs&lt;/a&gt; auf neue Hardware stammte das SSL-Zertifikat für das Blog von &lt;em&gt;StartCom&lt;/em&gt;, einem Tochterunternehmen von &lt;em&gt;WoSign&lt;/em&gt; (wobei der Erwerb offenbar verdeckt durch Hinterleute erfolgte). Die Konzernmutter fiel jedenfalls 2016 durch &amp;#8230; &lt;a href=&quot;https://docs.google.com/document/d/1C6BlmbeQfn4a9zydVi2UvjBGv6szuSB4sMYUcVrR8vQ/edit&quot; title=&quot;WoSign and StartCom - Google Docs&quot;&gt;unschöne Praktiken&lt;/a&gt; bei der Erstellung von Zertifikaten auf, mit der Folge, dass Apple, Google (&lt;em&gt;Chrome&lt;/em&gt;) und Mozilla (&lt;em&gt;Firefox&lt;/em&gt;) allen Zertifikaten der Mutter- wie der Tochterfirmen sukzessive das Vertrauen entzogen.&lt;/p&gt;

&lt;p&gt;Das hat dem Unternehmen offenbar das Genick gebrochen, wie ich einer E-Mail entnehme, die mich am vergangenen Samstag erreichte:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;This is an automatically generated email, please do not reply.&lt;/em&gt;&lt;/p&gt;
  
  &lt;p&gt;Dear customer,&lt;/p&gt;
  
  &lt;p&gt;As you are surely aware, the browser makers distrusted StartCom around a year ago and therefore all the end entity certificates newly issued by StartCom are not trusted by default in browsers.&lt;/p&gt;
  
  &lt;p&gt;The browsers imposed some conditions in order for the certificates to be re-accepted. While StartCom believes that these conditions have been met, it appears there are still certain difficulties forthcoming. Considering this situation, the owners of StartCom have decided to terminate the company as a Certification Authority as mentioned in Startcom&amp;#8217;s website.&lt;/p&gt;
  
  &lt;p&gt;StartCom will stop issuing new certificates starting from January 1st, 2018 and will provide only CRL and OCSP services for two more years.&lt;/p&gt;
  
  &lt;p&gt;StartCom would like to thank you for your support during this difficult time.&lt;/p&gt;
  
  &lt;p&gt;[&amp;#8230;]&lt;/p&gt;
  
  &lt;p&gt;Please let us know if you need any further assistance with the transition process. We deeply apologize for any inconveniences that this may cause.&lt;/p&gt;
  
  &lt;p&gt;Best regards,&lt;br /&gt;
  StartCom Certification Authority&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tscha. Gut, dass es &lt;em&gt;Let’s Encrypt&lt;/em&gt; gibt.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 06 Dec 2017 21:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2043-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>&quot;Mixed-Content&quot;-Warnungen vermeiden</title>
    <link>https://netz-rettung-recht.de/archives/2038-Mixed-Content-Warnungen-vermeiden.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2038-Mixed-Content-Warnungen-vermeiden.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2038</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2038</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Wer seine Webseiten auf SSL umstellt, kennt das Problem: eingebundene Bilder, Grafiken, &lt;em&gt;CSS&lt;/em&gt;- oder Javascript-Dateien werden hier und dort noch über HTTP aufgerufen, was entweder zu Warnmeldungen im Browser über &lt;em&gt;Mixed Content&lt;/em&gt; führt (&amp;#8220;Teile dieser Seite sind nicht sicher.&amp;#8221;) - oder dazu, dass die &amp;#8220;unsicher&amp;#8221; eingebundenen Teile nicht nachgeladen werden, mit unschönen Aspekten, wenn Teil des &lt;em&gt;CSS&lt;/em&gt; oder des Javascripts plötzlich fehlen.&lt;/p&gt;

&lt;p&gt;Das Problem lässt sich natürlich mit einer Volltext-Suche (bspw. nach &lt;code&gt;http:&lt;/code&gt;) angehen, aber gerade bei datenbankgestützten Webapplikationen (wie Blogs und CMS) mag der &lt;a href=&quot;https://www.jitbit.com/sslcheck/&quot; title=&quot;SSL-check: crawl your HTTPS website and find unsecure content&quot;&gt;SSL-Check von Jitbit&lt;/a&gt; hilfreich sein, der kostenlos bis zu 200 Einzelseiten überprüft.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Gefunden bei &lt;a href=&quot;https://www.leitmedium.de/&quot; title=&quot;Just a moment...&quot;&gt;Leitmedium&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 11 Oct 2017 06:15:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2038-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>Let's Encrypt und Basic-Auth</title>
    <link>https://netz-rettung-recht.de/archives/2010-Lets-Encrypt-und-Basic-Auth.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/2010-Lets-Encrypt-und-Basic-Auth.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=2010</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=2010</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Wie man mit &lt;em&gt;Let’s Encrypt&lt;/em&gt; ganz einfach an SSL-Zertifikate kommt, hatte ich bereits vor mehr als einem Jahr &lt;a href=&quot;https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html&quot; title=&quot;SSL/TLS mit Let&#039;s Encrypt | Netz - Rettung - Recht&quot;&gt;geschildert&lt;/a&gt; - mittlerweile übrigens ganz einfach, denn in Debian &lt;em&gt;stretch&lt;/em&gt; ist der &lt;em&gt;Let’s Encrypt&lt;/em&gt;-Client (der jetzt &lt;em&gt;certbot&lt;/em&gt; heißt) nativ dabei und bringt jetzt auch einen fertigen &lt;em&gt;Cronjob&lt;/em&gt; mit.&lt;/p&gt;

&lt;p&gt;Aber darum soll es heute gar nicht gehen, sondern vielmehr um die Frage, wie man &lt;em&gt;Let’s Encrypt&lt;/em&gt; verwenden kann, wenn die entsprechende Webpräsenz mit einem einfachen Passwortschutz - der &lt;em&gt;basic access authentication&lt;/em&gt; oder kurz Basic-Auth - versehen ist. Jeder kennt vermutlich das Popup, das nach Benutzerkennung und Passwort fragt; eine nicht sehr elegante, aber dafür mit praktisch keinem Aufwand verbundene Lösung, die zudem &lt;em&gt;alle&lt;/em&gt; Dateien in allen Verzeichnissen der Präsenz schützt, nicht nur Scripts, sondern auch - bspw. - Bilder.
Eleganter ist natürlich eine ordentliche Session-Verwaltung mit Login- und Logout-Funktion; aber manchmal soll eben nur die private Bildergalerie oder eine &amp;#8220;fertige&amp;#8221; Applikation geschützt werden, die von Haus aus keinen Passwortschutz mitbringt. Ein schneller Eintrag in der &lt;code&gt;.htaccess&lt;/code&gt;-Datei oder der Serverkonfiguration im passenden &lt;em&gt;virtual host&lt;/em&gt;, und schon ist alles (ein wenig) gesichert:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;AuthUserFile /home/USER/.htpasswd
    AuthName &#039;Privater Bereich&#039;
    AuthType Basic
    Require valid-user
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nur wirkt dieser Schutz eben auch gegen &lt;em&gt;Let’s Encrypt&lt;/em&gt;, das durch den Aufruf einer temporär erzeugten Datei im Verzeichnis &lt;code&gt;http://domain.example/.well-known/&lt;/code&gt; überprüft, ob der Antragsteller wirklich die Kontrolle über den entsprechenden Host hat. Dieser Aufruf schlägt fehl, wenn ein Passwort erforderlich ist. Natürlich könnte man jetzt jedes Mal, wenn das Zertifikat zu erneuern ist, den Passwortschutz kurzzeitig deaktivieren, aber das ist weder praktikabel (schließlich gelten die Zertifikate nur wenige Monate und sollen selbständig erneuert werden) noch sicher (was ist, wenn gerade in diesem Moment jemand die geschützte Webseite aufgerufen hat?).&lt;/p&gt;

&lt;p&gt;Die Lösung ist aber hinreichend einfach: es genügt, das Vezeichnis &lt;code&gt;/.well-known&lt;/code&gt; vom Passwortschutz auszunehmen. Und das funktioniert mit folgenden Zeilen im &lt;em&gt;virtual host&lt;/em&gt; (Apache 2.4):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;Location /.well-known&amp;gt;
    Require all granted
&amp;lt;/Location&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nach einem &lt;code&gt;service apache2 reload&lt;/code&gt; (oder dem Äquivalent des jeweiligen Systems) arbeitet &lt;em&gt;Let’s Encrypt&lt;/em&gt; wieder so, wie es soll, und der Rest der Webpräsenz ist weiterhin passwortgeschützt.&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/b058cf877c5040f18800d01067c17587&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Mon, 07 Aug 2017 05:55:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/2010-guid.html</guid>
    <category>apache</category>
<category>ssl</category>

</item>
<item>
    <title>Neue Zertifikate von StartCom</title>
    <link>https://netz-rettung-recht.de/archives/1951-Neue-Zertifikate-von-StartCom.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1951-Neue-Zertifikate-von-StartCom.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1951</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1951</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Eigentlich nutze ich mittlerweile ja &lt;em&gt;&lt;a href=&quot;https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html&quot; title=&quot;&quot;&gt;Let&amp;#8217;s Encrypt&lt;/a&gt;&lt;/em&gt;, wenn ich Zertifikate für den Betrieb einer Website benötige. Allerdings gibt es doch noch ein oder zwei Dienste, wo ich seit Ende 2015 auf &lt;em&gt;&lt;a href=&quot;https://www.startssl.com/&quot; title=&quot;Notice to all StartCom subscribers&quot;&gt;StartCom&lt;/a&gt;&lt;/em&gt; setze - und die dortigen, kostenlosen Zertifikate laufen eben nach einem Jahr ab und standen daher jetzt zur Erneuerung an.&lt;/p&gt;

&lt;p&gt;Wenige Stunden vor dem Ablauf meines persönlichen Identifizierungs-Zertifikats - wie ich erst dann bemerkte - loggte ich mich also dort ein, validierte meinen Account und die relevanten Domains neu, erstellte ein neues persönliches Zertifikat und auch neue Zertifikate für die betreffenden Websites. Jetzt ist wieder alles paletti.&lt;/p&gt;

&lt;p&gt;Neuerdings scheinen die Zertifikate immerhin für drei Jahre ausgestellt zu werden - also habe ich jetzt bis 2019, um &lt;em&gt;StartCom&lt;/em&gt; auch dort durch &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; zu ersetzen. &lt;img src=&quot;https://netz-rettung-recht.de/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 19 Oct 2016 05:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1951-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>letsencrypt jenseits des Webservers</title>
    <link>https://netz-rettung-recht.de/archives/1943-letsencrypt-jenseits-des-Webservers.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1943-letsencrypt-jenseits-des-Webservers.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1943</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1943</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Vor einigen Monaten hatte ich über &lt;em&gt;letsencrypt&lt;/em&gt;, die neue Zertifizierungsstelle für TLS-Zertifikate, &lt;a href=&quot;https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html&quot; title=&quot;&quot;&gt;berichtet&lt;/a&gt; und demletzt meine guten Erfahrungen damit &lt;a href=&quot;https://netz-rettung-recht.de/archives/1916-Lets-Encrypt-Updates.html&quot; title=&quot;&quot;&gt;dargestellt&lt;/a&gt;. Doch &lt;em&gt;HTTP&lt;/em&gt; ist ja nicht das einzige Protokoll, das einer Absicherung bedarf. Wie sieht es mit TLS-Zertifikaten für Mail (&lt;em&gt;SMTP&lt;/em&gt; und &lt;em&gt;POP3&lt;/em&gt; oder &lt;em&gt;IMAP&lt;/em&gt;) und News (&lt;em&gt;NNTP&lt;/em&gt;) oder noch andere Dienste aus?&lt;/p&gt;

&lt;p&gt;Grundsätzlich ist das kein Problem: vorhandene Zertifikate mit dem (oder den) passenden Hostnamen müssen nur eingebunden werden.&lt;/p&gt;

&lt;p&gt;In der Folge stelle ich die Vorgehensweise ausgehend von einem &lt;em&gt;Debian&lt;/em&gt;-&lt;em&gt;Jessie&lt;/em&gt;-System aus vor.&lt;/p&gt;

&lt;h3 id=&quot;erhalt-des-zertifikats&quot;&gt;Erhalt des Zertifikats&lt;/h3&gt;

&lt;p&gt;Am einfachsten ist das, wenn unter jedem Hostnamen auch ein Webserver erreichbar ist; dann kann nämlich einfach das &lt;code&gt;webroot&lt;/code&gt;-&lt;a href=&quot;https://certbot.eff.org/docs/using.html#webroot&quot; title=&quot;&quot;&gt;Plugin&lt;/a&gt; verwendet werden. Ist das nicht der Fall, kommen bspw. das &lt;code&gt;manual&lt;/code&gt;-&lt;a href=&quot;https://certbot.eff.org/docs/using.html#manual&quot; title=&quot;&quot;&gt;Plugin&lt;/a&gt; oder das &lt;code&gt;external&lt;/code&gt;-&lt;a href=&quot;https://github.com/marcan/certbot-external&quot; title=&quot;GitHub - marcan/certbot-external: Certbot plugin that uses an external shell script for domain validation · GitHub&quot;&gt;Plugin&lt;/a&gt; in Betracht.&lt;/p&gt;

&lt;h3 id=&quot;installation-des-zertifikats&quot;&gt;Installation des Zertifikats&lt;/h3&gt;

&lt;p&gt;Das bereits - für den Webserver - vorhandene oder neu erhaltene Zertifikat und der zugehörige Schlüssel (
&lt;em&gt;Key&lt;/em&gt;), die üblicherweise im Verzeichnis &lt;code&gt;/etc/letsencrypt/live/domain.example/&lt;/code&gt; liegen, können nun eingebunden werden - entweder das Zertifikat und die ganze Zertifikatskette mit allen Zwischenzertifikaten zusammen in einer Datei (&lt;code&gt;fullchain.pem&lt;/code&gt;), oder das Zertifikat (&lt;code&gt;cert.pem&lt;/code&gt;) und die Zwischenzertifikate (&lt;code&gt;chain.pem&lt;/code&gt;) getrennt, je nachdem, was die Applikation unterstützt.&lt;/p&gt;

&lt;p&gt;Nicht immer ist es aber ohne weiteres möglich, unmittelbar auf die Dateien in &lt;code&gt;/etc/letsencrypt/live/domain.example/&lt;/code&gt; zuzugreifen, die &lt;code&gt;root:root&lt;/code&gt; gehören und aufgrund der Verzeichnisrechte auch nur für &lt;code&gt;root&lt;/code&gt; lesbar sind. Manche Programme (bspw. der Mailserver &lt;em&gt;Exim&lt;/em&gt;) greifen nämlich auf die Zertifikate zu einem Zeitpunkt zu, zu dem sie bereits keine Root-Rechte mehr haben; und es erscheint wenig tunlich, sie in die Gruppe &lt;code&gt;root&lt;/code&gt; aufzunehmen oder gar Zertifikat und Key weltweit lesbar zu machen. Andere Programme wiederum haben ausgesprochen strikte Vorstellungen darüber, welchem Benutzer und/oder welcher Gruppe die Dateien &amp;#8220;gehören&amp;#8221; müssen und wie die Zugriffsrechte auszusehen haben (so z.B. der Newsserver &lt;em&gt;INN&lt;/em&gt;, der erwartet, dass der Key ausschließlich für den User &lt;code&gt;news&lt;/code&gt; lesbar ist). In diesen Fällen wird es m.E. unausweichlich sein, Kopien der Zertifikate und des Keys mit den passenden Rechten anzulegen.&lt;/p&gt;

&lt;h4 id=&quot;-dovecot-&quot;&gt;&lt;em&gt;Dovecot&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Der &lt;em&gt;POP3&lt;/em&gt;- und &lt;em&gt;IMAP&lt;/em&gt;-Server &lt;em&gt;Dovecot&lt;/em&gt; greift als &lt;code&gt;root&lt;/code&gt; auf die Zertifikate zu und kann - jedenfalls in seiner in &lt;em&gt;Debian Jessie&lt;/em&gt; enthaltenen Version &lt;em&gt;2.2.13&lt;/em&gt; - die Zertifikatskette (&lt;code&gt;fullchain.pem&lt;/code&gt;) verarbeiten. Es genügt also, Zertifikat und Key einzubinden und die Serverkonfiguration neu einzulesen (&lt;code&gt;service dovecot reload&lt;/code&gt;).&lt;/p&gt;

&lt;h4 id=&quot;-exim-&quot;&gt;&lt;em&gt;Exim&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Anders sieht es mit dem &lt;em&gt;SMTP&lt;/em&gt;-Server &lt;em&gt;Exim&lt;/em&gt; aus. Dieser gibt seine Root-Rechte auf, bevor er auf die TLS-Zertifikate zugreift. Immerhin kommt auch er mit &lt;code&gt;fullchain.pem&lt;/code&gt; klar.&lt;/p&gt;

&lt;p&gt;Eine Möglichkeit ist es, Zertifikat und Key in ein passendes Verzeichnis zu kopieren und dann Eigentümer und Rechte (&lt;code&gt;644&lt;/code&gt;!) anzupassen, bspw. so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /etc/exim4
mkdir certs 
cp /etc/letsencrypt/live/domain.example/fullchain.pem /etc/exim4/certs/
cp /etc/letsencrypt/live/domain.example/privkey.pem /etc/exim4/certs/
service exim4 restart
chown Debian-exim:Debian-exim /etc/exim4/certs/
chown Debian-exim:Debian-exim /etc/exim4/certs/*
chmod 644 /etc/exim4/certs/*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ein solches Vorgehen wird dann auch bei jeder Erneuerung der Zertifikate erforderlich (s.u.)!&lt;/p&gt;

&lt;p&gt;Danach genügt es, die Serverkonfiguration neu zu laden (&lt;code&gt;service exim4 reload&lt;/code&gt;) und sich dann zu Testzwecken auf Port 25 zu verbinden und nach dem &lt;code&gt;EHLO&lt;/code&gt; ein &lt;code&gt;STARTTLS&lt;/code&gt; abzusetzen.&lt;/p&gt;

&lt;h4 id=&quot;-inn-&quot;&gt;&lt;em&gt;INN&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;INN&lt;/em&gt; stellt - jedenfalls in der in &lt;em&gt;Debian Jessie&lt;/em&gt; enthaltenen Version &lt;em&gt;2.5.4&lt;/em&gt; - ganz besondere Ansprüche: jedenfalls der Key muss für den Benutzer &lt;code&gt;news&lt;/code&gt; lesbar sein, und er benötigt &lt;code&gt;cert.pem&lt;/code&gt; und &lt;code&gt;chain.pem&lt;/code&gt; getrennt.&lt;/p&gt;

&lt;p&gt;Umsetzen könnte man das bspw. so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /etc/news
mkdir certs 
cp /etc/letsencrypt/live/domain.example/cert.pem /etc/news/certs/
cp /etc/letsencrypt/live/domain.example/chain.pem /etc/news/certs/
cp /etc/letsencrypt/live/domain.example/privkey.pem /etc/news/certs/
chown news:news /etc/news/certs/*
chmod 600 /etc/news/certs/*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Auch hier muss man dieses Vorgehen für eine Erneuerung der Zertifikate im Blick behalten (s.u.).&lt;/p&gt;

&lt;p&gt;Ein Einlesen der &lt;code&gt;inn.conf&lt;/code&gt; später (&lt;code&gt;service inn2 restart&lt;/code&gt;) sollte dann alles funktionieren wie geplant.&lt;/p&gt;

&lt;h3 id=&quot;zertifikat-updates&quot;&gt;Zertifikat-Updates&lt;/h3&gt;

&lt;p&gt;Die nunmehr im Dateisystem verstreuten Zertifikatskopien müssen nach jeder Erneuerung des Zertifikats gleichfalls erneuert werden, damit nicht ein ungültiges Zertifikat ausgeliefert wird. Sinnvollerweise geschieht das ebenso automatisiert wie die Erneuerung des Zertifikats; hilfreich dabei die Möglichkeit, &lt;code&gt;letsencrypt&lt;/code&gt; (bzw. &lt;code&gt;certbot&lt;/code&gt;) mittels &lt;code&gt;--post-hook&lt;/code&gt; nach einem Zertifikatsaustausch ein Script ablaufen zu lassen.&lt;/p&gt;

&lt;h4 id=&quot;-exim-&quot;&gt;&lt;em&gt;Exim&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Man könnte sich daher bspw. eine Datei &lt;code&gt;/usr/local/bin/certbot-exim4-renew.sh&lt;/code&gt; mit folgendem Inhalt anlegen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/dash
cp /etc/letsencrypt/live/domain.example/fullchain.pem /etc/exim4/certs/
cp /etc/letsencrypt/live/domain.example/privkey.pem /etc/exim4/certs/
service exim4 reload
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dazu passt dann ein &lt;em&gt;Cron&lt;/em&gt;-Eintrag der folgenden Art:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;certbot certonly --quiet -n --webroot -w /var/www/domain.example -d domain.example --keep-until-expiring --post-hook /usr/local/bin/certbot-exim4-renew.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Damit wird versucht, das Zertifikat für diesen Hostnamen (&lt;code&gt;domain.example&lt;/code&gt;) zu erneuern, jedoch nur, wenn es der Erneuerung bedürftig ist.&lt;/p&gt;

&lt;p&gt;Der Aufruf sollte in der &lt;em&gt;Crontab&lt;/em&gt; zeitlich &lt;em&gt;vor&lt;/em&gt; dem allgemeinen Aufruf &lt;code&gt;certbot renew --quiet&lt;/code&gt; erfolgen, damit erst das spezielle Zertifikat aktualisiert (und ggf. umkopiert) wird und danach die übrigen.&lt;/p&gt;

&lt;h4 id=&quot;-inn-&quot;&gt;&lt;em&gt;INN&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Für den &lt;em&gt;INN&lt;/em&gt; sähe diese Lösung analog mit einer Datei &lt;code&gt;/usr/local/bin/certbot-inn2-renew.sh&lt;/code&gt; so aus:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/dash
cp /etc/letsencrypt/live/domain.example/cert.pem /etc/news/certs
cp /etc/letsencrypt/live/domain.example/chain.pem /etc/news/certs
cp /etc/letsencrypt/live/domain.example/privkey.pem /etc/news/certs
cd /etc/news/certs
chown news:news *.pem
chmod 600 *.pem
service inn2 reload
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Der &lt;em&gt;Cron&lt;/em&gt;-Eintrag wäre dann entsprechend:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;certbot certonly --quiet -n --webroot -w /var/www/domain.example -d domain.example --keep-until-expiring --post-hook /usr/local/bin/certbot-inn2-renew.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Auch dieser Eintrag muss zeitlich &lt;em&gt;vor&lt;/em&gt; dem allgemeinen Aufruf &lt;code&gt;certbot renew --quiet&lt;/code&gt; liegen.&lt;/p&gt;

&lt;h3 id=&quot;und-ihr-&quot;&gt;Und ihr?&lt;/h3&gt;

&lt;p&gt;So richtig optimal erscheinen mir diese Lösungen noch nicht. Gibt es bessere Ideen? Andere Erfahrungen?&lt;/p&gt;

&lt;p&gt;Nutzt ihr &lt;em&gt;letsencrypt&lt;/em&gt; noch für andere Dienste als die oben genannten?&lt;/p&gt;

&lt;p&gt;An Euren Erfahrungen und Lösungen wäre ich interessiert und freue mich daher über Kommentare, Hinweise und Ergänzungen.&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/ab58b7fdf4c749689ad4f6dde41d970a&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Tue, 30 Aug 2016 14:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1943-guid.html</guid>
    <category>anleitung</category>
<category>debian</category>
<category>dovecot</category>
<category>exim</category>
<category>followerpower</category>
<category>inn</category>
<category>jessie</category>
<category>ssl</category>

</item>
<item>
    <title>Let's Encrypt - Updates</title>
    <link>https://netz-rettung-recht.de/archives/1916-Lets-Encrypt-Updates.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1916-Lets-Encrypt-Updates.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1916</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1916</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Im April hatte ich über &lt;em&gt;&lt;a href=&quot;https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html&quot; title=&quot;SSL/TLS mit Let&#039;s Encrypt | Netz - Rettung - Recht&quot;&gt;Let&amp;#8217;s Encrypt&lt;/a&gt;&lt;/em&gt; berichtet, den Dienst, der angetreten ist, das Ausstellen und die Installation von Zertifikaten zu vereinfachen.&lt;/p&gt;

&lt;p&gt;Der Betrieb lief seitdem gut und zuverlässig, und nachdem jetzt mehr als 90 Tage vergangen sind, kann ich auch berichten, dass die automatische Erneuerung der Zertifikate vor ihrem Ablauf gleichermaßen zuverlässig funktioniert; bemerkt habe ich sie nur durch die Benachrichtigungs-E-Mail meines Cronjobs. Ich bin also weiterhin sehr zufrieden.
Aber es gibt natürlich nicht nur Updates durch &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;, sondern auch &lt;em&gt;über&lt;/em&gt; &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;Der &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;-Client ist demletzt unter dem Namen &lt;em&gt;Certbot&lt;/em&gt; von der Electronic Frontier Foundation (EFF) &lt;a href=&quot;https://www.eff.org/deeplinks/2016/05/announcing-certbot-new-tls-robot&quot; title=&quot;Announcing Certbot: EFF&#039;s Client for Let&#039;s Encrypt | Electronic Frontier Foundation&quot;&gt;übernommen worden&lt;/a&gt;, eine Version 1.0 ist für Ende des Jahres angekündigt.&lt;/p&gt;

&lt;p&gt;Andere Zertifikats-Anbieter setzen sich zudem jetzt mit dem Neuankömmling auseinander. &lt;a href=&quot;https://www.startssl.com/NewsDetails?date=20160606&quot; title=&quot;404 Not Found&quot;&gt;Die einen&lt;/a&gt; springen auf den Zug auf und bieten neben &lt;em&gt;StartSSL&lt;/em&gt; jetzt auch &lt;em&gt;StartEncrypt&lt;/em&gt;, &lt;a href=&quot;https://letsencrypt.org/2016/06/23/defending-our-brand.html&quot; title=&quot;Defending Our Brand [Updated] -  Let&amp;#39;s Encrypt&quot;&gt;die anderen&lt;/a&gt; versuchen sich stattdessen lieber Rechte an dem Namen &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; zu sichern - ohne Erfolg, dafür aber mit Presseresonanz, nur vermutlich nicht solcher der erwünschten Art &amp;#8230;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 01 Jul 2016 04:19:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1916-guid.html</guid>
    <category>ssl</category>

</item>
<item>
    <title>SSL/TLS für Fortgeschrittene</title>
    <link>https://netz-rettung-recht.de/archives/1904-SSLTLS-fuer-Fortgeschrittene.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1904-SSLTLS-fuer-Fortgeschrittene.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1904</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1904</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Hat man dem eigenen Webserver erfolgreich &lt;a href=&quot;https://netz-rettung-recht.de/archives/1901-Der-eigene-Webserver-mit-SSLTLS.html&quot; title=&quot;&quot;&gt;SSL beigebracht&lt;/a&gt; und für ein valides Zertifikat gesorgt, bspw. &lt;a href=&quot;https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html&quot; title=&quot;&quot;&gt;mithilfe von &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;&lt;/a&gt;, finden sich in der Konfigurationsdatei (bei Debian: &lt;code&gt;/etc/apache2/mods-available/ssl.conf&lt;/code&gt;) noch etliche Schrauben und Rädchen, an denen man drehen kann.&lt;/p&gt;

&lt;h3 id=&quot;ssl-protokolle&quot;&gt;SSL-Protokolle&lt;/h3&gt;

&lt;p&gt;Unter anderem lassen sich dort die Protokolle angeben, die der Server anbieten soll. &amp;#8220;SSL&amp;#8221; (bzw. &amp;#8220;TLS) steht nämlich nicht für ein einzelnes Übertragungsprotokoll, sondern für eine ganze &lt;a href=&quot;https://en.wikipedia.org/wiki/Transport_Layer_Security#History_and_development&quot; title=&quot;&quot;&gt;Protokollfamilie&lt;/a&gt;, nämlich&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSL 2.0&lt;/li&gt;
&lt;li&gt;SSL 3.0&lt;/li&gt;
&lt;li&gt;TLS 1.0&lt;/li&gt;
&lt;li&gt;TLS 1.1&lt;/li&gt;
&lt;li&gt;TLS 1.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TLS 1.3 wird derzeit gerade entwickelt.&lt;/p&gt;

&lt;p&gt;Gegen SSLv2 und SSLv3 sind mögliche Angriffe bekannt, weshalb ein Server diese Protokolle nach Möglichkeit nicht mehr anbieten sollte, soweit nicht ältere Software darauf noch angewiesen ist. &lt;em&gt;Firefox&lt;/em&gt;, &lt;em&gt;Chrome&lt;/em&gt; und &lt;em&gt;Safari&lt;/em&gt; unterstützen mindestens TLS 1.0 von jeher, &lt;em&gt;Internet Explorer&lt;/em&gt; kann das jedenfalls ab IE7 und &lt;em&gt;Opera&lt;/em&gt; ab Version 5 - das sollte also in der Regel kein Grund sein, darauf zu verzichten.&lt;/p&gt;

&lt;p&gt;So kann das dann aussehen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SSLProtocol all -SSLv2 -SSLv3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Der &lt;em&gt;Apache 2.4&lt;/em&gt; (bzw. die verwendete OpenSSL-Version) unter &lt;em&gt;Debian Jessie&lt;/em&gt; bietet &lt;code&gt;SSLv2&lt;/code&gt; ohnehin nicht mehr an; dort genügt es also, &lt;code&gt;SSLv3&lt;/code&gt; zu verbieten.&lt;/p&gt;

&lt;h3 id=&quot;algorithmen&quot;&gt;Algorithmen&lt;/h3&gt;

&lt;p&gt;Für den Schlüsselaustausch zwischen Server und Client müssen die beiden sich auf eine Methode einigen und dann noch auswählen, mit welchem Chiffrieralgorithmus die Verbindung gesichert werden soll.&lt;/p&gt;

&lt;p&gt;Mathematik und Kryptographie entwickeln sich ebenso fort wie sich die Leistungsfähigkeit von Computern steigert - was gestern noch ausreichend sicher war, ist es morgen vielleicht nicht mehr. Es lohnt sich also, auch hierüber ein wenig nachzudenken - was nützt die schönste verschlüsselte Verbindung, wenn sie trivial zu knacken ist, nicht nur durch Geheimdienste und Strafverfolgungsbehörden, sondern auch durch andere, böswillige Dritte?&lt;/p&gt;

&lt;p&gt;Nun kann man sich entweder selbst in das Thema einlesen - und sollte das auch, wenn man es interessant findet oder es einem wichtig ist -, oder man vertraut Lösungen, die Dritte einem empfehlen. Egal was man tut, man sollte die SSL-Verbindung danach testen lassen und - ggf. - die Last im Auge behalten, wenn man aufwändigere, aber sicherere Algorithmen anbietet und an den Anfang der Liste stellt.&lt;/p&gt;

&lt;p&gt;Eine Möglichkeit, die angebotenen &lt;em&gt;Cipher Suites&lt;/em&gt; zu beschränken und ihre Reihenfolge zu sortieren, wäre die folgende:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SSLCipherSuite &#039;EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH:EDH:HIGH:+RSA:+SHA:MEDIUM:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP:!RC4:!CAMELLIA&#039;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(Ich mache hier &lt;em&gt;copy &amp;amp; paste&lt;/em&gt; - Kommentare dazu gerne, nun ja, in den Kommentaren.)&lt;/p&gt;

&lt;p&gt;Server und Client einigen sich dann auf eine der von beiden unterstützten Möglichkeiten, normalerweise anhand der Präferenzen, die der Client her, auf Wunsch aber auch in der Reihenfolge, in der die &lt;em&gt;Cipher Suites&lt;/em&gt; vorstehend - also in der Serverkonfiguration - angegeben sind. Für letzteres ist der Parameter &lt;code&gt;SSLHonorCipherOrder&lt;/code&gt; auf &amp;#8220;on&amp;#8221; zu setzen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SSLHonorCipherOrder on
&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id=&quot;-forward-secrecy-&quot;&gt;&lt;em&gt;Forward secrecy&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Unter &lt;em&gt;Forward secrecy&lt;/em&gt; versteht man (vereinfacht ausgedrückt), dass der zwischen Server und Client ausgehandelte temporäre Sitzungsschlüssel, mit dem Datenverbindung verschlüsselt wird, sich nicht aus den verwendeten Zertifikaten ableiten lässt. Ohne &lt;em&gt;forward secrecy&lt;/em&gt; kann jemand, der sich den privaten Schlüssel des Servers verschafft, nicht nur alle danach aufgebauten Verbindungen live mitlesen, er kann ggf. auch alle vorherigen (!) Verbindungen nachträglich entschlüsseln, wenn er sie mitgeschnitten hat. Die Gefährdung der zukünftigen Verbindungen kann man durch einen Schlüsseltausch verhindern, wenn und sobald man bemerkt hat, dass der private Schlüssel des Servers kompromittiert wurde. Man kann ohne &lt;em&gt;forward secrecy&lt;/em&gt; aber nicht verhindern, dass aufgezeichnete frühere Verbindungen komplett entschlüsselbar werden.&lt;/p&gt;

&lt;p&gt;Nicht jeder für den Schlüsselaustausch verwendbare Algorithmus bietet &lt;em&gt;forward secrecy&lt;/em&gt;; in dem oben gegebenen Beispiel stehen die Algorithmen, die es tun, aber vorne in der Liste (&lt;code&gt;DHE&lt;/code&gt; und &lt;code&gt;ECDHE&lt;/code&gt;).&lt;/p&gt;

&lt;h3 id=&quot;weitere-parameter-und-einstellungsm-glichkeiten&quot;&gt;Weitere Parameter und Einstellungsmöglichkeiten&lt;/h3&gt;

&lt;p&gt;Das Thema SSL/TLS ist komplex, und ich bin kein Spezialist dafür; daher kann ich hier nur darauf verweisen, dass es weitere, potentiell relevante Parameter gibt, die sich der Dokumentation und einschlägigen Webseiten entnehmen lassen.&lt;/p&gt;

&lt;p&gt;Debian bietet zudem in den Dateien &lt;code&gt;/etc/apache2/mods-available/ssl.conf&lt;/code&gt; (globale Konfiguration) und &lt;code&gt;/etc/apache2/sites-available/default-ssl&lt;/code&gt; (Konfiguration pro &lt;em&gt;virtual host&lt;/em&gt;) einigermaßen umfangreiche Kommentare zur Erläuterung einiger (mutmaßlich: der wichtigsten) Optionen an.&lt;/p&gt;

&lt;p&gt;Eine soll hier noch erwähnt werden: &lt;code&gt;SSLStrictSNIVHostCheck&lt;/code&gt;. &amp;#8220;Off&amp;#8221; bedeutet, dass ein Client, der kein &lt;em&gt;SNI&lt;/em&gt; beherrscht, dann eben immer das Zertifikat des Default-&lt;em&gt;vhost&lt;/em&gt; präsentiert bekommt, das dann in der Regel nicht zum Domainnamen passt, den er aufrufen wollte. &amp;#8220;On&amp;#8221; bedeutet, dass diese Clients dann nicht - via SSL - auf den entsprechenden &lt;em&gt;vhost&lt;/em&gt; oder - wenn es in der Serverkonfiguration oder im Default-&lt;em&gt;vhost&lt;/em&gt; gesetzt wird - auf irgendeinen &lt;em&gt;vhost&lt;/em&gt; zugreifen können.&lt;/p&gt;

&lt;h4 id=&quot;weitere-berlegungen&quot;&gt;Weitere Überlegungen&lt;/h4&gt;

&lt;p&gt;Neben der SSL-Konfiguration sollte der sicherheitsbewusste Serverbertreiber bzw. Webapplikationsentwickler auch noch einige andere Themen im Blick behalten:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Werden Cookies so gesetzt, dass ihr Inhalt nur über eine veschlüsselte Verbindung an den Server gesandt wird?&lt;br /&gt;
Stichwort: &lt;em&gt;&lt;a href=&quot;https://www.owasp.org/index.php/SecureFlag&quot; title=&quot;301 Moved Permanently&quot;&gt;secure cookie&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Empfiehlt es sich, den Server bestimmte sicherheitsrelevante &lt;em&gt;HTTP-Header&lt;/em&gt; übertragen zu lassen, und welche Bedeutung haben diese jeweils?&lt;br /&gt;
Stichwort: &lt;em&gt;&lt;a href=&quot;https://www.owasp.org/index.php/List_of_useful_HTTP_headers&quot; title=&quot;301 Moved Permanently&quot;&gt;security (related) headers&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wie ist sichergestellt, dass ein abhanden gekommenes oder aus anderen Gründen widerrufenes Zertifikat
nicht mehr als gültig akzeptiert wird?
Stichworte: &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Revocation_list&quot; title=&quot;&quot;&gt;Certificate Revocation List&lt;/a&gt;&lt;/em&gt; (&lt;em&gt;CRL&lt;/em&gt;) und &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol&quot; title=&quot;&quot;&gt;Online Certificate Status Protocol&lt;/a&gt;&lt;/em&gt; (&lt;em&gt;OCSP&lt;/em&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zu dem angerissenen Thema der &lt;em&gt;HTTP-Header&lt;/em&gt; gehört u.a. auch &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security&quot; title=&quot;&quot;&gt;HTTP Strict Transport Security&lt;/a&gt;&lt;/strong&gt;, kurz &lt;em&gt;HSTS&lt;/em&gt;, mit dem der Server dem Client mitteilt, dass er derzeit und auch für die Zukunft (jedenfalls in dem durch den Server genannten Zeitraum) die Verbindung zu diesem Hostnamen (&amp;#8220;Domain&amp;#8221;) nur per HTTPS herstellen soll.&lt;/p&gt;

&lt;p&gt;Wie ich bereits mehrfach betonte: ein weites Feld, und nicht unbedingt meines. &lt;img src=&quot;https://netz-rettung-recht.de/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;ssl-verbindungen-testen-und-bewerten&quot;&gt;SSL-Verbindungen testen und bewerten&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://ssllabs.com/&quot; title=&quot;301 Moved Permanently&quot;&gt;SSL Labs&lt;/a&gt;&lt;/strong&gt; bietet einen Onlinetest für die Konfiguration des Servers und des Browsers an. Ruft man den Test (bspw.) für &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=netz-rettung-recht.de&quot; title=&quot;SSL Server Test: netz-rettung-recht.de (Powered by Qualys SSL Labs)&quot;&gt;dieses Blog&lt;/a&gt; auf, werden alle möglichen Parameter getestet - ja, das dauert eine Weile - und dann mit einer Schulnote (im amerikanischen System) von A-F bewertet, wobei A die beste, F die schlechteste Note darstellt. Außerdem erhält man eine Vielzahl von auch mit Links hinterlegten Hinweisen auf Schwachstellen und Verbesserungsmöglichkeiten.&lt;/p&gt;

&lt;p&gt;Wer lieber auf der Kommandozeile arbeitet, lädt sich am besten &lt;strong&gt;&lt;a href=&quot;http://testssl.sh/&quot; title=&quot;302 Found&quot;&gt;testssl.sh&lt;/a&gt;&lt;/strong&gt; von &lt;a href=&quot;https://github.com/drwetter&quot; title=&quot;drwetter (Dirk Wetter) · GitHub&quot;&gt;Dirk Wetter&lt;/a&gt; herunter.&lt;/p&gt;

&lt;p&gt;Wer hingegen wissen will, welche sicherheitsrelevanten &lt;em&gt;HTTP-Header&lt;/em&gt; sein Server überträgt, ist bei &lt;strong&gt;&lt;a href=&quot;https://securityheaders.io/&quot; title=&quot;&quot;&gt;securityheaders.io&lt;/a&gt;&lt;/strong&gt; gut aufgehoben. Auch hier gibt es Schulnoten zur Bewertung.&lt;/p&gt;

&lt;p&gt;Auch &lt;a href=&quot;https://ssl-tools.net/&quot; title=&quot;SSL, STARTTLS and Zertifikate prüfen · SSL-Tools&quot;&gt;SSL-Tools&lt;/a&gt; bietet eine Vielzahl von Test, auch für Mailserver, hat allerdings offenbar noch die eine oder andere &lt;a href=&quot;http://lutz.donnerhacke.de/Blog/Das-kann-jedem-passieren&quot; title=&quot;302 Found&quot;&gt;Schwäche&lt;/a&gt; jedenfalls im User Interface &amp;#8230;&lt;/p&gt;

&lt;h3 id=&quot;disclaimer&quot;&gt;Disclaimer&lt;/h3&gt;

&lt;p&gt;Die Einzelheiten rund um Protokolle, Algorithmen und Parameter, sozusagen die Eingeweise der TLS-Implementationen, sind weit davon entfernt, mein Spezialgebiet zu sein. Dankenswerterweise hatte ich kompetente Korrekturleser, aber etwaiger verbliebener Blödsinn bleibt mein Verschulden und mag in den Kommentaren korrigiert werden, in denen ich auch gerne Ergänzungen entgegennehme.&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/cac032569eb14406a4a9d3f3ab29f144&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Thu, 14 Apr 2016 05:45:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1904-guid.html</guid>
    <category>apache</category>
<category>ssl</category>

</item>
<item>
    <title>SSL/TLS mit Let's Encrypt</title>
    <link>https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1903-SSLTLS-mit-Lets-Encrypt.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1903</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1903</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Bereits &lt;a href=&quot;https://netz-rettung-recht.de/archives/1901-Der-eigene-Webserver-mit-SSLTLS.html&quot; title=&quot;&quot;&gt;vergangene Woche&lt;/a&gt; berichtete ich von meinen Irrungen und Wirrungen des letzten Jahrzehnts mit SSL/TLS im Web. Erst Ende 2015 hatte ich mich aufgerafft, über &lt;a href=&quot;https://www.startssl.com/&quot; title=&quot;Notice to all StartCom subscribers&quot;&gt;StartCom&lt;/a&gt; für einige Domains Zertifikate erstellen zu lassen, und parallel die Berichterstattung über &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; verfolgt.&lt;/p&gt;

&lt;p&gt;Der Workflow für die Erstellung und Pflege von HTTPS-Zertifikaten kann schnell komplex werden:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Am Anfang steht die Erzeugung eines Schlüsselpaares, denn das spätere Zertifikat wird nur derjenige verwenden können, der auch den passenden privaten Schlüssel hat.&lt;/li&gt;
&lt;li&gt;Dann ist für jedes Zertifikat ein &lt;em&gt;Certificate Signing Request&lt;/em&gt; (&lt;em&gt;CSR&lt;/em&gt;) zu erstellen; das ist quasi die Roh-Form des späteren Zertifikats mit den notwendigen Informationen, die darin enthalten sein sollen.&lt;/li&gt;
&lt;li&gt;Dieser &lt;em&gt;CSR&lt;/em&gt; muss dann von der Zertifierungsstelle (Certificate Authority, &lt;em&gt;CA&lt;/em&gt;) digital signiert werden.&lt;/li&gt;
&lt;li&gt;Das so entstandene Zertifikat muss gespeichert und in die Webserver-Konfiguration eingebunden werden.&lt;/li&gt;
&lt;li&gt;Der ganze Ablauf ist nur zielführend, wenn die &lt;em&gt;CA&lt;/em&gt; von den verbreiteten Browsern anerkannt ist, den von ihr signierten Zertifikaten also vertraut wird. Dafür wollen die meisten &lt;em&gt;CAs&lt;/em&gt; Geld. Zudem müssen sie sich über einen mehr oder weniger aufwendigen Weg zumindest vergewissern, dass derjenige, der ein Zertifikat für einen bestimmten Hostnamen ausgestellt haben möchte, über diesen auch verfügen kann.&lt;/li&gt;
&lt;li&gt;Zertifikate werden in der Regel nur für einen begrenzten Zeitraum - meistens ein Jahr - ausgestellt. Danach müssen sie (rechtzeitig!) verlängert werden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://letsencrypt.org/&quot; title=&quot; Let&amp;#39;s Encrypt&quot;&gt;Let&amp;#8217;s Encrypt&lt;/a&gt;&lt;/em&gt; ist angetreten, diese Abläufe weitestmöglich zu vereinfachen.&lt;/p&gt;

&lt;h3 id=&quot;-let-s-encrypt-die-prinzipien&quot;&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; - die Prinzipien&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; arbeitet kostenlos und veröffentlicht die verwendeten Schnittstellen. Es stellt eine &lt;em&gt;CA&lt;/em&gt; zur Verfügung, die automatisch Zertifikate ausstellt, nachdem sie überprüft hat, dass der Anfragende die administrative Kontrolle über den entsprechenden Hostnamen hat - beispielsweise, indem &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; verlangt, dass eine bestehende Datei auf dem Webserver unter diesem Hostnamen hinterlegt wird. Die erstellten Zertifikate werden öffentlich gemacht; es kann also jeder jederzeit nachvollziehen, wann &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; welche Zertifikate erstellt hat.&lt;/p&gt;

&lt;p&gt;Mittlerweile ist das Zwischenzertifikat von &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; nicht nur durch &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; selbst, sondern auch durch eine andere &lt;em&gt;CA&lt;/em&gt; (&lt;em&gt;IdenTrust&lt;/em&gt;) signiert und wird daher regelmäßig von den Browsern als vertrauenswürdig anerkannt. Von &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; ausgestellte Zertifikate werden also akzeptiert und führen nicht zu irgendwelchen Warnmeldungen. Sie gelten allerdings nur rund 90 Tage und müssen dann erneut werden.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; stellt Client-Software zur Verfügung, die den gesamten, einleitend dargestellten Workflow automatisiert, ermöglicht es aber auch, die notwendigen Schritte in beliebigem Umfang manuell nachzuvollziehen oder auch eigene Lösungen zu programmieren. Im vollautomatischen Modus erstellt &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; das notwendige Schlüsselpaar und den &lt;em&gt;CSR&lt;/em&gt;, überprüft, dass der Antragsteller den Hostnamen kontrolliert, stellt das Zertifikat aus und speichert es, passt die Webserver-Konfiguration an und bindet das Zertifikat ein und kann auf Wunsch rechtzeitig vor Ablauf ein neues Zertifikat erstellen.&lt;/p&gt;

&lt;h3 id=&quot;-let-s-encrypt-und-der-apache-webserver-unter-debian-jessie-&quot;&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; und der &lt;em&gt;Apache&lt;/em&gt;-Webserver unter &lt;em&gt;Debian Jessie&lt;/em&gt;&lt;/h3&gt;

&lt;p&gt;Im Anschluss möchte ich einen weitgehend, aber nicht völlig automatisierten Ablauf zum Erstellen von SSL-Zertifikaten und deren Einbindung in einen &lt;em&gt;Apache&lt;/em&gt; unter &lt;em&gt;Debian Jessie&lt;/em&gt; darstellen. Es ist durchaus möglich, weit weniger auf Automatismen zu setzen; dann muss der Client auch nicht zwingend mit Root-Rechten laufen. &lt;em&gt;Matthias Gutjahr&lt;/em&gt; schildert in seinem Blog eine Möglichkeit dafür; &lt;em&gt;Dirk Deimeke&lt;/em&gt; hat eine weitere Alternative dargestellt. Beide Beiträge sind am Ende dieses Blogbeitrags verlinkt.&lt;/p&gt;

&lt;h4 id=&quot;installation&quot;&gt;Installation&lt;/h4&gt;

&lt;p&gt;Ab &lt;em&gt;Jessie&lt;/em&gt;, der derzeit stabilen &lt;em&gt;Debian&lt;/em&gt;-Version, steht &lt;code&gt;letsencrypt&lt;/code&gt; als Paket zur Verfügung, allerdings nur in den Backports. Wenn sich in der &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; also die Zeile &lt;code&gt;deb http://ftp.debian.org/debian jessie-backports main&lt;/code&gt; findet, ist die Installation daher denkbar einfach:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get -t jessie-backports install letsencrypt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Die umfangreichen Abhängigkeiten werden mitinstalliert.&lt;/p&gt;

&lt;p&gt;Wer noch unter &lt;em&gt;Wheezy&lt;/em&gt; arbeitet, benötigt etwas mehr Vertrauen in die Macher von &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; - und Platz für ein umfangreicheres Software-Paket (&lt;code&gt;letsencrypt-auto&lt;/code&gt;), das u.a. eine komplette virtuelle &lt;em&gt;Python&lt;/em&gt;-Umgebung mit sich schleppt:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /usr/local
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;letsencrypt-auto&lt;/code&gt; akzeptiert dann denselben Input wie &lt;code&gt;letsencrypt&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;zertifikat-erstellen-lassen&quot;&gt;Zertifikat erstellen lassen&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;letsencrypt&lt;/code&gt; bietet eine &lt;code&gt;ncurses&lt;/code&gt;-Oberfläche, die es ermöglicht, auf einige Kommandozeilen-Parameter zu verzichten und ggf. notwendige Abfragen im Dialog zu beantworten. Dazu gehört beim ersten Start u.a. die Angabe einer E-Mail-Adresse für eine mögliche Kontaktaufnahme und die Bestätigung der AGB, die erforderlich ist. Danach erstellt &lt;code&gt;letsencrypt&lt;/code&gt; automatisch einen Account samt Schlüsselpaar, so dass weitere Aufrufe in der Regel ohne Interaktion ablaufen können.&lt;/p&gt;

&lt;p&gt;Alle Daten werden standardmäßig unter &lt;code&gt;/etc/letsencrypt/&lt;/code&gt; abgelegt.&lt;/p&gt;

&lt;p&gt;Der folgende Aufruf fordert ein Zertifikat für die Hostnamen &lt;code&gt;domain.example&lt;/code&gt; und &lt;code&gt;www.domain.example&lt;/code&gt; an, deren Dateien auf der Platte im Verzeichnis &lt;code&gt;/var/www/domain.example&lt;/code&gt; (&lt;em&gt;Webroot&lt;/em&gt;) liegen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;letsencrypt certonly --webroot -w /var/www/domain.example/ -d domain.example -d www.domain.example
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Falls notwendig, werden Mailadresse und Zustimmung zu den AGB (&amp;#8220;Terms of Service&amp;#8221;, &amp;#8220;TOS&amp;#8221;) abgefragt und ein privater Schlüssel (bzw. das Schlüsselpaar) erstellt. Dann wird der &lt;em&gt;CSR&lt;/em&gt; an &lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt; geschickt, temporär eine unter &lt;code&gt;http://domain.example/&lt;/code&gt; abrufbare Datei im &lt;em&gt;Webroot&lt;/em&gt; erstellt und so geprüft, dass man wirklich die Kontrolle über diesen Hostnamen hat, das Zertifikat erstellt, unter &lt;code&gt;/etc/letsencrypt/archive/domain.example/&lt;/code&gt; gespeichert und ein Symlink von &lt;code&gt;/etc/letsencrypt/live/domain.example/&lt;/code&gt; nach dort erstellt.&lt;/p&gt;

&lt;p&gt;Soll das Zertifikat für weitere Hostnamen gelten, können beliebig viele Folgen von &lt;code&gt;-w webroot -d hostname&lt;/code&gt; angeschlossen werden. Es folgt jeweils auf das &lt;code&gt;-w webroot&lt;/code&gt; die Angabe der Hostnames, die zu diesem Webroot gehören.&lt;/p&gt;

&lt;h4 id=&quot;zertifikat-beim-apache-einbinden&quot;&gt;Zertifikat beim &lt;em&gt;Apache&lt;/em&gt; einbinden&lt;/h4&gt;

&lt;p&gt;Eine minimale Konfiguration für den &lt;em&gt;virtual host&lt;/em&gt; könnte im &lt;em&gt;Apache 2.4&lt;/em&gt; (&lt;em&gt;Debian Jessie&lt;/em&gt;) so aussehen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:443&amp;gt;
    ServerName domain.example
    ServerAlias www.domain.example

    DocumentRoot /var/www/domain.example

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/domain.example/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.example/privkey.pem
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Der &lt;em&gt;Apache 2.2&lt;/em&gt;, der mit &lt;em&gt;Debian Wheezy&lt;/em&gt; ausgeliefert wird, muss Zertifikat und Zwischenzertifikat der &lt;em&gt;CA&lt;/em&gt; getrennt ausliefern:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:443&amp;gt;
    [...]
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/domain.example/cert.pem
    SSLCertificateChainFile /etc/letsencrypt/live/domain.example/chain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.example/privkey.pem
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id=&quot;zertifikate-erneuern&quot;&gt;Zertifikate erneuern&lt;/h4&gt;

&lt;p&gt;Folgender &lt;em&gt;Cronjob&lt;/em&gt; prüft täglich um 4 Uhr morgens, ob ein Zertifikat erneuert werden muss, und nimmt diese Erneuerung automatisch vor, wenn sich der Ablaufzeitpunkt nähert:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;00 4 * * * letsencrypt renew --keep-until-expiring
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;weiterer-lesestoff&quot;&gt;Weiterer Lesestoff&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;: &lt;a href=&quot;https://letsencrypt.org/getting-started/&quot; title=&quot;Getting Started -  Let&amp;#39;s Encrypt&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wouter Verhelst im &lt;em&gt;WEBlog — Wouter’s Eclectic Blog&lt;/em&gt;: &lt;a href=&quot;http://grep.be/blog//en/computer/play/Playing_with_Letsencrypt/&quot; title=&quot;301 Moved Permanently&quot;&gt;Playing with Letsencrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Matthias Gutjahr im &lt;em&gt;Sperrobjekt Weblog&lt;/em&gt;: &lt;a href=&quot;http://blog.sperrobjekt.de/content/1000480-Lets-Encrypt-Zertifikate-manuell-erzeugen.html&quot; title=&quot;&quot;&gt;&lt;em&gt;Let&amp;#8217;s Encrypt&lt;/em&gt;-Zertifikate manuell erzeugen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dirk Deimeke in &lt;em&gt;Dirks Logbuch&lt;/em&gt;: &lt;a href=&quot;http://www.deimeke.net/dirk/blog/index.php?/archives/3681-Lets-Encrypt-....html&quot; title=&quot;302 Found&quot;&gt;Let&amp;#8217;s Encrypt &amp;#8230;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/051a5cf219b94e51bbfd314bc7089125&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Apr 2016 07:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1903-guid.html</guid>
    <category>anleitung</category>
<category>apache</category>
<category>debian</category>
<category>jessie</category>
<category>ssl</category>

</item>
<item>
    <title>Der eigene Webserver mit SSL/TLS</title>
    <link>https://netz-rettung-recht.de/archives/1901-Der-eigene-Webserver-mit-SSLTLS.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>https://netz-rettung-recht.de/archives/1901-Der-eigene-Webserver-mit-SSLTLS.html#comments</comments>
    <wfw:comment>https://netz-rettung-recht.de/wfwcomment.php?cid=1901</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>https://netz-rettung-recht.de/rss.php?version=2.0&amp;type=comments&amp;cid=1901</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Datenströme im Netz zu verschlüsseln ist wichtig, aber auch zunehmend Allgemeingut. Telnet würde sicherlich niemand mehr zum Zugriff auf einen entfernten Rechner nutzen; stattdessen nimmt man SSH. Auch bei anderen Protokollen ist die Übertragung von Passworten im Klartext schon lange out: es fing an mit APOP für den Zugriff über POP3 und CRAM-MD5 für SMTP-Auth, und schon etliche Jahre nutze ich nur noch POP3S/IMAPS/SMTPS, also eine komplette Verschlüsselung des gesamten Datenstroms. So hat auch das auf SSH basierende SCP/SFTP schon lange FTP ersetzt, und nachdem sich mittlerweile auch NNTPS und der verschlüsselte Zugriff auf IRC-Server verbreitet haben, bleiben nur noch wenige Protokolle &amp;#8220;offen&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Selbstverständlich sollte auch - zumindest - die Übertragung von Passworten via HTTP gesichert werden, was die Einrichtung von HTTPS erfordert. Je mehr sich webbasierte Dienste und Apps verbreiten, desto wichtiger ist das. Es ist allerdings - leider - nicht ganz so einfach.&lt;/p&gt;

&lt;h3 id=&quot;ssl-tls-zertifikate-und-deren-pr-fung&quot;&gt;SSL-/TLS-Zertifikate und deren Prüfung&lt;/h3&gt;

&lt;p&gt;Das liegt darin, dass Verschlüsselung allein zumindest im Grundsatz nicht genügt - wichtig ist auch Authentifizierung, also die Überprüfung, ob man auch mit der richtigen Gegenstelle spricht oder sich ein Dritter, der &amp;#8220;Man in the middle&amp;#8221;, dazwischengehängt hat. Zu einer mittels SSL/TLS (in Zukunft: SSL als Sammelbegriff für beides) gesicherten Verbindung gehört daher - eigentlich - auch immer die Überprüfung des Zertifikats der Gegenstelle. Dazu muss man entweder den Fingerprint des Zertifikats kennen und prüfen - PGP/GPG lässt grüßen -, oder man begnügt sich damit, dass eine Zertifizierungsstelle die Echtheit des Zertifikats bestätigt hat (und hofft auf deren Sorgfalt; eine Hoffnung, die die Praxis bereits vielfach enttäuscht hat).&lt;/p&gt;

&lt;p&gt;Will man selbst verschlüsselte Zugänge anbieten, genügt es für die meisten Dienste, ein selbst-signiertes Zertifikat zu erstellen und den Nutzern den Fingerprint mitzuteilen. In der Regel ist der Nutzerkreis selbstgehosteter Dienste nämlich überschaubar: der private Mailserver wird zum Versand und zum Mailabruf in der Regel nur selbst oder allenfalls von Familienmitgliedern und Freunden genutzt, die dem selbst-signierten Zertifikat dann vertrauen können. Nicht unüblich ist es auch, auf eine Zertifikatsprüfung zu verzichten und jedes präsentierte Zertifikat zu akzeptieren, also nur die Verschlüsselung zu nutzen und der Gegenstelle zu vertrauen. Das ist insofern nachvollziehbar, als es deutlich einfacher ist, (unverschlüsselten) Datenverkehr mitzulesen als sich als &amp;#8220;Man in the middle&amp;#8221; mit einem falschen Zertifikat in den verschlüsselten Datenstrom einzuklinken.&lt;/p&gt;

&lt;h4 id=&quot;https-im-speziellen&quot;&gt;HTTPS im Speziellen&lt;/h4&gt;

&lt;p&gt;Bei Webdiensten liegt der Fall hingegen etwas anders: zumeist erfolgt der Zugriff für die Allgemeinheit - der nicht zwingend einer Absicherung durch Verschlüsselung bedürfte - über dieselbe &amp;#8220;Domain&amp;#8221; (ich verwende den Begriff hier umgangssprachlich; richtiger wäre &amp;#8220;Hostname&amp;#8221;) wie die Administration. Ein Blog, bspw., das unter &lt;code&gt;http://meinblog.example/&lt;/code&gt; zugänglich ist, wird meist über &lt;code&gt;http://meinblog.example/admin/&lt;/code&gt; verwaltet, nicht aber über &lt;code&gt;http://admin.meinblog.example/&lt;/code&gt;. Ich muss also damit rechnen, dass auch die Allgemeinheit auf meine Webseiten über HTTPS zugreift, oder ich will das sogar erzwingen, damit ich nicht versehentlich Passwörter über eine ungeschützte Verbindung übertrage.&lt;/p&gt;

&lt;p&gt;Dann habe ich aber ein Problem: mein selbst-signiertes Zertifikat ist den Besuchern der Webseite natürlich unbekannt, und Browser generieren für diesen Anwendungsfall zunehmend auffälligere Warn- und Fehlermeldungen, die einen Zugriff auf die Seite entweder ganz unterbinden oder doch arg erschweren und den Durchschnittsnutzer abschrecken (was ja auch Sinn der Sache ist).&lt;/p&gt;

&lt;h4 id=&quot;-virtual-hosting-&quot;&gt;&lt;em&gt;Virtual Hosting&lt;/em&gt;&lt;/h4&gt;

&lt;p&gt;Zu diesem Problem der Fehlermeldungen bei selbst-signierten Zertifikaten kommt noch ein ein weiteres hinzu: es ist üblich, über einen Webserver (auf ein- und derselben IP-Adresse) eine Vielzahl von &amp;#8220;Domains&amp;#8221; (also getrennten Webseiten) anzubieten. Bei größeren Anbietern können das hunderte oder zigtausende Nutzer sein, die sich da auf einem Host tummeln, aber auch der private Nutzer hat vielleicht neben seiner Homepage unter &lt;code&gt;meine-domain.example&lt;/code&gt; auch noch ein Blog unter &lt;code&gt;blog.meine-domain.example&lt;/code&gt; oder will schlicht seine Webseiten sowohl unter &lt;code&gt;meine-domain.example&lt;/code&gt; als auch unter &lt;code&gt;www.meine-domain.example&lt;/code&gt; erreichbar machen. Das sind aber alles unterschiedliche Hostnamen, und da jedes SSL-Zertifikat angeben muss, für welchen Hostnamen es gültig ist, haben wir das nächste Problem: liefert der Webserver für &lt;code&gt;www.meine-domain.example&lt;/code&gt; das Zertifikat für &lt;code&gt;meine-domain.example&lt;/code&gt; aus, verfallen die Warnmeldungen im Browser nicht selten in eine noch schrillere Tonlage.&lt;/p&gt;

&lt;p&gt;Es ist leider auch nicht so einfach, für jede &amp;#8220;Domain&amp;#8221; ein eigenes Zertifikat zu präsentieren. Der Zugriff auf solche &lt;em&gt;virtual hosts&lt;/em&gt; erfolgt nämlich in der Weise, dass der Browser einen Header mitschickt, aus dem sich ergibt, auf welche &amp;#8220;Domain&amp;#8221; er zugreifen will. Für diesen Zugriff muss aber die verschlüsselte Verbindung schon stehen; andersherum weiss der Server beim Verbindungsaufbau noch nicht, welche &amp;#8220;Domain&amp;#8221; angefragt wird, und kann daher auch nicht das jeweils &amp;#8220;richtige&amp;#8221; Zertifikat ausliefern.&lt;/p&gt;

&lt;p&gt;Was also tun?&lt;/p&gt;

&lt;h3 id=&quot;l-sungswege&quot;&gt;Lösungswege&lt;/h3&gt;

&lt;p&gt;Über die Jahre habe ich verschiedene - allesamt mehr oder weniger unbefriedigende - Möglichkeiten getestet, um diesem Problem zu Leibe zu rücken.&lt;/p&gt;

&lt;h4 id=&quot;die-eigene-ca&quot;&gt;Die eigene CA&lt;/h4&gt;

&lt;p&gt;Angefangen habe ich vor gut einem Jahrzehnt mit einer eigenen Zertifizierungsstelle, die meine SSL-Zertifikate signiert. Dann reicht es nämlich, das Stammzertifikat dieser Zertifizierungsstelle dem Browser (und ggf. dem Mailprogramm) als gültig unterzuschieben, und alle anderen Zertifikate werden automatisch akzeptiert. Das erleichtert zumindest einmal mir selbst (und Freunden und Bekannten, die mir ausreichend trauen) den Umgang mit verschiedenen Servern und ggf. verschiedenen Hostnamen, behebt aber nicht das Problem, dass das Zertifikat immer nur für einen Hostnamen (eine &amp;#8220;Domain&amp;#8221;) gültig ist, und hilft auch den Webseitenbesuchern nicht.&lt;/p&gt;

&lt;p&gt;Ich habe mich daher in der Regel darauf beschränkt, HTTPS nur ergänzend anzubieten oder nur für solche Webseiten, die ausschließlich intern genutzt werden und sich nicht an die Allgemeinheit richten. Professionell geht aber fraglos anders.&lt;/p&gt;

&lt;h4 id=&quot;san&quot;&gt;SAN&lt;/h4&gt;

&lt;p&gt;Danach habe ich mich mit &lt;em&gt;Subject Alternate Names&lt;/em&gt;, kurz &lt;em&gt;SAN&lt;/em&gt;, vertraut gemacht. Es ist nämlich möglich, einem Zertifikat mitzugeben, dass es für mehr als einen Hostnamen gültig ist. Zum einen gibt es - nicht empfehlenswerte - sog. &amp;#8220;Wildcard-Zertifikate&amp;#8221;, die für alle Subdomains einer bestimmten Domain gültig sind, bspw. &lt;code&gt;*.domain.example&lt;/code&gt;. Zum anderen gibt es &lt;em&gt;SAN&lt;/em&gt; - zusätzliche Hostnamen, für die das jeweilige Zertifikat &lt;em&gt;auch&lt;/em&gt; gilt. Die kann man bei der Erstellung des Zertifikats mit angeben.&lt;/p&gt;

&lt;p&gt;Das funktioniert ganz gut, löst aber zum einen nicht das Problem der fehlenden allgemeinen Akzeptanz des Zertifikats und schafft zudem zwei neue Schwierigkeiten. Zum einen kann jeder Besucher durch Ansicht des Zertifikats feststellen, welche Webseiten auf dem Server sonst noch so gehostet werden (was nicht immer optimal ist), zum anderen braucht es für jede neue &amp;#8220;Domain&amp;#8221;, auf die auch per HTTPS zugegriffen werden soll, auch ein komplett neues Zertifikat.&lt;/p&gt;

&lt;h4 id=&quot;sni&quot;&gt;SNI&lt;/h4&gt;

&lt;p&gt;Dem strukturellen Problem, dass der Server &lt;em&gt;erst&lt;/em&gt; die verschlüsselte Verbindung aufbauen muss und danach erfährt, für welche &amp;#8220;Domain&amp;#8221; er das eigentlich tun soll, ist man mit &lt;em&gt;Server Name Indication&lt;/em&gt;, kurz &lt;em&gt;SNI&lt;/em&gt;, zu Leibe gerückt.  Das ist eine Erweiterung des TLS-Protokolls, die es dem Client erlaubt, beim Verbindungsaufbau bereits mitzuteilen, aus welcher &amp;#8220;Domain&amp;#8221; er später Webseiten abrufen will, so dass der Server ihm dann das richtige Zertifikat präsentieren kann. So kann auch der Webserver für jede &amp;#8220;Domain&amp;#8221; ein eigenes Zertifikat anbieten.&lt;/p&gt;

&lt;p&gt;Mittlerweile darf man davon ausgehen, dass &lt;em&gt;SNI&lt;/em&gt; so verbreitet ist, dass man es im praktischen Betrieb voraussetzen kann: Firefox unterstützt es seit Version 2.0, der Internet Explorer seit Version 7 und Windows Vista (nicht unter Windows XP), und auch &lt;code&gt;wget&lt;/code&gt; sollte das seit 2012 beherrschen.&lt;/p&gt;

&lt;h4 id=&quot;kommerzielle-zertifikate&quot;&gt;Kommerzielle Zertifikate&lt;/h4&gt;

&lt;p&gt;Dies wiederum ermöglicht es, auf kommerzielle SSL-Zertifikate zurückzugreifen. Deren Anbieter lassen sich nämlich ihre Dienste bei &amp;#8220;Wildcard-Zertifikaten&amp;#8221; oder solchen mit einer Vielzahl von Hostnamen (oder auch bei erweiterter Validierung der &amp;#8220;Domains&amp;#8221;, für die das Zertifikat gelten soll) geradezu fürstlich bezahlen; Zertifikate für nur ein oder zwei Namen (also bspw. &lt;code&gt;domain.example&lt;/code&gt; und &lt;code&gt;www.domain.example&lt;/code&gt;) sind hingegen erschwinglich oder gar kostenlos. &lt;em&gt;SNI&lt;/em&gt; macht es jetzt möglich, jeder &amp;#8220;Domain&amp;#8221; ihr eigenes günstiges Zertifikat zuzuweisen, bspw. von &lt;a href=&quot;https://www.startssl.com/&quot; title=&quot;Notice to all StartCom subscribers&quot;&gt;StartCom&lt;/a&gt;, einem Anbieter, der Zertifikate für maximal zwei &amp;#8220;Domains&amp;#8221; kostenlos abgibt (dann allerdings für den Widerruf eines kompromittierten Zertifikats Geld verlangt - nun ja).&lt;/p&gt;

&lt;p&gt;So kann man dann allmählich vernünftig mit SSL arbeiten.&lt;/p&gt;

&lt;h4 id=&quot;die-zukunft-letsencrypt&quot;&gt;Die Zukunft: letsencrypt&lt;/h4&gt;

&lt;p&gt;Neuerdings befindet sich zudem mit &lt;a href=&quot;https://letsencrypt.org/&quot; title=&quot; Let&amp;#39;s Encrypt&quot;&gt;Let&amp;#8217;s Encrypt&lt;/a&gt; ein Anbieter am Start, der sich kostenloses, freies und massentaugliches SSL/TLS auf die Fahnen geschrieben hat:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Let’s Encrypt is a new Certificate Authority:&lt;br /&gt;
  It’s free, automated, and open.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dazu werde ich später mehr berichten.&lt;/p&gt;

&lt;h3 id=&quot;ssl-zertifikate-und-apache&quot;&gt;SSL-Zertifikate und Apache&lt;/h3&gt;

&lt;p&gt;Nach der Theorie nun etwas Praxis: wie richte ich beim &lt;em&gt;Apache&lt;/em&gt;-Webserver einen &lt;em&gt;virtual hosts&lt;/em&gt; mit SSL ein?&lt;/p&gt;

&lt;p&gt;Im Prinzip ist das recht einfach; Debian liefert bspw. eine entsprechende Konfiguration schon mit. Ich setze im Folgenden voraus, dass sowohl passende SSL-Zertifikate (mit dem zugehörigen &lt;em&gt;private key&lt;/em&gt; in entschlüsselter Form, d.h. ohne Passwortschutz) vorhanden als auch &lt;em&gt;virtual hosts&lt;/em&gt; grundsätzlich eingerichtet sind. Die Zertifikate speichere ich im Verzeichnis &lt;code&gt;/etc/apache2/ssl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Eine Basis-Konfiguration könnte dann - mit einem Zertifikat von &lt;em&gt;StartCom&lt;/em&gt; - bspw. so aussehen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:443&amp;gt;
    ServerName meine-domain.example
    ServerAlias www.meine-domain.example

    DocumentRoot /var/www/meine-domain.example

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/meine-domain.example.crt
    SSLCertificateKeyFile /etc/apache2/ssl/meine-domain.example.key
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Will man alle Zugriff von HTTP auf HTTPS umleiten, kann man bspw. folgendes ergänzen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
    ServerName meine-domain.example
    ServerAlias www.meine-domain.example

    Redirect / https://meine-domain.example/
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;disclaimer&quot;&gt;Disclaimer&lt;/h3&gt;

&lt;p&gt;SSL/TLS, der Umgang mit Zertifikaten und die Konfiguration des &lt;em&gt;Apache&lt;/em&gt; sind ein weites Feld, für das ich zudem kein Spezialist bin.&lt;/p&gt;

&lt;p&gt;Dieser Beitrag will einen kurzen, knappen und daher notwendigerweise unvollständigen Überblick zu diesem Thema geben und zur eigenen Beschäftigung damit anregen. Ich habe daher manches vereinfacht, anderes weggelassen, wieder anderes - absichtlich oder unabsichtlich - ungenau dargestellt.&lt;/p&gt;

&lt;p&gt;Dies ist &lt;strong&gt;kein&lt;/strong&gt; Tutorial, und die am Schluss genannten Beispiele sind &lt;strong&gt;nicht&lt;/strong&gt; zur 1:1-Übernahme via &lt;em&gt;copy &amp;amp; paste&lt;/em&gt; geeignet.&lt;/p&gt;

&lt;p&gt;Wenn sich Fehler eingeschlichen haben, bin ich über Kommentare dankbar - und auch Ergänzungen nehme ich natürlich gerne entgegen.&lt;/p&gt;
&lt;img src=&quot;https://ssl-vg03.met.vgwort.de/na/78d0b9aa0c014d7e82b6db4a8cdb322a&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot;&gt; 
    </content:encoded>

    <pubDate>Thu, 07 Apr 2016 05:50:00 +0000</pubDate>
    <guid isPermaLink="false">https://netz-rettung-recht.de/archives/1901-guid.html</guid>
    <category>anleitung</category>
<category>apache</category>
<category>ssl</category>

</item>

</channel>
</rss>
