{"id":1216,"date":"2015-09-29T17:02:38","date_gmt":"2015-09-29T15:02:38","guid":{"rendered":"http:\/\/tn.genano.de\/wordpress\/?p=1216"},"modified":"2017-06-30T12:28:57","modified_gmt":"2017-06-30T10:28:57","slug":"ssl-zertifikate-konvertieren-mit-openssl","status":"publish","type":"post","link":"https:\/\/tn.genano.de\/wordpress\/2015\/09\/29\/ssl-zertifikate-konvertieren-mit-openssl\/","title":{"rendered":"SSL Zertifikate Konvertieren (mit openssl)"},"content":{"rendered":"<p>In meinem Admin-Alltag kommt es sehr oft vor das ich mit\u00a0verschiedenen Arten und\u00a0 Formen von Zertifikaten zu tun habe. Mal zur Absicherung von Webservern, mal f\u00fcr Zug\u00e4nge zu WLANs oder Produkten, zum Absichern von Verbindungen (MySQL \/ MariaDB, Cyrus, Postfix) oder zum Einbau in Anwendungen bzw. Java Keystores. In allen F\u00e4llen hat es sich bisher als sehr praktisch erwiesen diverse\u00a0Konvertierungen selbst durchf\u00fchren zu k\u00f6nnen. Ich m\u00f6chte hier nach und nach alles vorstellen was ich bisher mehr als einmal gebraucht habe. Dabei nutze ich openssl unter Linux.<\/p>\n<p><!--more--><\/p>\n<h2>Zertifikat anzeigen<\/h2>\n<pre class=\"code\">openssl x509 -noout -text -in &lt;zertifikatsname.crt&gt;<\/pre>\n<h1>PFX (pkcs12) nach PEM<\/h1>\n<p>Oft bekomme PFX Dateien. Diese beinhalten als Bundle alle die Zertifikate und Keys und auch alle Zwischenzertifikate (zumindest k\u00f6nnen diese Dateien das). Um die Zertifikate unter Linux zu nutzen ist es allerdings notwendig die PFX Datei in Ihre Einzelteile zu zerlegen.<\/p>\n<p>Die PFX Datei hei\u00dft in den Beispielen &#8222;meincert.pfx&#8220;.<\/p>\n<h2>Zertifikat exportieren<\/h2>\n<pre><code>openssl pkcs12 -in meincert.pfx -nokeys -out meincert.pem\r\nEnter Import Password:\r\nMAC verified OK\r\n<\/code><\/pre>\n<p>Hier sieht man wie der Export des Zertifikats abl\u00e4uft. Man ben\u00f6tigt dazu das Import Pa\u00dfwort\u00a0 des PFX. Es muss zwingend <em>MAC verified OK<\/em> erscheinen ansonsten gab es ein Problem. Wei\u00df man das Passwort nicht, hat man im \u00fcbrigen verloren, die Datei ist Wertlos, das Zertifikat verloren. <code><br \/>\n<\/code><\/p>\n<h2>Private Key exportieren<\/h2>\n<p><code>openssl pkcs12 -in meincert.pfx -nocerts -out meinkey.pem -nodes<\/code><\/p>\n<pre>openssl pkcs12 -in certmanager_X.pfx -nocerts -out meinkey.pem -nodes\r\nEnter Import Password:\r\nMAC verified OK<\/pre>\n<p>Der Vorgang l\u00e4uft recht \u00e4hnlich ab wie der Export des Zertifikats. Auch hier ist wieder zwingend das <em>MAC verified OK<\/em> erscheint. Der Private Key ist, wie der Name schon sagt, sehr schutzbed\u00fcrftig. Er ist der Weg zum entschl\u00fcsseln der Daten und sollte m\u00f6glichst Geheim gehalten werden. Dazu kann man den Key auch mit einer Pa\u00dfphrase versehen werden, der jedes mal beim Laden eingegeben werden mu\u00df. Dar\u00fcber wie ein Private Key angemessen zu sch\u00fctzen ist gibt es Ansichten und auch praktische Beschr\u00e4nkungen. Wenn man neu in dem Thema ist sollte man das ausf\u00fchrlich ergoogeln.<\/p>\n<h1>Pa\u00dfphrase vom Private Key entfernen<\/h1>\n<p>M\u00f6chte man die Pa\u00dfphrase von einem Private Key entfernen, z.B. um beim Neustart eines Dienstes nicht immer die Pa\u00dfphrase eingeben zu m\u00fcssen tut man folgendes:<\/p>\n<pre><code>openssl rsa -in meinkey.pem -out meinkeyohnepassphrase.pem<\/code><\/pre>\n<p>Man mu\u00df sich allerdings klar machen, das es damit einen riesigen Nachteil gibt. Erbeutet jemand dieses Key kann er Ihn einfach dazu nutzen Daten zu entschl\u00fcsseln, er mu\u00df nichts machen au\u00dfer die Datei zu besitzen. Normalerweise sch\u00fctzt die Pa\u00dfphrase vor diesem Mi\u00dfbrauch.<\/p>\n<h1>Intermediate Zertifikate in PFX (pkcs12) integrieren<\/h1>\n<p>Ab und an kommt es vor das ich ein PFX bekomme bei dem nicht alle Intermediate Zertifikate integriert sind. Das ist gerade f\u00fcr Windows User schlecht, die das File Importieren und damit erwarten das alles erledigt ist. Dies kann zu unvollst\u00e4ndigen Zertifikatsketten (Broken Chains) f\u00fchren damit zur Abwertung des Zertifikats bzw. zur nicht Anerkennung in Browsern oder Software.<\/p>\n<p>Hat man nun den Fall mu\u00df man leider erst mal das PFX wie oben Beschrieben in Schl\u00fcssel (Key) und Zertifikat zerlegen. Um anschlie\u00dfend wieder alles zusammen zu bauen.<\/p>\n<pre><code>openssl pkcs12 -in meincert.pfx -nokeys -out meincert.pem<\/code> #cert extrahieren openssl pkcs12 -in certmanager_X.pfx -nocerts -out meinkey.pem -nodes # key extrahieren<\/pre>\n<p>Nun ben\u00f6tigt man noch die Intermediate Zertifikate der austellenden Stelle (Thawte, Comodo, Positiv SSL, Rapid SSL, Geo Trust, etc.). Die k\u00f6nnen auf der Webseite runtergeladen werden. Oft ist das nicht ganz einfach, vor allem wenn man nicht genau wei\u00df welches Produkt es ist.<\/p>\n<p>Aus den intermediate Zertifikat(en) baut man sich nun eine Datei die die ganze Kette (Chain) enth\u00e4lt. Dazu f\u00fcgt man einfach den Inhalt der Dateien hintereinander in eine Datei ein. Wichtig ist dabei das die Zertifikate in der <strong>richtigen Reihenfolge<\/strong> sind. Also intermediate1 -&gt; intermediate2 -&gt; intermediate&lt;N&gt;. Nur dann funktioniert das ganze sp\u00e4ter. Dabei mu\u00df man auch darauf achten das Zeilenumbr\u00fcche eingehalten werden und keine Leerzeilen in der Datei sind. Bei Commodo sind in den Dateien beispielsweise nach dem letzten Zeichen keine Zeilenumbr\u00fcche mehr enthalten so das man schnell Probleme bekommt.<\/p>\n<p>Eine fertige Datei mit zwei Intermediate Zertifikaten sieht dann so aus (chain.crt):<\/p>\n<pre>-----BEGIN CERTIFICATE-----\r\nMIIGDjCCA\/agAwIBAgIQNoJ&lt;....&gt;\r\n-----END CERTIFICATE-----\r\n-----BEGIN CERTIFICATE-----\r\nMIIFdDCCBFygAwIBAgIQJ2b&lt;....&gt;\r\n-----END CERTIFICATE----<\/pre>\n<p>Nun haben wir also 3 Dateien, das Zertifikat, den Schl\u00fcssel und die Chain Datei. Diese f\u00fcgen wir jetzt mit openssl zu einem PFX (pkcs12) zusammen.<\/p>\n<pre>openssl pkcs12 -export -out meinneues.pfx -inkey meinkey.pem -in meincert.pem -certfile chain.crt<\/pre>\n<h1>PEM zu DER Konvertieren<\/h1>\n<pre class=\"code\">openssl x509 -outform der -in meincert.pem -out meincert.de<\/pre>\n<h1>DER zu PEM Konvertieren<\/h1>\n<pre class=\"code\">openssl x509 -inform der -in certificate.cer -out certificate.pem<\/pre>\n<h1>Pr\u00fcfen ob ein Zertifikat zu einem Key passt<\/h1>\n<pre class=\"code\">openssl x509 -noout -modulus -in meincert.crt | openssl md5\r\nopenssl rsa -noout -modulus -in meinkey.key | openssl md5<\/pre>\n<p>Wenn die md5sums passen, dann passen auch Key und Zertfikat zusammen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In meinem Admin-Alltag kommt es sehr oft vor das ich mit\u00a0verschiedenen Arten und\u00a0 Formen von Zertifikaten zu tun habe. Mal zur Absicherung von Webservern, mal f\u00fcr Zug\u00e4nge zu WLANs oder Produkten, zum Absichern von Verbindungen (MySQL \/ MariaDB, Cyrus, Postfix) &hellip; <a href=\"https:\/\/tn.genano.de\/wordpress\/2015\/09\/29\/ssl-zertifikate-konvertieren-mit-openssl\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1216","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts\/1216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1216"}],"version-history":[{"count":0,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts\/1216\/revisions"}],"wp:attachment":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}