{"id":358,"date":"2016-02-03T11:33:00","date_gmt":"2016-02-03T10:33:00","guid":{"rendered":"http:\/\/reha14syn.is.tuwien.ac.at\/wordpress\/2016\/02\/03\/codesigning-neu\/"},"modified":"2016-11-19T15:07:42","modified_gmt":"2016-11-19T14:07:42","slug":"codesigning-neu","status":"publish","type":"post","link":"https:\/\/abchaus.synology.me\/wordpress\/blog\/2016\/02\/03\/codesigning-neu\/","title":{"rendered":"Codesigning neu"},"content":{"rendered":"<h1 align=\"justify\">Vorherige \u00c4nderungen<\/h1>\n<p align=\"justify\">Zuerst hat es gehei\u00dfen, man mu\u00df unbedingt SHA256 als Hash nehmen, sonst wird alles unsicher und Windows mag einen nicht mehr. Die \u00c4nderung dazu war relativ einfach: Ein neues Zertifikat mu\u00dfte her und man hat beim Codesigning gesagt, da\u00df man eben SHA256 verwenden will. Soweit so simpel. Ohne lange Diskussion hat sich Microsoft aber eines anderen besonnen und verlangt quasi von jetzt auf gleich double-signing (weil z.B. ihre eigenen Serverprodukte wie 2008 kein SHA256 k\u00f6nnen und sie das auch nicht nachr\u00fcsten wollen). Der Weg zu double-signing ist aber deutlich l\u00e4nger und sei hier beschrieben.<\/p>\n<h1 align=\"justify\">Double-Signing<\/h1>\n<p align=\"justify\">Das Prinzip ist sehr simpel. Man ruft das signtool 2x auf und sagt beim zweiten Aufruf, man will die Signatur nicht ersetzen, sondern dazutun. Dazu braucht es aber auch eine Tool-Chain, die wei\u00df wie man damit umgeht. Der Inno-Installer kann ab 5.5.8 damit umgehen. Hier darf man ab dieser Version einfach zwei signtool poarameter angeben. Sieht also z.B. so aus:<br \/><font face=\"Courier New\">SignTool=signname_1 {#ThisName} {#ThisVer} ({#InstallVer})<br \/>SignTool=signname_2 {#ThisName} {#ThisVer} ({#InstallVer})<br \/><\/font>Nat\u00fcrlich mu\u00df man dazu auch zwei Eintr\u00e4ge in der Sign-Einstellung haben. Bei _1 als sha1 und bei _2 als sha256 mit der Anh\u00e4ngeoption. Das signtool selbst mu\u00df zumindest aus dem Windows SDK8.1 stammen. Es ist jetzt nicht nur mehr eine exe, sondern besteht aus<br \/><font face=\"Courier New\">signtool.exe<br \/>wintrust.dll<br \/>mssign32.dll<\/font><br \/>Microsoft.Windows.Build.Signing.wintrust.dll.manifest<br \/>signtool.exe.manifest<br \/>Microsoft.Windows.Build.Signing.mssign32.dll.manifest<br \/>Alle diese Dateien m\u00fcssen im gleichen Verzeichnis stehen. Das ganze f\u00fcr die kleine Option \/as zum Anh\u00e4ngen der zweiten Signatur. Wenn man nun das ganze ausprobieren will, st\u00f6\u00dft man auf eine sehr seltsame Meldung von wegen Problemen bei der Ausf\u00fchrung und falschen Parametern. Man sucht lange im Internet und wird auch nicht f\u00fcndig. Ich konnte das Problem jedenfalls durch trial and error auf die Zeitstampserver zur\u00fcckf\u00fchren. Offenbar ist es bei der Verwendung von \/as unbedingt notwendig einen neuen RFC3161 Timestampserver zu nehmen. F\u00fcr die sha1 Signatur wird empfohlen einen alten Timestampserver zu nehmen, weil sonst wieder Probleme mit alten Systemen auftreten. Da verisign dazu eher schweigsam ist, habe ich alles auf Comodo Timestampserver ge\u00e4ndert. Der korrekte Doppelaufruf vom neuen signtool lautet daher mit unseren Daten:<br \/><font face=\"Courier New\">signtool.exe sign \/fd SHA1 \/a \/n Wien \/t <\/font><a href=\"http:\/\/timestamp.comodoca.com\/authenticode\"><font face=\"Courier New\">http:\/\/timestamp.comodoca.com\/authenticode<\/font><\/a><font face=\"Courier New\"> %1<\/font><br \/><font face=\"Courier New\">signtool.exe sign \/as \/fd SHA256 \/a \/n Wien \/td sha256 \/tr <\/font><a href=\"http:\/\/timestamp.comodoca.com\/rfc3161\"><font face=\"Courier New\">http:\/\/timestamp.comodoca.com\/rfc3161<\/font><\/a><font face=\"Courier New\"> %1 <\/font><\/p>\n<p align=\"left\">Die daraus entwickelten zwei Eintr\u00e4ge f\u00fcr den Inno-Installer lauten daher (wenn der Pfad zu signtool.exe stimmt):<br \/><font face=\"Courier New\">signname_1=&#8220;c:Program Files (x86)toolssigntool.exe&#8220; sign \/fd SHA1 \/d &#8222;$p&#8220; \/a \/n Wien \/t <\/font><a href=\"http:\/\/timestamp.comodoca.com\/authenticode\"><font face=\"Courier New\">http:\/\/timestamp.comodoca.com\/authenticode<\/font><\/a><font face=\"Courier New\"> $f<br \/>signname_2=&#8220;c:Program Files (x86)toolssigntool.exe&#8220; sign \/as \/fd SHA256 \/d &#8222;$p&#8220; \/a \/n Wien \/td sha256 \/tr <\/font><a href=\"http:\/\/timestamp.comodoca.com\/rfc3161\"><font face=\"Courier New\">http:\/\/timestamp.comodoca.com\/rfc3161<\/font><\/a><font face=\"Courier New\"> $f<\/font><\/p>\n<h1 align=\"justify\">Resourcen<\/h1>\n<p align=\"justify\">Damit nicht jeder den SDK runterladen und installieren mu\u00df, findet sich das package auf dem goodie ihres Vertrauens unter ProgrammierenCodesigning.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vorherige \u00c4nderungen Zuerst hat es gehei\u00dfen, man mu\u00df unbedingt SHA256 als Hash nehmen, sonst wird alles unsicher und Windows mag<\/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-358","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/comments?post=358"}],"version-history":[{"count":1,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/358\/revisions"}],"predecessor-version":[{"id":986,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/358\/revisions\/986"}],"wp:attachment":[{"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abchaus.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}