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 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

  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 29.01.2021

Wie hat Ihnen dieser Inhalt geholfen?