Code-Signing
Code-Signing oder auch Object-Signing ist das Signieren von Programm- oder Skript-Code, um dessen Integrität und Authentizität sicherzustellen. Für weitere Informationen besuchen Sie die DFN-PKI FAQ Seite.
Antragstellung
Ein Code-Signing Zertifikat wird wie ein Nutzerzertifikat beantragt. Dazu bitte die Browser abhängigen Anleitungen folgen.
Bei Erhalt des Antrags ändert die Registrierungsstelle das Zertifikatsprofil auf "Code Signing". Leider gibt es keine Möglichkeit, dass der Nutzer dies im DFN-PKI Webportal eingibt.
Bei der Antragerstellung beachten Sie bitte folgendes:
- "Name (CN)" im Format "PN: Vorname Nachname - CodeSigning" eingeben.
- "Veröffentlichung des Zertifikates" nicht zustimmen, somit ist eine Verwechslung mit dem Nutzerzertifikat, wenn im DFN LDAP Server gesucht wird, unwahrscheinlicher.
Weitere Informationen
- exemplarisch wird hier das Signieren vom "Enhanced Mitigation Experience Toolkit (EMET)" von Microsoft unter Verwendung von openSSL und osslsigncode gezeigt:
- openSSL
- Eine p12-Datei aus dem Browser erstellen, die sowohl den privaten Schlüssel als auch das Code-Signing Zertfikat enthält.
Daraus den privaten Schlüssel exportieren.
openssl pkcs12 -in $EXPORT_CONTAINER.p12 -nocerts -out $PRIVATE_KEY.pemEnter Import Password:MAC verified OKEnter PEM pass phrase:Verifying - Enter PEM pass phrase:Ebenfalls das Zertifikat exportieren.
openssl pkcs12 -in $EXPORT_CONTAINER.p12 -clcerts -nokeys -out $CERT.pemEnter Import Password:Aus dem Code-Signing Zertifikat den "raw" public key extrahieren.
openssl x509 -pubkey -noout -in $CERT.pem > $PUB_KEY.pem- Test-Datei besorgen (hier EMET)wget https://download.microsoft.com/download/8/E/E/8EEFD9FC-46B1-4A8B-9B5D-13B4365F8CA0/EMET%20Setup.msi -O emet.msi
Digitale Signatur der Test-Datei erstellen.
openssl dgst -sha256 -sign $PRIVATE_KEY -out $SHA256_DIGEST $EXEC_FILEopenssl enc -base64 -in $SHA256_DIGEST -out $BASE64_ASCII(als EXEC_FILE bspw. emet.msi)
Digitale Signatur verifizieren.
openssl enc -base64 -d -in $BASE64_ASCII -out $SHA256_DIGESTopenssl dgst -sha256 -verify $PUB_KEY.pem -signature $SHA256_DIGEST $EXEC_FILE(als EXEC_FILE bspw. emet.msi)
- osslsigncode
- Eine p12-Datei aus dem Browser erstellen, die sowohl den privaten Schlüssel als auch das Code-Signing Zertfikat enthält.
Die benötigten Dateien installieren.
sudo apt-get install osslsigncodeTest-Datei besorgen (hier EMET)
wget https://download.microsoft.com/download/8/E/E/8EEFD9FC-46B1-4A8B-9B5D-13B4365F8CA0/EMET%20Setup.msi -O emet.msiDatei signieren
unter Verwendung der p12-Datei
osslsigncode sign -pkcs12 $EXPORT_CONTAINER.p12 -askpass -n "Enhanced Mitigation Experience Toolkit" -i "https://support.microsoft.com/de-de/kb/2458544" -in $EXEC_FILE -out $EXEC_FILE_SIGNEDPassword:(als EXEC_FILE bspw. emet.msi)
unter Verwendung des privaten Schlüssels und des Zertifikates
osslsigncode sign -certs $CERT.pem -key $PRIVATE_KEY -n "Enhanced Mitigation Experience Toolkit" -i "https://support.microsoft.com/de-de/kb/2458544" -in $EXEC_FILE -out $EXEC_FILE_SIGNEDEnter PEM pass phrase:(als EXEC_FILE bspw. emet.msi)
die signierte Datei kann ergänzend mit einem Zeitstempel versehen werden - präferiert ist hier der Zeitstempeldienst der DFN-PKI
Alternative:osslsigncode sign -pkcs12 $EXPORT_CONTAINER.p12 -askpass -n "Enhanced Mitigation Experience Toolkit" -i "https://support.microsoft.com/de-de/kb/2458544" -t http://timestamp.verisign.com/scripts/timstamp.dll -in $EXEC_FILE -out $EXEC_FILE_SIGNEDPassword:(als EXEC_FILE bspw. emet.msi)