{"id":26,"date":"2010-02-17T09:46:50","date_gmt":"2010-02-17T08:46:50","guid":{"rendered":"http:\/\/www.webmaid.de\/?p=26"},"modified":"2010-02-25T13:35:03","modified_gmt":"2010-02-25T12:35:03","slug":"nachrichten-in-php-unterschreiben-und-verschlusseln","status":"publish","type":"post","link":"https:\/\/www.webmaid.de\/2010\/02\/nachrichten-in-php-unterschreiben-und-verschlusseln\/","title":{"rendered":"Nachrichten in PHP unterschreiben und verschl\u00fcsseln"},"content":{"rendered":"

„Kampf der NSA“ oder andere Beweggr\u00fcnde k\u00f6nnten einen auf die Idee bringen seine E-Mails zu verschl\u00fcsseln. <\/p>\n

Wie man einen eigenen (kostenlosen) Key erstellt und diesen in Thunderbird nutzt, will ich in einem anderen Tutorial aufzeigen und mich hier ausschlie\u00dflich auf PHP und dem Signieren und Verschl\u00fcsseln von E-Mails konzentrieren.
\n
\nUm eine Nachricht zu signieren brauchen wir auf dem Server den eigenen privaten<\/strong> Schl\u00fcssel. Dieser ist im Idealfall bereits vorhanden und man kennt das Passwort zum Entschl\u00fcsseln. Will man also eine Nachricht mittels PHP signieren und versenden ben\u00f6tigt man den folgenden Code:
\n \/\/ Die Kopfdaten fuer die E-Mail
\n $headers = array('To' => 'empfaenger@empfaengerhost.tld',
\n 'From' => 'absender@absenderhost.tld',
\n 'Subject' => 'Die Nachricht ist wirklich von mir!');
\n \/\/ Nachricht signieren - Die Nachricht liegt in klartext.txt vor, die Datei k\u00f6nnte man mittels fwrite schreiben
\n openssl_pkcs7_sign('klartext.txt','signiert.txt','file:\/\/signingcert.pem',array('file:\/\/privateKey.pem','passwort'),$headers);
\n \/\/ Die Datei liegt nun signiert unter signiert.txt<\/code>
\nHier endet der Code erstmal, weil es jetzt darauf ankommt, wie man die Nachricht versenden will. Man kann dies SENDMAIL erledigen lassen und dann einfach auf exec(ini_get(\"sendmail_path\") . \" < signiert.txt\");<\/code> zur\u00fcckgreifen oder man nutzt die php-Funktion mail.
\n$data = file_get_contents('signiert.txt');
\n$splitData = explode(\"\\n\\n\", $data, 2);
\nmail($headers['To'], $headers['Subject'], $splitData[1], $splitData[0]);<\/code><\/p>\n

Will man die signierte Nachricht nun verschl\u00fcsseln geht man ein klein bisschen anders vor. Erstmal ben\u00f6tigt man den \u00f6ffentlichen<\/strong> Schl\u00fcssel des Empf\u00e4ngers! Beim Aufruf von openssl_pkcs7_sign \u00fcbergibt man f\u00fcr $headers ein leeres Array und f\u00fcgt noch den folgenden Code hinten an.
\n\/\/ Lade den \u00f6ffentlichen Schl\u00fcssel des Empf\u00e4ngers
\n$empfaengerPem = file_get_contents('empfaenger_empfaengerhost_tld.pem');
\n\/\/ Signierte Nachricht verschl\u00fcsseln
\nopenssl_pkcs7_encrypt('signiert.txt', 'verschluesselt.txt',$empfaengerPem ,$headers,0,1);
\n\/\/ Die Nachricht liegt verschl\u00fcsselt unter verschluesselt.txt vor<\/code><\/p>\n

Die verschl\u00fcsselte Nachricht kann nun entsprechend der Anleitung weiter oben entweder mittels SENDMAIL oder der php-Funktion mail versendet werden.<\/p>\n","protected":false},"excerpt":{"rendered":"

Manchmal ist es wichtig, dass der Inhalt einer E-mail signiert und verschl\u00fcsselt wird. Dieses Tutorial zeigt, wie man dieses „Problem“ unter PHP l\u00f6sen kann.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,3],"tags":[12,89,13,11],"_links":{"self":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/26"}],"collection":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":17,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":104,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/26\/revisions\/104"}],"wp:attachment":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}