Meine Software mit Zertifikat

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Meine Software mit Zertifikat

    Hallo Zusammen,

    habe meine EXE-Datei mit einem Zertifikat versehen. Läuft alles gut.
    Wie kann ich dem Nutzer innerhalb des Programms die Zertifizierung anzeigen bzw.
    kann man das irgendwie auslesen?

    Gruß
    Joachim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Joachim-VB68“ ()

    Rechte Maustaste > Eigenschaften > Digitale Signature
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Warum das denn? An der Stelle ist es doch völlig fehl am platz und zu spät?


    Das finde ich nicht. Ist es nicht sinnvoll dem User das Zertifikat mitteilen zu können.
    Das würde doch die Sicherheit der Software im Auge des Users erhöhen?

    Kein Mensch klick mit der rechten Maustaste auf den EXE-File und wählt dann Eigenschaften aus. Oder?

    Gruß
    Joachim
    Nope, da die Anwendung ausgeführt werden müsste, bevor der Benutzer die "Echtheit"* prüften kann und es dann zu spät ist.
    *Damit meine, ich das die Anwendung von dir signiert ist und nicht von Dritten modifiziert wurde.


    Keine Ahnung was andere machen, aber ich mache es nicht, weil das Zeug sowieso null Aussagekraft hat.
    Und,es kostet ein Heiden Geld. Jeder Nutzer von Windows sieht es gerne,
    gerade bei einer Adressverwaltung, dass das Setup sicher ist oder?
    Das ist ein echte Dilemma.
    Ich persönlich halte die Zertifikate nur für Geldmacherei.
    Aber die Nutzer wollen es so.
    Schade, dass ich mit meiner Freeware dafür über 500€ pro Jahr zahle.
    Die Spenden wären anderweitig besser untergebracht.

    Ehrlich gesagt, weiß ich nicht mehr wie ich mit meiner Software umgehen soll.
    Wenn Ihr einen Vorschlag habt?

    Du hast recht!

    Joachim-VB68 schrieb:

    Kein Mensch klick mit der rechten Maustaste auf den EXE-File und wählt dann Eigenschaften aus. Oder?
    Du schreibst die Nutzer wollen es, also würde ich daraus folgern, die werden schon wissen wie sie ein Zertifikat auslesen, und sicherlich dann auch tunlichst nichts ausführen, bei dem sie dies nicht getan haben. Denn irgendwo muss hinter dem Wollen ja wohl auch ein Gedankengang stecken.

    Joachim-VB68 schrieb:

    Jeder Nutzer von Windows sieht es gerne,
    Jo, als "von Microsoft stammend" wollen Hacker ihre Software auch gerne ausgeben, vermutlich weil der Firmenname bekannt und sicher ist. Nur dafür ist das Zertifikat relevant, das auch drin ist, was drauf steht.
    Wenn bei Software, wo Joachim-VB68 draufsteht, auch Joachim-VB68 drin ist, wüsste ich jetzt nicht, ob da irgendwas an Sicherheit gewonnen wäre, weil ich kenne Joachim-VB68 ja gar nicht.
    Ich kann nur für unsere Kunden sprechen: Keiner von denen legt Wert auf Code-Signing, von ein paar Kunden wurden wir gefragt, ob wir die Checksummen zur Verfügung stellen können, das war es aber auch.

    Nebenbei, wenn du über 500€/Jahr dafür ausgibst, wurdest du doppelt übern Tisch gezogen, es gibt wesentlich günstigere Code-Signing Zertifikate (100-150€/Jahr), aber für eine Freeware würde ich selbst das nicht ausgeben.
    @Joachim-VB68

    Dann mach es ganz einfach. Du kennst ja den Inhalt des Zertifikates. Zeige einfach die Zeichen 1:1 in einer Messagebox oder einer Form etc. an.
    Dann hast Du genau das was Du möchtest. Ob jetzt das Zertifikat irgendwo ausgelesen und angezeigt wird, oder ob Du das "manuell" da hin schreibst - interessiert den Enduser nicht wirklich.

    Und ich stimme @slice zu.
    Endkunden wollen keine Code-Signing.
    Das machen wir (ich zumindest) nur deshalb, weil dann bei der Installation nicht "unbekannter Herausgeber", sondern meine Firma dort steht. Und damit viele Virenscanner nicht schon von vornherein unnötig anschlagen. Und natürlich für den Smartscreen-Filter von Windows.

    Ich habe für mein Zertifikat ca. 800 USD gezahlt - es ist 3 Jahre gültig und ich habe dafür extra einen Hardware-Token bekommen, mit dem ich signieren kann.
    Bilder
    • 26092023203251.jpg

      108,03 kB, 405×510, 60 mal angesehen
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Noch nie von jemandem danach gefragt worden. Glaub nicht das es die User groß interessiert. Die meisten dürfen nicht mal wissen das es solche Sicherheitsmechanismen gibt … Haben einige tausend User.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    slice schrieb:

    Nope, da die Anwendung ausgeführt werden müsste, bevor der Benutzer die "Echtheit"* prüften kann und es dann zu spät ist.


    Das ist nicht der Ursprung des Threads, und warum sollte man Anwendungen nicht im Ausfuehrungszustand nach ihrem Sicherheitslevel beurteilen? Vielleicht rufen sie Prozeduren in .dll-Dateien auf die den wesehntlichen Schaden (versuchen an-) anrichten?

    slice schrieb:


    *Damit meine, ich das die Anwendung von dir signiert ist und nicht von Dritten modifiziert wurde.

    Keine Ahnung was andere machen, aber ich mache es nicht, weil das Zeug sowieso null Aussagekraft hat.


    Hoffentlich beschraenkt sich deine Aussage auf Code sign, sag das mal einem Webentwickler. Zertifikate werden vielseitig eingesetzt und haben durchaus ihre DaSeinsBerechtigung, Ich sehe mehr gewollte Argumente als Entwickler die sich damit befassen wollen.

    @Joachim-VB68

    Schau Dir mal die Kryptoklassen X509Certificate und X509Certificate2 an, einige Prozeduren geben Stringwerte fuer zertifierte Dateien zurueck wie .dll oder .exe oder ByteArrays. Fuer mich reicht es aus da oeffentlicher Key zugaenglich ist, die OID, Start- / Enddatum, etc..

    Als Beispiel habe Ich hier eine µS dll, den String zu Deiner .exe kannst du Dir selber zusammbasteln:

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography.X509Certificates
    2. Private Sub ReadCertificateAttributes()
    3. Dim CertPath As String = "C:\Windows\System32\X3DAudio1_4.dll"
    4. Dim CertificateDoc As X509Certificate = X509Certificate2.CreateFromSignedFile(CertPath)
    5. Console.Write(CertificateDoc.GetEffectiveDateString & vbCrLf & _
    6. CertificateDoc.GetExpirationDateString & vbCrLf & _
    7. CertificateDoc.GetIssuerName & vbCrLf & _
    8. CertificateDoc.GetKeyAlgorithmParametersString)
    9. End Sub
    Weil es nach der Ausführung zuspät ist?
    Wenn die Anwendung in der Zwischenzeit modifiziert wurde und du erst nach dem Ausführen prüfst, ist die Kacke schon längst am dampfen.
    Heißt so etwas muss man VOR der Ausführung prüfen.

    Und hey, super Kontextverständnis, wir reden hier über Code Signing, konkret über MS Authenticode und du kommst mit TLS um die Ecke, das mit dem Thema hier null zutun hat.

    Aber wenn wir schon dabei sind, auch das TLS-Zertifikats Zeug ist reiner bullshit und bröckelt vor sich hin, es gibt da so viele Probleme (CA, CRL etc.) die mit Pflastern/Duct tape zusammengehalten werden. Dank Lets Encrypt ist der Zoo wenigstens mittlerweile kostenfrei und gestohlene Zertifikate nur noch kurze Zeit gültig, aber es ändert nichts daran das die zu Grunde liegende Basis kaputt ist.

    PS: Die Idee hinter Transportverschlüsselung ist gut und es freut mich, das es heute quasi Standard ist.

    PPS: Einem Webentwickler kann es egal sein ob TLS eingesetzt wird oder nicht, der hat nichts mit dem Transport der Daten am Hut.

    So genug Offtopic von mir.

    slice schrieb:

    Heißt so etwas muss man VOR der Ausführung prüfen
    Korrekt. Ist so als würde ein Maintainer seine Binaries signieren, aber der User lädt diese runter und öffnet sie trotzdem einfach mal. Damit ist das Konzept ja schon gebrochen.

    Meine Erfahrung (recht ähnlich zu der von slice): Ich habe sicherlich über meine Bibliothek schon sehr viele Binaries an Clients ausgeliefert, wobei ich sogar Administratorenrechte anfordern muss und beim Installieren kam aus diesem Grund bis dato immer der gelbe Dialog der UAC. Hier würde es sogar vmtl. noch am meisten ausmachen. Insgesamt habe ich dennoch in knapp 8 Jahren nur ein einziges Issue generiert, das das Thema Code Signing Zertifikat aufgegriffen hat. Ob sich das lohnt, muss somit jeder für sich entscheiden. Ich bin der Meinung, dass es durchaus sinnvoll ist, wenn man als Unternehmen agiert und als solches professionell Software vertreiben möchte. Erst recht dann, wenn es auch kommerzielle Lizenzen gibt und man eventuelle Kosten darüber decken kann. Die Preise für CS Certs sind in meinen Augen schon frech.

    Als Einzelentwickler, der privat in den Weiten des Netzes agiert und Freeware vertreibt? Halte ich für redundant, da tatsächlich nur ein Bruchteil der Nutzer überhaupt darauf schauen wird.

    slice schrieb:

    PPS: Einem Webentwickler kann es egal sein ob TLS eingesetzt wird oder nicht, der hat nichts mit dem Transport der Daten am Hut.
    Kann, sollte aber keinesfalls. ;) Da Web Security auch zur Webentwicklung zweifelsfrei dazugehört, ist es imho auch eine Pflicht sich auf der Ebene damit auseinanderzusetzen. Aber da ist sicherlich immer auch die Frage, wie hoch der Anspruch des Entwicklers ist und wo das Hosting stattfindet. Wir machen halt Hosting eh meistens auch bei uns, daher stellt sich diese Frage gar nicht erst.

    Viele Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    slice schrieb:

    Und hey, super Kontextverständnis, wir reden hier über Code Signing, konkret über MS Authenticode und du kommst mit TLS um die Ecke, das mit dem Thema hier null zutun hat.

    Aber wenn wir schon dabei sind, auch das TLS-Zertifikats Zeug ist reiner bullshit und bröckelt vor sich hin, es gibt da so viele Probleme (CA, CRL etc.) die mit Pflastern/Duct tape zusammengehalten werden. Dank Lets Encrypt ist der Zoo wenigstens mittlerweile kostenfrei und gestohlene Zertifikate nur noch kurze Zeit gültig, aber es ändert nichts daran das die zu Grunde liegende Basis kaputt ist.


    Na ja ich weiß nicht, ob ich dies so unterschreiben wüprde.

    Meines Erachtens liegt es daran, dass Entwickler und Administratoren nicht die Konzepte der Digitalen Signatur und deren Umsetzung verstehen.
    Prominente Vertreter sind Bundesnotarkammer mit den Anwaltszertikaten und Gematik mit dem E-Rezept und den anderen Anwendungen im Umfeld krankenkassenkarte, Kommunikation zwischen Ärzten, Krankenhäusern und Krankenkassen.
    Wo ist eigentlich die gesicherte Kommunikation Arzt / Patient, Anwalt / Mandant?

    Warum können 85% aller Österreicher die Digitale Signatur nutzen und in Deutschland mal irgendwas unter 10%?

    Wenn ich mir die Sicherheitseinstellung bei vielen Unternehmen für die Office-Umgebung anschaue, bekomme ich das kalte Grausen:
    Die Makrosicherheit ist ausgeschaltet, damit der User nicht von der Meldung "Soll das Makro aktiviert werden?" genervt wird.
    Hier ist die Lösung eigentlich ganz einfach. Alle Makros sollten mit einem CodeSigning-Zertifikat signiert sein.
    Dies ist übrigens auch eine Forderung der BaFin für den Einsatz der Makros im Excel-Umfeld für Versicherungen und Banken.

    Warum fordern die Debian-Entwickler, dass wenn man Codeänderungen einreicht, diese digitale signiert sein müssen?

    Bei der Frage der Zertifikatsnutzung geht es um Vertrauen. Leider lässt sich dieses nicht so einfach herstellen und noch Schwieriger ist es, dieses zu überprüfen.
    Deshalb benötigt man CRL und OCSP-Abfragen, zu prüfen, ob ein Zertifikat noch valide ist. Es reicht nicht einfach ein Zertifikat auszustellen. BTW das kann man ganz einfach mit dem Programm XCA machen. hohnstaedt.de/xca/index.php/download

    Die Fragestellung des Ursprung Threads finde ich wichtig.
    Microsoft prüft eigentlich bei der Installation des Programmes, ob dieses mit einem Zertifikat eines vertrauenswürdigen Herausgeber signiert wurde. Hier für wird ein CodeSigning-Zertifikat benötigt. Damit die Überprüfung des Zertifikats von Microsoft automatisch vorgenommen werden kann, muss das Zertifikat von einer CA ausgestellt sein, deren Zertifikate in den Truststores von Windows liegen. An so eine Zertifikat kommt man in der Regel nur kostenpflichtig dran. Unter anderem wird geprüft, ob der Zertifikatsinhaber wirklich einen natürliche Person ist. (Dies wird bei Let's Encrypt übrigens nicht gemacht.)

    Man kann natürlich auch dem Anwender das Zertifikat innerhalb der Anwendung anzeigen. Da sehe ich aber die Schwierigkeit dem Anwender plausibel zu machen, welche Signatur genutzt wird und dass diese wirklich nicht nur vorgetäuscht ist.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).