Die vorgehensweiße eine native DLL zu signieren ist eine andere wie bei .NET Projekten, bei der man Unterstützung durch das Visual Studio erhält. Welche DLLs müssen überhaupt signiert werden? Ab Windows Vista müssen Treiber und auch selbst geschriebene WIC Codecs signiert werden, so dass sie vom Windows BS angenommen werden. Die Anleitung gilt aber auch für EXEs, OCXs und CABs.
Vorgehensweiße:
- Windows SDK herunterladen und installieren (makecert, signtool,…)
- Testzertifikate erstellen (und installieren)
- Software Publishing Certificate (SPC) erstellen
- Bibliothek (oder andere Datei) signieren
makecert.exe -sv CodeSignPrivateKey.cer -r -n "CN=[Ihr Name], OU=[Ihre Appteilung], O=[Ihre Firma], E=[IhreMail@IhreDomain.xy]" -ss NS_CertStore CodeSignCert.cer
Das SPC erstellen:
pvk2pfx.exe -pvk CodeSign.pvk -pi [Ihr Passwort] -spc CodeSign.spc -pfx CodeSign.pfx -f
Zertifikat installieren:
certutil -user -p <Ihr Passwort> -i mportPFX d:signingCodeSign.pfx
Signieren:
signtool sign /v /ac CodeSign.cer /s my /n [Ihr Name/CN] /t http://timestamp.verisign.com/scripts/timestamp.dll AitCodec.dll
Wenn alles ok erfolgt die Ausgabe:
The following certificate was selected: Issued to: [Ihr Name] Issued by: [Ihr Name] Expires: Sun Jan 01 00:59:59 2040 SHA1 hash: 697330637D668644A9277B395026A6F720BA40B5 Cross certificate chain (using machine store): Issued to: [Ihr Name] Issued by: [Ihr Name] Expires: Sun Jan 01 00:59:59 2040 SHA1 hash: 697330637D668644A9277B395026A6F720BA40B5 Done Adding Additional Store Successfully signed and timestamped: AitCodec.dll Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0