UAC: Wie signiert man sein Program?
-
Na, ist ja auch logisch: Wie kann man einem Zertifikat immer zustimmen, wenn es kein Zertifikat gibt?
Also besorge dir ein Zertifikat, und gut ist. Es gibt diese von kostenlos (CAcert.org), über günstig (S-Trust) bis teuer.
Wo ist also die Schwierigkeit?
-
Dann hat Deine gestartete EXE aber keine UI.
Also besser einen Dienst starten. Den die Arbeit tun lassen und mit einen normalen UI Programm diesen steuern.
-
Früher war bei Verisign etc. die Codesignatur für ca. 79$ zu erhalten.
Jetzt ist es ein Vielfaches.
Muss wohl eine Sondervergünstigung gewesen sein.
Die genannten obigen Zertifizierungsstellen sehen nicht nach Code Signatur aus
-
Was ist denn eine Codesignatur?
-
Was ist denn eine Codesignatur?
Das was mir fehlt: http://blogs.msdn.com/dparys/archive/2007/07/19/signieren-von-komponenten-uac-teil-3.aspx
Zitat dort:
Wer weitere gute kennt, kann in den Comments diese nennen.Leider tat das keiner

-
Toll, das ist ja keine Antwort auf meine Frage! WAS ist denn eine Codesignatur? D.h. wie lautet die Definition oder besser wie heißt die Norm dazu? Ist es X.509? Es scheint so! Und somit können weiterhin CAcert.org und S-TRUST in Betracht kommen. Natürlich muß man sich dort informieren, ob sie von X.509 die Codesignatur-Variante anbieten. X.509 ist nunmal Standard, und somit nicht unwahrscheinlich.
Und wenn man sich etwas bemüht und seine bevorzugte Internet-Suchmaschine füttert, kann man z.B. hier landen:
http://wiki.cacert.org/wiki/CodesigningCert
-
So, laut MSDN muß es ein PKCS#7 Objekt eines X.509 Zertifikates sein.
http://msdn.microsoft.com/en-us/library/aa140234(office.10).aspx schrieb:
Create a Software Publishing Certificate (SPC)
After generating a test X.509 certificate (myNew.cer in this example), you can now create a Software Publishing Certificate (SPC) using the cert2spc.exe program. The cert2spc.exe program wraps either one or multiple X.509 certificates (depending on the command line syntax used to invoke the program) into a PKCS #7 signed-data object, which conforms to the Public Key Certificate Standards (PKCS). For more information about PKCS #7, refer to the RSA specification listed in Appendix C: Suggested Reading of the Authenticode Appendixes documentation.
Und wenn ich mal hier schaue:
http://de.wikipedia.org/wiki/X.509 schrieb:
PKCS #7 ist ein Standard zum Signieren und Verschlüsseln von Daten. Da das Zertifikat gebraucht wird, um die signierten Daten zu verifizieren, kann es in der „SignedData“-Struktur untergebracht werden. Eine .p7c-Datei ist der Spezialfall einer Datei, die keine Daten zum Signieren enthält, sondern nur die „SignedData“-Struktur.
Dann passt das alles.
Also folgende Möglichkeiten:
1. Selber ein Zertifikat mit den MS-Tools erstellen. Dann kann wenigstens der Anwender deinem Zertifikat "Immer vertrauen" anklicken und wird nicht genervt. Aber das Zertifikat wird dann wohl als "Unbekannt und nicht vertrauenswürdig" eingestuft.
2. Bei der CAcert.org ein Zertifikat besorgen und 100 Trustpoints sammeln. Ist zwar auch "Unbekannt und nicht vertrauenswürdig" (da CAcert.org von den Betriebssystem- und Browser-Herstellern nicht in die PKI-Roots aufgenommen wird, da CAcert.org "nur" aus Freiwilligen besteht), aber CAcert.org ist zumindest den "Freaks" bekannt und somit vertrauensvoller als wenn man ein Cert selber erstellt.
3. Bei S-TRUST oder einem anderen Aussteller ein X.509 mit PKCS#7 Objekt ausstellen lassen und blechen. Dafür ist es dann "Vertrauenswürdig".

-
thenoname schrieb:
Was ist denn eine Codesignatur?
Das was mir fehlt: http://blogs.msdn.com/dparys/archive/2007/07/19/signieren-von-komponenten-uac-teil-3.aspx
Zitat dort:
Wer weitere gute kennt, kann in den Comments diese nennen.Leider tat das keiner

Wenn Du Dir mal alle Beiträge in diesem Topic hier durchliest, dann würdest Du noch eine Alternative finden.
-
Bulli schrieb:
Ich bezweifle, dass man damit Code signieren kann. Jedes Zertifikat enthält auch einen Verwendungszweck, bei einem Codesigning-Zertifikat sollte in etwa sowas drin stehen:
- Garantiert, dass die Software von einem Software-Herausgeber stammt
- Schützt die Software vor Änderungen nach der Veröffentlichung
-
Und? Das wird mit einem X.509-Zertifikat erreicht. Meinste das S-TRUST sowas nicht vergeben kann? Die unterliegen direkt VeriSign, die werden das schon machen dürfen. Und Fragen kostet ja nichts!
-
Toll, das ist ja keine Antwort auf meine Frage! WAS ist denn eine Codesignatur? D.h. wie lautet die Definition oder besser wie heißt die Norm dazu? Ist es X.509? Es scheint so! Und somit können weiterhin CAcert.org und S-TRUST in Betracht kommen. Natürlich muß man sich dort informieren, ob sie von X.509 die Codesignatur-Variante anbieten. X.509 ist nunmal Standard, und somit nicht unwahrscheinlich.
Sorry, da hab ich die Frage falsch verstanden.
Leider bin ich als Hobby Programmierer recht weit entfernt von sämtlichen Informationen zu Zertifikaten und kann dazu leider keine Auskunft geben.
Im Allgemeinen jedoch ist das finden des Zertifikatnamens quasi ein Teil meiner Frage
wenn es auch nicht von mir speziell genannt wurde.
Leider kann ich auch nach langen googeln nix zur Zertifikatsbezeichnung finden.
Evtl. fehlt mir da ein Suchwort? "codesign certificate type"?Zur zweiten Lösung im genannten Thread habe ich auch noch eine Dritte.
Jedoch ist das ohne eine größere Kollekte aller Benutzer nicht möglich.
Jedoch suche ich tatsächlich sowas wie Bulli aufgeführt hat.
Also eine Organisation, die für wenig bis gar nix ein solches Zertifikat
für nicht komerzielle Produkte zur Verfügung steht.
Irgendwie muss bei der ganzen Aktion eine Datei herausspringen die man dann im Code einbinden kann.Grüße
TheNoName
-
Nochmal zurück zu dieser Aussage/Frage:
Anscheinend nur, wenn eine Signatur mitgeführt wird, bei mir ist da aber nix, also kommt "unbekannt" und es wird wahrscheinlich nicht universell "unbekannt" zugestimmt. Kann mich aber auch irren!
Stimmt das nun, kommt die Meldung hier mit Zertifikat nur 1x ? Sonst wären die Mühen umsonst.
Leider habe ich das noch nie gemacht und habe keine Erfahrung.
So direkt rauslesen kann man das aus den anderen Artikeln auch nicht??
-
Ich weiß zwar nicht genau auf was Du Dich beziehst, aber ein Zertifikat reduziert nicht die Anzahl von Kontrolleingaben.
-
Die Überlegung war folgende:
Was ich weis:
Ohne Zertifikat kommt jedesmal die Aufforderung das dieses Programm von einem "unbekannten Hersteller" sei. Ist ja klar, keine Code Zertifizierung.
Das alles mit einem Administrator Manifest.Was ich vermute:
Mit Zertifikat kommt die Meldung 1x, dann merkt sich Windows, das diese Signatur zulässig ist und speichert den Hersteller als "gutartig" ab.
Einen "Unbekannten Hersteller" wird Windows wohl kaum speichern als "gutartig".
Der Dateiname + größe + Possition wird er wohl nicht abspeichern?Die Folge wäre: 1x die Abfrage. (auch mit admin Manifest) Danach läuft das Programm ohne die Meldung "Unbekannter Hersteller" oder "Hersteller XY" an.
Die Frage ist nun: könnte das so stimmen, oder kommt trotz Signatur bei einem Admin Manifest die Aufforderung diesen zu bestätigen bei jedem Start der Software?
-
Mit einem requireAdmin Zertifikat kommt auch die UAC Meldung.
Denk doch mal nach! REGSVR32 wie auch alle anderen Admin Programme von Vista haben ein Zertifikat! Und dennoch kommt jedesmal die Meldung...
<kopfschüttel>
Du hast nicht einen der UAC Artikel gelesen, die ich Dir gegeben habe über die Grundlagen von Vista!

-
Martin Richter schrieb:
Mit einem requireAdmin Zertifikat kommt auch die UAC Meldung.
Denk doch mal nach! REGSVR32 wie auch alle anderen Admin Programme von Vista haben ein Zertifikat! Und dennoch kommt jedesmal die Meldung...
Dann beantworte doch bitte meine Frage (ich bin Nicht-Vista-Anwender!): kann man einem Zertifikat nicht "Immer vertrauen"? Weil ich kann überall sonst auch Zertifikaten "Immer vertrauen", z.B. im Browser, Java WebStart usw.
Oder geht das nur bei diesen requiredAdmin nicht?
-
Ohje, solche Antworten kann man schwer beantworten Martin,
da weiss man gar nicht wo man anfangen soll.Also von den Links in deinem Blog und hier ist schonmal der erste tot

Nachdem ich mir dann schwerwiegend die Artikel in den Techblogs wieder per
Google Cache hergesucht habe finde ich darin keine Antworten auf evtl.
Intelligenz der UAC. Das mag evtl. heissen, das es vergessen wurde zu erklären
oder was deine Meinung ist: es gibt sie gar nicht.
Die regsvr besitzt jetzt auch kein Schild = keine Admin Manifest.
Dazu kommt noch das es nicht ohne Parameter aufrufbar ist.
Wie sieht man denn ob das hier überhaupt zur Diskussion steht?
Andere Programme von Microsoft oder Virenscanner mit Admin Modus (=Schild)
laufen ohne Nachfragen an. Warum?Ansonsten bleibt die Frage von Bulli ungeändert offen!
-
1. OK! Mein Fehler ich meinte REGEDIT! Nicht REGSVR32, wari irgendwie zu schnell.
2. Welches Programm mit Schild! Erwartet keine zusätzliche Eingabe?
3. In meinem ältesten Artikel zu Manifesten und Vista ist der Artikel, den ich meine.
http://technet.microsoft.com/en-us/windowsvista/aa905117.aspxNochmal die Grundlagen:
1. In Vista bei einem Login eines Admins zwei Security Tokems erzeugt. Eines mit Admin-Rechten eines ohne.
2. Nun kann man nicht nachträglich den Token verändern!
3. Also muss kann man nur einen neuen Prozess mit Admin Token starten.
4. Bevor aber dieser Token freigegeben wird, meldet sich UAC und erwartet eine Benutzereingabe.
Dies ist in den tiefsten Tiefen den OS angelegt.
5. Vista lernt also nichts und merkt sich nichts... und Zertifikate sorgen nur für eine unterschiedliche Farbe der UAC Box!
-
Korrigiere mich nun auch:
2. Welches Programm mit Schild! Erwartet keine zusätzliche Eingabe?
Also das war ein Schild vom Programm, nicht ein Admin Manifest.
Der Virenscanner scheint ein freundliches Frontend zu haben und den Rest per
Service zu absolvieren. Dadurch ergibt sich zwangsläufig, das ein Admin
Manifest immer einen Nag Screen (= UAC) verursacht.Mit diesen Feststellungen ist die Frage wie man zertifiziert mit den Zertifikatslinks beantwortet und die Frage zur Intelligenz der UAC mit einem klaren "NEIN es merkt sich nix, wenn ein require Admin Manifest existiert" beantwortet.
Etwas unverständlich, da doch jede billige Firewall inkl. der von MS das kann.Also ist der Ansatz der Zertifizierung zur Lösung des Startes eines Programmes mit Admin Modus grundlegend falsch, es kommt nur ein fröhlich einfacher und übersichtlicher blauer Dialog statt ein gelber hässlicher unübersichtlicher Dialog mit "unbekannter Hersteller".
Bleibt noch die Frage nach dem Typ einer Code Signatur und ob man da was günstiges deichseln kann?