<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Zertifikate on Natenoms Blog</title><link>https://natenom.de/tags/zertifikate/</link><description>Recent content in Zertifikate on Natenoms Blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright/><lastBuildDate>Tue, 14 Nov 2017 10:12:32 +0000</lastBuildDate><atom:link href="https://natenom.de/tags/zertifikate/index.xml" rel="self" type="application/rss+xml"/><item><title>acme.sh – Shellscript für LetsEncrypt TLS-Zertifikate</title><link>https://natenom.de/2017/11/acme-sh-shellscript-fuer-letsencrypt-tls-zertifikate/</link><pubDate>Tue, 14 Nov 2017 10:12:32 +0000</pubDate><guid>https://natenom.de/2017/11/acme-sh-shellscript-fuer-letsencrypt-tls-zertifikate/</guid><description><![CDATA[<p>TLS-Zertifikate von <a  class='urlextern'  href="https://letsencrypt.org/">LetsEncrypt</a> nutze ich seit der <a  href="/2015/11/https-for-natenoms-websites-thanks-letsencrypt-d/">„Closed Beta“</a> (2015). Von Anfang an hatte ich dafür das damals promotete Python-Script <a  class='urlextern'  href="https://github.com/certbot/certbot">Certbot</a> benutzt.</p>]]></description><content:encoded><![CDATA[<p>TLS-Zertifikate von <a  class='urlextern'  href="https://letsencrypt.org/">LetsEncrypt</a> nutze ich seit der <a  href="/2015/11/https-for-natenoms-websites-thanks-letsencrypt-d/">„Closed Beta“</a> (2015). Von Anfang an hatte ich dafür das damals promotete Python-Script <a  class='urlextern'  href="https://github.com/certbot/certbot">Certbot</a> benutzt.</p>
<p>Das ist aber nicht unbedingt schön, da es viele Abhängigkeiten nachinstalliert und sich eine eigene Python-Umgebung zurecht bastelt.</p>
<p>Daher steht seit längerem auf meiner Todo-Liste, ein möglichst einfaches Shell-Script für die Nutzung der LetsEncrypt-Zertifikate zu verwenden. Heute habe ich das auf einem meiner Server eingerichtet und es soll hier dokumentiert werden.</p>
<p>Verwendet habe ich das Shell-Script <a  class='urlextern'  href="https://github.com/Neilpang/acme.sh">acme.sh</a>.</p>
<p>Dies ist kein Howto, wie man LetsEncrypt nutzt; ich gehe davon aus, dass man Webserver usw. bereits darauf eingerichtet hat. Hier geht es nur darum, wie man acme.sh installiert und verwendet.</p>

<h2 id="installation" data-numberify>Installation<a class="anchor ms-1" href="#installation"></a></h2>
<p>Alle Befehle werden als root ausgeführt.</p>
<pre><code>apt-get install socat git
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
--home /root/.acme.sh \
--certhome /etc/acme/certs \
--accountemail &quot;mail@bladomain.tld&quot; \
--nocron
</code></pre>
<p>Auf die angegebene E-Mail-Adresse erhält man vor Ablauf eines Zertifikats entsprechende Erinnerungen.</p>
<p>Jetzt kann man das Verzeichnis <code>acme.sh</code> löschen. Das installierte Script hat selbst einen Update-Mechanismus.</p>
<p>Ausloggen und wieder einloggen, damit das Alias nutzbar wird.</p>

<h2 id="neues-zertifikate-beantragen" data-numberify>Neue(s) Zertifikat(e) beantragen<a class="anchor ms-1" href="#neues-zertifikate-beantragen"></a></h2>
<p>Wieder alles als root ausführen.</p>
<p>Man muss den Webserver beenden, damit der entsprechende Port vom Standalone-Server (socat) genutzt werden kann.</p>
<pre><code>systemctl stop apache2
acme.sh --tls --issue -d mumble.natenom.com -d m.natenom.com
</code></pre>
<p>Die Ausgabe sieht so aus:</p>
<pre><code>[Fri Nov 10 03:56:59 CET 2017] Standalone tls mode.
[...]
[Fri Nov 10 03:57:00 CET 2017] Registering account
[Fri Nov 10 03:57:02 CET 2017] Registered
[Fri Nov 10 03:57:03 CET 2017] Update account tos info success.
[Fri Nov 10 03:57:03 CET 2017] ACCOUNT_THUMBPRINT='xxxxxxxxxxxxxxxxxxxxxxxx'
[Fri Nov 10 03:57:03 CET 2017] Creating domain key
[Fri Nov 10 03:57:04 CET 2017] The domain key is here: /etc/acme/certs/mumble.natenom.com/mumble.natenom.com.key
[Fri Nov 10 03:57:04 CET 2017] Multi domain='DNS:mumble.natenom.com,DNS:m.natenom.com'
[Fri Nov 10 03:57:04 CET 2017] Getting domain auth token for each domain
[Fri Nov 10 03:57:04 CET 2017] Getting webroot for domain='mumble.natenom.com'
[Fri Nov 10 03:57:04 CET 2017] Getting new-authz for domain='mumble.natenom.com'
[Fri Nov 10 03:57:05 CET 2017] The new-authz request is ok.
[...]
[Fri Nov 10 03:57:11 CET 2017] Verifying:mumble.natenom.com
[Fri Nov 10 03:57:11 CET 2017] Starting tls server.
[Fri Nov 10 03:57:11 CET 2017] Multi domain='DNS:xxxxxxxxxxxx.acme.invalid'
[Fri Nov 10 03:57:16 CET 2017] Success
/root/.acme.sh/acme.sh: line 3589: 20206 Terminated $__S_OPENSSL &amp;gt; /dev/null 2&amp;gt;&amp;1
[...]
[Fri Nov 10 03:57:48 CET 2017] Verify finished, start to sign.
[Fri Nov 10 03:57:49 CET 2017] Cert success.
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
[Fri Nov 10 03:57:49 CET 2017] Your cert is in /etc/acme/certs/mumble.natenom.com/mumble.natenom.com.cer
[Fri Nov 10 03:57:49 CET 2017] Your cert key is in /etc/acme/certs/mumble.natenom.com/mumble.natenom.com.key
[Fri Nov 10 03:57:49 CET 2017] The intermediate CA cert is in /etc/acme/certs/mumble.natenom.com/ca.cer
[Fri Nov 10 03:57:50 CET 2017] And the full chain certs is there: /etc/acme/certs/mumble.natenom.com/fullchain.cer
systemctl start apache2
</code></pre>
<p>Die Zertifikat relevanten Dateien sind danach im Verzeichnis <code>/etc/acme/certs</code> zu finden und in den entsprechenden Konfigurationsdateien z. B. des Webservers kann darauf verwiesen werden.</p>

<h2 id="zertifikate-erneuern" data-numberify>Zertifikat(e) erneuern<a class="anchor ms-1" href="#zertifikate-erneuern"></a></h2>
<p>Eine Liste aller Zertifikate erhält man mit:</p>
<pre><code>acme.sh --list
</code></pre>
<p>Und erneuern kann man mit:</p>
<pre><code>systemctl stop apache2
acme.sh --tls --renew-all

# Oder nur bestimmte Certs erneuern
# acme.sh --tls --renew -d mumble.natenom.com -d m.natenom.com

systemctl start apache2
</code></pre>

<h2 id="ohne-root-rechte-fast" data-numberify>Ohne root-Rechte, fast<a class="anchor ms-1" href="#ohne-root-rechte-fast"></a></h2>
<p>Mit etwas mehr Aufwand kann man das ganze auch noch ohne root-Rechte nutzen, zumindest alles bis auf den Standalone-Server. Denn nur root darf auf Ports ≤1023 lauschen.</p>
<p>Damit werde ich mich vielleicht später noch beschäftigen; insgesamt ist acme.sh aber auch mit root-Rechten wesentlich schöner als das alte Python-Script.</p>

<h2 id="cronsystemd-timer" data-numberify>Cron/Systemd timer<a class="anchor ms-1" href="#cronsystemd-timer"></a></h2>
<ul>
<li>Cron, <a  class='urlextern'  href="https://github.com/Neilpang/acme.sh">siehe hier</a> (nach cron suchen).</li>
<li>Systemd timer, <a  class='urlextern'  href="https://github.com/Neilpang/acme.sh/wiki/Using-systemd-units-instead-of-cron">siehe hier</a>.</li>
</ul>

<h2 id="hilfe" data-numberify>Hilfe<a class="anchor ms-1" href="#hilfe"></a></h2>
<p>Für alles weitere siehe:</p>
<pre><code>acme.sh --help
</code></pre>]]></content:encoded></item><item><title>CAA Records im DNS für das Ausstellen von TLS-Zertifikaten seit September verpflichtend</title><link>https://natenom.de/2017/09/caa-records-im-dns-fuer-das-ausstellen-von-tls-zertifikaten-seit-september-verpflichtend/</link><pubDate>Tue, 12 Sep 2017 08:11:51 +0000</pubDate><guid>https://natenom.de/2017/09/caa-records-im-dns-fuer-das-ausstellen-von-tls-zertifikaten-seit-september-verpflichtend/</guid><description>Wer in Zukunft für seine Domains noch TLS-Zertifikate von einer CA verwenden möchte, der muss jetzt die im folgenden Artikel beschriebenen CAA Records im DNS ablegen, damit die CA überhaupt ein Zertifikat für die entsprechende Domain ausstellen darf.
Siehe heise.de/security/meldung/TLS-Zertifikate-CAAs-sollen-Zertifizierungsstellen-an-die-Leine-legen.
Habe das nur zufällig gelesen, daher soll das hier abgelegt sein; sonst hat man beim nächsten Zertifikat-Update von LetsEncrypt kein Zertifikat mehr :)</description><content:encoded><![CDATA[<p>Wer in Zukunft für seine Domains noch TLS-Zertifikate von einer CA verwenden möchte, der muss jetzt die im folgenden Artikel beschriebenen <a  class='urlextern'  href="https://de.wikipedia.org/wiki/DNS_Certification_Authority_Authorization">CAA Records</a> im DNS ablegen, damit die CA überhaupt ein Zertifikat für die entsprechende Domain ausstellen darf.</p>
<p>Siehe <a  class='urlextern'  href="https://www.heise.de/security/meldung/TLS-Zertifikate-CAAs-sollen-Zertifizierungsstellen-an-die-Leine-legen-3822010.html">heise.de/security/meldung/TLS-Zertifikate-CAAs-sollen-Zertifizierungsstellen-an-die-Leine-legen</a>.</p>
<p>Habe das nur zufällig gelesen, daher soll das hier abgelegt sein; sonst hat man beim nächsten Zertifikat-Update von <a  class='urlextern'  href="https://letsencrypt.org/">LetsEncrypt</a> kein Zertifikat mehr :)</p>
]]></content:encoded></item><item><title>KMail und Verschlüsselung mit OpenPGP – Ein Traum…</title><link>https://natenom.de/2017/03/kmail-und-verschluesselung-mit-openpgp-ein-traum/</link><pubDate>Mon, 06 Mar 2017 13:07:09 +0000</pubDate><guid>https://natenom.de/2017/03/kmail-und-verschluesselung-mit-openpgp-ein-traum/</guid><description><![CDATA[<p>Ich hatte gestern Abend Spass mit dem Verschlüsseln von Emails mittels <a  class='urlextern'  href="https://de.wikipedia.org/wiki/Pretty_Good_Privacy">OpenPGP</a> in <a  class='urlextern'  href="https://www.kde.org/applications/internet/kmail">KMail</a>. Hatte das schon lange nicht mehr genutzt und wollte mal eben schnell jemandem eine Email schicken.</p>
<p>Wenn man das Vertrauen für ein Zertifikat nur auf „Full“ gesetzt hat, dann verweigert KMail das Verschlüsseln damit. Das Zertifikat lässt sich in der Auswahl zwar markieren, aber der OK-Knopf ist ausgegraut.</p>]]></description><content:encoded><![CDATA[<p>Ich hatte gestern Abend Spass mit dem Verschlüsseln von Emails mittels <a  class='urlextern'  href="https://de.wikipedia.org/wiki/Pretty_Good_Privacy">OpenPGP</a> in <a  class='urlextern'  href="https://www.kde.org/applications/internet/kmail">KMail</a>. Hatte das schon lange nicht mehr genutzt und wollte mal eben schnell jemandem eine Email schicken.</p>
<p>Wenn man das Vertrauen für ein Zertifikat nur auf „Full“ gesetzt hat, dann verweigert KMail das Verschlüsseln damit. Das Zertifikat lässt sich in der Auswahl zwar markieren, aber der OK-Knopf ist ausgegraut.</p>
<p>Damit es funktioniert, muss man das Vertrauen auf „Ultimate“ setzen.</p>
<p>Will man von KMail heraus ein Zertifikat bearbeiten, so öffnet sich per Voreinstellung <a  class='urlextern'  href="https://www.kde.org/applications/utilities/kleopatra/">kleopatra</a>, zumindest bei mir auf Arch Linux. Dort ist es aber gar nicht möglich, „Ultimate“ einzustellen. Und auch der Begleittext zeigt mir was von wegen „machen sie das nur, wenn es sich um ihr eigenes Zertifikat handelt, dessen Passphrase sie haben…“.</p>
<p>Gut, dann machen wir das eben in kgpg, dieses stürzt jedoch reproduzierbar ab, wenn man „Ultimate“ auswählt und auf OK oder Anwenden klickt.</p>
<p>Also setzt man das Vertrauen auf „Ultimate“ in der Shell mit gpg:</p>
<blockquote>
<pre>gpg --edit-key KEYID
</blockquote>
<p>trust</p>
<p>5</p>
<p>q</pre></p>
<p>Danach funktioniert das Verschlüsseln in KMail.</p>
<p>Öffnet man jetzt aber das Zertifikat in kleopatra, dann wird angezeigt, dass das Vertrauen aktuell unbekannt sei.</p>
<p><a  href="/wp-content/uploads/2017/03/kleopatra_change_owner_trust.png"><img loading="lazy" class="alignnone size-full wp-image-38405" src="/wp-content/uploads/2017/03/kleopatra_change_owner_trust.png" alt="" srcset="/wp-content/uploads/2017/03/kleopatra_change_owner_trust.png 542w, /wp-content/uploads/2017/03/kleopatra_change_owner_trust-150x131.png 150w, /wp-content/uploads/2017/03/kleopatra_change_owner_trust-300x261.png 300w" sizes="(max-width: 542px) 100vw, 542px" /></a></p>
<p>In kgpg dagegen wird es richtig angezeigt.</p>
<p><a  href="/wp-content/uploads/2017/03/kgpg_owner_trust.png"><img loading="lazy" class="alignnone size-full wp-image-38406" src="/wp-content/uploads/2017/03/kgpg_owner_trust.png" alt="" srcset="/wp-content/uploads/2017/03/kgpg_owner_trust.png 270w, /wp-content/uploads/2017/03/kgpg_owner_trust-150x76.png 150w" sizes="(max-width: 270px) 100vw, 270px" /></a></p>
<p>Ich hasse es, dass man für solche Dinge immer gleich den ganzen Abend testen muss…</p>
<p>Habe ich da etwas nicht richtig verstanden, oder ist das total beschissen umgesetzt?</p>]]></content:encoded></item><item><title>„Pro Zertifikat“-Bestimmungen für SSH</title><link>https://natenom.de/2013/02/pro-zertifikat-bestimmungen-fur-ssh/</link><pubDate>Mon, 18 Feb 2013 07:30:14 +0000</pubDate><guid>https://natenom.de/2013/02/pro-zertifikat-bestimmungen-fur-ssh/</guid><description>In der Manpage von sshd sind im Abschnitt AUTHORIZED_KEYS FILE FORMAT Möglichkeiten aufgelistet, öffentliche Schlüssel nur unter bestimmten Bedingungen zu erlauben oder gewisse Dinge zu erzwingen.
Besonders interessant ist das letzte Beispiel, bei dem bei einem bestimmten Zertifikat ein definiertes Kommando ausgeführt wird.
http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses.</description><content:encoded><![CDATA[<p>In der Manpage von sshd sind im Abschnitt AUTHORIZED_KEYS FILE FORMAT Möglichkeiten aufgelistet, öffentliche Schlüssel nur unter bestimmten Bedingungen zu erlauben oder gewisse Dinge zu erzwingen.</p>
<p>Besonders interessant ist das letzte Beispiel, bei dem bei einem bestimmten Zertifikat ein definiertes Kommando ausgeführt wird.</p>
<p><a  class='urlextern'  href="http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses"title="http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses">http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses</a>.</p>
]]></content:encoded></item></channel></rss>