{"id":55000365,"date":"2023-08-01T00:00:00","date_gmt":"2023-09-12T17:10:11","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=365"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Installation_mit_Inno_Setup_Setupexe_signieren","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Installation_mit_Inno_Setup_Setupexe_signieren\/","title":{"rendered":"Installation mit Inno Setup: Setup.exe signieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/c80c8c7a8fae4541abd2b499bed38d8a\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Windows-internen Sicherheitsfunktionen und die verschiedenen Virenscanner von Drittanbietern werden immer aufmerksamer, wenn es um das Herunterladen oder Installieren von Dateien geht &#8211; insbesondere .exe-Dateien sind grunds&auml;tzlich suspekt. Das ist uns in letzter Zeit h&auml;ufig beim Bereitstellen von Setups von Tools aufgefallen. Wir wollen dies umgehen und sicherstellen, dass der Benutzer die von uns bereitgestellten Tools ohne Probleme installieren kann und sich nicht verunsichern l&auml;sst. Da wir bereits im Artikel &#8220;Installation mit Inno Setup: Die Basics&#8221; erl&auml;utert haben, wie wir Setups mit Inno Setup erstellen, schauen wir uns auch gleich an, wir dieses Tool zum Signieren unserer Setups nutzen k&ouml;nnen. Au&szlig;erdem brauchen wir noch ein <\/b><\/p>\n<h2>Signieren<\/h2>\n<p>Signieren bedeutet, dass wir nachweisen, dass unsere Software aus einer vertrauensw&uuml;rdigen Quelle stammt und vor allem auf dem Weg von der Herstellung zum Rechner des Kunden nicht manipuliert wurde. Wir k&ouml;nnen Dateien mit Tools wie dem von Microsoft bereitgestellten <b>signtool.exe <\/b>signieren, aber es gibt auch noch eine Reihe anderer M&ouml;glichkeiten. Wir wollen uns jedoch zuerst einmal auf <b>signtool.exe <\/b>konzentrieren, da dies eine kostenlose M&ouml;glichkeit bietet.<\/p>\n<p>Hier gibt es wiederum verschiedene M&ouml;glichkeiten. Wir k&ouml;nnen eine bereits vorhandene <b>.exe<\/b>-Datei zuerst erstellen und diese dann per Aufruf von <b>signtool.exe <\/b>&uuml;ber die Kommandozeile signieren. Wenn wir eine Setup-Datei signieren k&ouml;nnen, geht dieser Weg auch &#8211; aber noch praktischer ist es, die Signierung direkt in das Tool zum Erstellen des Setups zu integrieren. Das gelingt mit Inno Setup recht einfach. In diesem Artikel schauen wir uns beide M&ouml;glichkeiten an. Zun&auml;chst wollen wir jedoch das ben&ouml;tigte <b>signtool.exe <\/b>installieren.<\/p>\n<h2>Zertifikat<\/h2>\n<p>Neben <b>signtool.exe <\/b>ben&ouml;tigen wir noch ein Zertifikat.  Zertifikatsanbieter gibt es viele, die meisten bieten Zertifikate f&uuml;r Webseiten an. Wir suchen nach einem Zertifikat, das explizit f&uuml;r das Code Signing geeignet ist. Solche gibt es zu Preisen ab 200 EUR pro Jahr. Wer seine Softwareprodukte Kunden &uuml;ber das Internet zur Verf&uuml;gung stellen m&ouml;chte, tut vermutlich gut daran, diese Investition zu t&auml;tigen. Anderenfalls werden die Kunden immer wieder durch Warnmeldungen verunsichert, die beim Download oder bei der Installation der Dateien angezeigt werden. <\/p>\n<p>Das ist vermutlich der aufwendigste Schritt. Welches Zertifikat ist das Richtige? Worauf soll ich achten? Welchen Preis zahle ich f&uuml;r das Zertifikat? Wie erhalte ich es? Wie viele Anwendungen kann ich damit zertifizieren? Diese und andere Fragen werden wir in diesem Artikel beantworten.<\/p>\n<h2>Ein Zertifikat erwerben oder selbst erstellen?<\/h2>\n<p>Wie k&ouml;nnen ein Zertifikat kaufen oder eines selbst erstellen. Wenn wir eines kaufen, haben wir die Wahl zwischen verschiedenen Anbietern und zwischen zwei verschiedenen Arten von Zertifikat. Als Erstes sollte man sich nicht in die Irre f&uuml;hren lassen und ein kostenloses oder sehr g&uuml;nstig erscheinendes Zertifikat von Anbietern wir Let&#8221;s Encrypt et cetera kaufen. Diese sind in der Regel nicht f&uuml;r das Signieren von Code gedacht, sondern f&uuml;r die Verschl&uuml;sslung von Webseiten. Das sind jedoch zwei v&ouml;llig unterschiedliche Dinge. Was wir suchen, nennt sich Code Signing Certificate und wird nach unseren Recherchen nur in den USA angeboten. Dort finden wir Anbieter wie Certera, Comodo, Sectigo oder digicert. Forschen wir etwas weiter, sehen wir, dass es verschiedene Code Signing Certificates gibt, deren Preise sich unterscheiden. In Bild 1 finden wir beispielsweise zwei verschiedene Produkte namens <b>Certera Code Signing <\/b>und <b>Certera EV Code Signing<\/b>. Ersteres ist ein <b>Standard Validation Code Signing Certificate<\/b>, w&auml;hrend Letzteres ein <b>Extended Validation Code Signing Certificate <\/b>ist. Der Name ist Programm &#8211; die EV-Version hat zus&auml;tzliche Funktionen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_365_004.png\" alt=\"Verschiedene Zertifikate von unterschiedlichen Anbietern\" width=\"649,627\" height=\"463,6177\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Verschiedene Zertifikate von unterschiedlichen Anbietern<\/span><\/b><\/p>\n<p>Bei den Standard Validation Certificates gibt es wiederum OV-Zertifikate (f&uuml;r Organizational) und individuelle Zertifikate. Hier ist der Unterschied, dass wir beim OV-Zertifikat ein Unternehmen angeben und validieren lassen m&uuml;ssen, w&auml;hrend dies f&uuml;r ein individuelles Zertifikat nicht n&ouml;tig ist &#8211; hier muss nur die Person, auf die das Zertifikat ausgestellt wird, validiert werden. Das gelingt in der Regel &uuml;ber den Personalausweis oder ein &auml;hnliches Dokument.<\/p>\n<p>Die wichtigsten Unterschiede schauen wir uns in den folgenden Abschnitten an.<\/p>\n<h2>Validierung des Identit&auml;tsnachweises<\/h2>\n<ul>\n<li><b>Standard Validation Code Signing<\/b>: Bei der Standardvalidierung wird die Identit&auml;t des Entwicklers oder Herausgebers des Codes auf Basis von grundlegenden &Uuml;berpr&uuml;fungen verifiziert, wie zum Beispiel das &Uuml;berpr&uuml;fen der Domaininhaberschaft oder des Organisationsnamens. Diese Validierung erfolgt schneller und erfordert weniger umfangreiche Dokumente.<\/li>\n<li><b>Extended Validation Code Signing<\/b>: Die erweiterte Validierung erfordert eine umfassendere &Uuml;berpr&uuml;fung der Identit&auml;t des Herausgebers. Dazu geh&ouml;ren strengere Identit&auml;tsnachweise, wie zum Beispiel rechtliche Dokumente und eingehende &Uuml;berpr&uuml;fungen, um sicherzustellen, dass die Identit&auml;t des Herausgebers verifiziert ist. Dies f&uuml;hrt zu einem h&ouml;heren Ma&szlig; an Vertrauen, da die Benutzer sicher sein k&ouml;nnen, dass der Code von einem vertrauensw&uuml;rdigen Quellen stammt.<\/li>\n<\/ul>\n<h2>Sichtbarkeit des Zertifikats<\/h2>\n<ul>\n<li><b>Standard Validation Code Signing<\/b>: Zertifikate mit Standardvalidierung enthalten weniger ausf&uuml;hrliche Informationen &uuml;ber den Herausgeber und die Organisation, was bedeutet, dass Benutzer weniger Informationen &uuml;ber die Authentizit&auml;t des Codes haben.<\/li>\n<li><b>Extended Validation Code Signing<\/b>: Zertifikate mit erweiterter Validierung enthalten zus&auml;tzliche Informationen &uuml;ber den Herausgeber und die Organisation. Dies wird durch eine spezielle Kennzeichnung im Zertifikat selbst angezeigt, was dem Benutzer eine h&ouml;here Sicherheitsebene signalisiert.<\/li>\n<\/ul>\n<h2>Vertrauensw&uuml;rdigkeit und Anzeige:<\/h2>\n<ul>\n<li><b>Standard Validation Code Signing<\/b>: Code, der mit einem Standardvalidierungszertifikat signiert ist, wird oft als sicherer betrachtet als nicht signierter Code. Benutzer k&ouml;nnten jedoch weniger Vertrauen haben, da die Identit&auml;t des Herausgebers nicht so stark &uuml;berpr&uuml;ft wurde.<\/li>\n<li><b>Extended Validation Code Signing<\/b>: Durch die strengere Validierung und die sichtbaren Indikatoren wird der Code mit erweiterter Validierung gegebenenfalls als als vertrauensw&uuml;rdiger und sicherer angesehen. Benutzer sind eher bereit, auf solchen Code zuzugreifen.<\/li>\n<\/ul>\n<h2>Kosten und Aufwand<\/h2>\n<ul>\n<li><b>Standard Validation Code Signing<\/b>: Die Kosten und der Aufwand f&uuml;r die Erlangung eines Zertifikats mit Standardvalidierung sind in der Regel geringer, da die Anforderungen weniger streng sind. Au&szlig;erdem ist die Standardvalidierung g&uuml;nstiger.<\/li>\n<li><b>Extended Validation Code Signing<\/b>: Die erweiterte Validierung erfordert mehr Dokumentation und Zeit, was zu h&ouml;heren Kosten und einem gr&ouml;&szlig;eren Aufwand f&uuml;hren kann. Die erweiterte Validierung ist auch in der Anschaffung teurer.<\/li>\n<\/ul>\n<h2>Technische Unterschiede beim praktischen Einsatz<\/h2>\n<p>Im praktischen Einsatz gibt es keine nennenswerten Unterschiede zwischen <b>Standard Validation Code Signing <\/b>und <b>Extended Validation Code Signing<\/b>. Dabei beziehen wir uns darauf, wie Sicherheitsmechanismen von Windows auf die unterschiedlich signierten Dateien reagieren. Nach unseren Erfahrungen gibt es hier keine Unterschiede, da die Sicherheitsmechanismen solche Dateien in beiden F&auml;llen nicht blockieren. <\/p>\n<p>Tats&auml;chlich m&uuml;sste der Benutzer also schon die Signatur einsehen, um zwischen der Standardversion und der erweiterten Version unterschieden zu k&ouml;nnen.<\/p>\n<h2>Voraussetzungen f&uuml;r die Validierung<\/h2>\n<p>Die gr&ouml;&szlig;te H&uuml;rde beim Erlangen eines Code Signing Certificates ist die Validierung. Diese ist, wie bereits erw&auml;hnt, bei der erweiterten Version wesentlich aufwendiger &#8211; genauso aufwendig wie bei der Organizational-Variante der Standardversion. Hier muss ein Unternehmen angegeben und validiert werden, was zum Beipiel bei einer GbR oder einer &auml;hnlichen Rechtsform, die nicht beh&ouml;rdlich abgefragt werden kann, schwierig ist. Wenn wir hingegen ein Standardzertifikat mit Individual Validation w&auml;hlen, reicht die Validierung &uuml;ber ein Dokument wie den Personalausweis aus.<\/p>\n<h2>Aush&auml;ndigung des Zertifikats<\/h2>\n<p>F&uuml;r alle genannten Arten von Zertifikaten erfolgt die Aush&auml;ndigung &uuml;ber ein USB Token. Wer schnell mal ein Zertifikat ben&ouml;tigt, wird sp&auml;testens hier ausgebremst: Da alle uns bekannten Anbieter sich in den USA befinden, dauert allein die Zusendung einige Tage bis Wochen. <\/p>\n<h2>Self Signing<\/h2>\n<p>Die kostenlose, aber auch viel weniger wirkungsvolle Art der der Zertifizierung hei&szlig;t Self Signing. Hier erstellt man selbst ein Zertifikat, das im Zertifikatsspeicher des eigenen Rechners gespeichert wird. Dieses ist dann beispielsweise von Inno Setup aus erreichbar. <\/p>\n<h2>Ein eigenes Zertifikat erstellen<\/h2>\n<p>Bevor wir uns den Einsatz eines echten Zertifikats mit USB-Token ansehen, werden wir zu Testzwecken ein Self Signing Certifikate erstellen. Dazu k&ouml;nnen wir die Power Shell verwenden, die wir als Administrator &ouml;ffnen. Dazu geben wir die Zeichenkette <b>PowerShell <\/b>in das Suchfenster von Windows ein und klicken mit der rechten Maustaste auf den nun erscheinenden Eintrag <b>Windows PowerShell<\/b>. Aus dem Kontextmen&uuml; w&auml;hlen wir dann den Eintrag <b>Als Administrator ausf&uuml;hren <\/b>aus (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_365_005.png\" alt=\"Starten der PowerShell als Administrator\" width=\"649,627\" height=\"367,0023\" \/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000365\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000365?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000365\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"c0e57e8619\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Windows-internen Sicherheitsfunktionen und die verschiedenen Virenscanner von Drittanbietern werden immer aufmerksamer, wenn es um das Herunterladen oder Installieren von Dateien geht &#8211; insbesondere .exe-Dateien sind grunds&auml;tzlich suspekt. Das ist uns in letzter Zeit h&auml;ufig beim Bereitstellen von Setups von Tools aufgefallen. Wir wollen dies umgehen und sicherstellen, dass der Benutzer die von uns bereitgestellten Tools ohne Probleme installieren kann und sich nicht verunsichern l&auml;sst. Da wir bereits im Artikel &#8220;Installation mit Inno Setup: Die Basics&#8221; erl&auml;utert haben, wie wir Setups mit Inno Setup erstellen, schauen wir uns auch gleich an, wir dieses Tool zum Signieren unserer Setups nutzen k&ouml;nnen. Au&szlig;erdem brauchen wir noch ein <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662023,66042023,44000039],"tags":[],"yst_prominent_words":[],"class_list":["post-55000365","post","type-post","status-publish","format-standard","hentry","category-662023","category-66042023","category-Setup_und_Weitergabe"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000365"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000365\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000365"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}