Prinzipiell stehen zwei verschiedene CodeSigning-Zertifikattypen zur Verfügung:
Für die Erstellung von OV-Code Signing-Zertifikaten in SCM ist eine gewisse Vorbereitung notwendig. Insbesondere muss ein Account in einem Code Signing certificate enrollment form
angelegt werden:
https://cert-manager.com/customer/DFN/cs/<URI Extension>
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 die Zertifikatlaufzeit.
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:
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.
Die Einladungs-E-Mail muss dann folgendermaßen bearbeitet 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:
2. Schlüssel erzeugen und den öffentlichen Teil in eine Datei ausgeben:
yubico-piv-tool -a generate --slot=9c --pin-policy=once -k -A ECCP384 -o PublicKeyFile.key
pin-policy=once
ermöglicht die Erstellung von mehreren Signaturen hintereinander mit nur einer PIN-Eingabe. Diese Option ist insbesondere für Windows signtool.exe
notwendig, wenn MSI signiert werden.
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/“)
Sollte yubico-piv-tool
mit der Fehlermeldung Failed signing request.
scheitern, kann alternativ das Werkzeug ykman
verwendet werden:
ykman piv certificates request -s "CN=Jane Doe" 9c PublicKeyFile.key request.csr
4. Key Attestation erzeugen:
yubico-piv-tool --action=attest --slot=9c > Slot9cAttestation.pem
(funktioniert nur für nach dieser Anleitung erzeugte Keys, nicht für anderweitig 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:
8. Sectigo bearbeitet den Antrag. Mit Stand 2024-01 handelt es sich um einen manuellen Prozess auf Seiten von Sectigo mit Verzögerungen von wenigen Stunden bis mehreren Tagen. Bitte erstellen Sie gegebenenfalls ein Support-Ticket nach Anleitung. Das Ticket muss die „Order Number“ enthalten, die zu dem gestellten Antrag in SCM sichtbar ist.
9. Sectigo stellt das Zertifikat aus und verschickt eine E-Mail mit Links auf Zertifikatdateien
10. Aufspielen der von Sectigo gelieferten Zertifikatdatei aus dem Link „as Certificate only, PEM encoded:“ auf den Yubikey, z.B. mit dem YubiKey Manager
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:
name = ykcs11 library = <Pfad zur libykcs11.so>
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-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)