Sie befinden sich im Service: Zertifikate

Code-Signing

Code-Signing

Kurzinformation

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.


Anleitung

Antragstellung

Ein Code-Signing Zertifikat wird als Pseudonymzertifikat beantragt. Die Beantragung erfolgt über das Webportal der DFN-PKI. Der Ablauf ist analog zu dem für Nutzerzertifikate: Es ist eine Identitätsprüfung erforderlich und das Pseudonymzertifikat wird per signierter E-Mail aus dem Postfach "dfnpki-mailsender-noreply@dfn-cert.de" erhalten.

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

  1. 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.pem
      Enter Import Password:
      MAC verified OK
      Enter PEM pass phrase:
      Verifying - Enter PEM pass phrase:
  • Ebenfalls das Zertifikat exportieren.

    openssl pkcs12 -in $EXPORT_CONTAINER.p12 -clcerts -nokeys -out $CERT.pem
      Enter 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_FILE
     
    openssl 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_DIGEST
       
    openssl dgst -sha256 -verify $PUB_KEY.pem -signature $SHA256_DIGEST $EXEC_FILE

    (als EXEC_FILE bspw. emet.msi)

     
  1. 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 osslsigncode
  •  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
  • Datei 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_SIGNED
        Password:

      (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_SIGNED
        Enter 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_SIGNED
        Password:

      (als EXEC_FILE bspw. emet.msi)

zuletzt geändert am 04.08.2022

Wie hat Ihnen dieser Inhalt geholfen?

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz