Dies ist eine alte Version des Dokuments!


Die über die Oberfläche beziehbaren CodeSigning-Zertifikate sind für die Signatur von Java JARs & MS Office Macros verwendbar.

E-Mail-Einladung

Für die Erstellung von Code Signing-Zertifikaten ist eine gewisse Vorbereitung notwendig. Insbesondere muss in einem Enrollment Form ein Code Signing certificate enrollment form angelegt werden:

  1. Im SCM unter ☰→Enrollment→Enrollment Forms
    1. Mit dem grünen Button „+“ oben rechts ein neues nur Ihrer Einrichtung zugehöriges Enrollment Form erzeugen
      1. Einen sprechenden Namen vergeben, der auf Ihre Einrichtung hinweist
      2. Als Typ „Code Signing certificate enrollment form“ setzen
      3. Im folgenden Dialog unter Tab „Details“ eine URI Extension setzen oder generieren lassen. Diese URI Extension definiert die URL, unter der später Zertifikate beantragt werden kann: https://cert-manager.com/customer/DFN/cs/<URI Extension>
      4. Mit „Save“ abspeichern
  2. Oben auf „Accounts“ klicken.
    1. Im daraufhin geöffneten Popup-Fenster über mit dem grünen „+“-Button einen neuen „Code Signing Web Form Account“ hinzufügen.
    2. Einen sprechenden Namen für den Code Signing Web Form Account vergeben, der auf Ihre Einrichtung hindeutet.
    3. Als „Organization“ Ihre Einrichtung aus der Drop-Down-Liste auswählen (und ggf. auch ein Department setzen, wenn der Code Signing Web Form Account ausschließlich auf Department-Level eingerichtet werden soll).
    4. Als Zertifikatprofile stehen Code Signing und GÉANT Code Signing Certificate sowie GÉANT OV Code Signing (Key Attestation) - 1 year, GÉANT OV Code Signing (Key Attestation) - 2 years und GÉANT OV Code Signing (Key Attestation) - 3 years zur Auswahl. Das gewählte Zertifikatsprofil beeinflusst neben der Zertifikatlaufzeit insbesondere die Auslieferung bzw. Bereitstellung des Zertifikats und damit auch die Lieferzeit:
      1. Code Signing und GÉANT Code Signing Certificate: Diese beiden Zertifikatprofile unterscheiden sich in keinem Praxis-relevanten Aspekt. Im GÉANT-Profil wird als O=-Attribut der „Secondary Organization Name“ verwendet (siehe ☰→Organizations→<Auswahl>→✎). Die Code Signing-Zertifikate sind für ein Jahr gültig. Sectigo erzeugt den Schlüssel und liefert diesen zusammen mit dem Zertifikat auf Hardware-Token per Versand aus. Für realistische Bearbeitungs- und Lieferzeiten aus Nordamerika haben wir aktuell keine Erfahrungswerte vorliegen. Die Kosten für Hardware-Token und Versand werden aktuell von GÉANT getragen. (Wir testen dieses Verfahren gerade aus.)
      2. GÉANT OV Code Signing (Key Attestation) …-Familie: Diese Code Signing-Zertifikate sind je nach Profilauswahl ein bis drei Jahre gültig. Sectigo liefert das Zertifikat zum direkten Download aus. Für die Bearbeitungszeit haben wir aktuell keine Erfahrungswerte vorliegen. Diese Zertifikate können ausschließlich in Hardware-Token genutzt werden, die von Sectigo explizit für eine Key Attestation zugelassen sind, aktuell sind das Luna Network Attached HSM 7.x und YubiKey 5 FIPS Series. Für die Zertifikatbeantragung wird im Web-Zertifikatantragsformular neben einem Certificate Signing Request (CSR) im PKCS#10 PEM-Format eben die Key Attestation benötigt. Wie insbesondere die Key Attestation erstellt wird, ist im „Code Signing Guide for Partners“ im Abschnitt 3.1 für Luna HSMs und im Abschnitt 3.2 für die YubiKeys dokumentiert, herunterladbar unten auf der Web-Seite https://sectigo.com/knowledge-base/detail/Changes-to-Sectigo-Code-Signing-Offerings/kA03l000000BoIs. Siehe auch unsere eigene Beschreibung im folgenden Kapitel.
    5. Gewünschtes Zertifikatprofil aus der Drop-Down-Liste auswählen.
    6. Als „CSR Generation Method“ den Wert „Sectigo Shipped FIPS certified USB Token/Key“ (nur Code Signing und GÉANT Code Signing Certificate) bzw. „Provided by user“ (nur GÉANT OV Code Signing (Key Attestation) …-Familie) auswählen.
    7. Mit „Save“ abspeichern.

Bitte keine fremden Enrollment Forms löschen!

Alte Enrollment Forms und darin bestehende Code Signing Web Form Accounts sollten nur nach sorgfältiger Abwägung gelöscht werden, da diese unter ihrer URL noch Selbstverwaltungsmöglichkeiten (insb. Sperrung) der bereits unter diesen Enrollment Forms und Account ausgestellten Code Signing-Zertifikate bieten.

Dann zum manuellen Auslösen der einzelnen Einladungs-Mails durch (D)RAOs unterhalb von ☰→Certificates→Code Signing Certificates:

  1. Mit dem „Invitations“-Button oben rechts wird ein Popup-Fenster mit einer Übersicht über die ausstehenden Einladungen für die Beantragung von Code Signing-Zertifikaten angezeigt.
  2. Mit dem grünen „+“-Button in dem Popup-Fenster kann eine einzelne Person (bestimmt durch eine E-Mail-Adresse) zur Beantragung eines Code Signing-Zertifikats per E-Mail eingeladen werden.
    1. Es muss die E-Mail-Adresse angegeben werden, an die die Einladungs-E-Mail verschickt wird.
    2. Es muss der „Enrollment Endpoint“ ausgewählt werden, der im obigen Schritt angelegt worden ist. Hinweis: Die Liste der angezeigten Enrollment Endpoints kann zur Zeit unter Umständen leider auch fremde Endpoints anderer Einrichtungen enthalten.
    3. Es muss einer der vorher von der Einrichtung/Department angelegten „Code Signing Web Form Accounts“ ausgewählt werden.
    4. Abschließend auf den „Send“-Button klicken, um die Einladungs-E-Mail zu versenden.

Die eingegangenen Zertifikatanträge für Code Signing-Zertifikate bzw. die ausgestellten Code Signing-Zertifikate sind im SCM unterhalb von ☰→Certificates→Code Signing Certificates sichtbar und werden automatisch von Sectigo bearbeitet.

Erzeugen einer Key Attestation mit Yubikey FIPS

Für die Beantragung von Code Signing Zertifikaten auf einem selbst beschafften Yubikey FIPS muss wie folgt vorgegangen werden:

0. Bei der Beschaffung: Unbedingt die Variante Yubikey 5 FIPS wählen. Yubikeys ohne den Zusatz FIPS können die erforderliche Key Attestation nicht erzeugen.

1. Yubikey vorbereiten:

  • ggf PIV anschalten
  • PIN setzen. Achtung: Es gibt Werkzeuge, die das Setzen von PINs mit einer Länge von mehr als 8 Zeichen erlauben. Diese werden von der PKCS11-Library ykcs11 *nicht* unterstützt, dort funktionieren nur PINs mit 6-8 Zeichen.
  • Default PIV Management Key vom Default 010203040506070801020304050607080102030405060708 auf was „richtiges“ umsetzen
  • PUK setzen.

2. Schlüssel erzeugen und den öffentlichen Teil in eine Datei ausgeben:

yubico-piv-tool -a generate --slot=9c -k -A ECCP384 -o PublicKeyFile.key

3. CSR erzeugen und in eine Datei ausgeben:

yubico-piv-tool -a verify-pin -a request-certificate --slot=9c  -i PublicKeyFile.key -S <subject dn> -o request.csr

(-S <subject_dn> mit Slash am Ende, z.B. -S „/CN=Jane Doe/“)

4. Key Attestation erzeugen:

yubico-piv-tool --action=attest --slot=9c > Slot9cAttestation.pem

(funktioniert nur für Onboard erzeugte Keys, nicht für importierte)

5. Intermediate aus dem Yubikey auslesen

yubico-piv-tool --action=read-certificate --slot=f9 > intermediate.pem

6. Attestation-Bundle für Sectigo Webinterface erzeugen

cat Slot9cAttestation.pem intermediate.pem > attestation_bundle.pem
base64 -w 64 attestation_bundle.pem > attestation_bundle.b64

Oder Windows:

type Slot9aAttestation.pem intermediate.pem > attestation.pem
certutil -encode attestation.pem attestation_bundle.pem
findstr /v CERTIFICATE attestation_bundle.pem > attestation_bundle.b64

7. Antrag stellen:

  • Die Datei request.csr aus Schritt 3 als CSR in das Formular eingeben
  • Den Inhalt der Datei attestation_bundle.b64 aus Schritt 6 in das Feld „Key Attestation“ eingeben

8. Sectigo stellt das Zertifikat aus

9. Aufspielen der von Sectigo gelieferten Zertifikatdatei aus dem Link „as Certificate only, PEM encoded:“ auf den Yubikey, z.B. mit dem YubiKey Manager

Code Signing mit Yubikey FIPS

Windows: Anleitung von Yubico für Windows Code Signing: https://support.yubico.com/hc/en-us/articles/360016614840-Code-Signing-with-the-YubiKey-on-Windows

Java-Code: Signieren von Java-Code mit jarsigner:

  • Installation der Yubico PKCS#11-Library „ykcs11“
  • Abspeichern des von Sectigo gelieferten Zertifikats per Link aus der Auslieferungs-E-Mail „as Certificate (w/ issuer after)“ als Datei „certchain.pem“
  • Datei ykcs11.conf anlegen mit Inhalt:
name = ykcs11
library = <Pfad zur libykcs11.so>
  • Signieren per Aufruf:
jarsigner -keystore NONE -certchain certchain.pem -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg  ykcs11.conf <Zu signierende JAR>  "X.509 Certificate for Digital Signature"

EV Code Signing

EV Code Signing-Zertifikate, denen beispielsweise in Microsoft SmartScreen sofort vertraut wird, müssen über einen separaten Antragsweg bestellt und zusätzlich bezahlt werden.

Die Beantragung erfolgt außerhalb des Cert-Managers. Eine Anleitung findet sich unter https://wiki.geant.org/display/TCSNT/TCS+2020+FAQ#TCS2020FAQ-Q:HowDoIOrderEVCodeSigningCertificates? (Hinter dem Link „GUIDE“ versteckt sich eine ausführliche Anleitung als PDF-Dokument)

  • Zuletzt geändert: vor 8 Monaten