GnuPG 2.1.0beta2 supporta la firma dei certificati in modalità batch:
Support X.509 certificate creation.
Using "gpgsm --genkey" allows the creation of a self-signed
certificate via a new prompt.
Using "gpgsm --genkey --batch" should allow the creation of arbitrary
certificates controlled by a parameter file. An example parameter
file is
Key-Type: RSA
Key-Length: 1024
Key-Grip: 2C50DC6101C10C9C643E315FE3EADCCBC24F4BEA
Key-Usage: sign, encrypt
Serial: random
Name-DN: CN=some test key
Name-Email: [email protected]
Name-Email: [email protected]
Hash-Algo: SHA384
not-after: 2038-01-16 12:44
This creates a self-signed X.509 certificate using the key given by
the keygrip and using SHA-384 as hash algorithm. The keyword
signing-key can be used to sign the certificate with a different key.
See sm/certreggen.c for details.
(fonte: Messaggio di conferma , anche NOTIZIE )
Ho funzionato, ecco i passaggi necessari ( Non farlo sul tuo sistema di produzione! )
- Hai bisogno di libksba > = 1.3 (scarica qui )
- Ottieni la beta beta 2.1 da ftp://ftp.gnupg.org/gcrypt/gnupg/unstable/
- Crea una chiave che verrà utilizzata per la firma (è la chiave CA che nella vera applicazione non lascerà mai la tua scheda PGP aperta / Yubikeo NEO) - se vuoi usare una password (consigliata se vuoi ancora usarla in produzione), ricorda che devi impostare
pinentry
per lavorare senza la tua console, ovvero utilizzare uno grafico o usare screen
e impostare GPG_TTY
sull'altro tty
quando usi pinentry-curses
(nota per self : quando viene visualizzato il prompt, premi invio una volta per attivarlo e non usare la passphrase come comando cleartext ...)
- Crea una chiave che verrà utilizzata per il certificato (non so se puoi anche usare gpgsm per firmare altri CSR, probabilmente dovrai estrarre la chiave pubblica in quel caso)
- (Ho usato una chiave principale per la CA e la sua sottochiave per il certificato)
- Ottieni le prese chiave: controlla i nomi dei file in
~/.gnupg/private-keys-v1.d
e deducilo dalla data di creazione oppure esegui gpg2 -K --with-key-data
, cerca la riga contenente l'ID della chiave (non l'intera impronta digitale, che è in qualche modo divisa e criptato) e controlla la riga successiva a partire da grp:::
- Creare un certificato CA autofirmato con il seguente input batch:
Key-Type: RSA
Key-Grip: E9CE7D421500AD119A4E308BC34317710AA2D57F #(replace with CA keygrip)
Key-Usage: cert
Serial: random
Name-DN: CN=Test Root CA
Hash-Algo: SHA512
not-after: 2038-01-16 12:44
ed esegui gpgsm --gen-key --batch --output CA.crt < batchinputfile
- Crea un certificato firmato con il seguente inserimento batch:
Key-Type: RSA
Key-Grip: E308BC34317710AA2D57FE9CE7D421500AD119A4 #(replace with keygrip)
Key-Usage: sign, encrypt
Serial: random
Name-DN: CN=Tester
Issuer-DN: CN=Test Root CA
Hash-Algo: SHA512
not-after: 2038-01-16 12:44
Signing-Key: E9CE7D421500AD119A4E308BC34317710AA2D57F #(replace with CA keygrip)
Authority-Key-Id: E9CE7D421500AD119A4E308BC34317710AA2D57F #(replace with CA keygrip)
ed esegui gpgsm --gen-key --batch --output cert.crt < batchinputfile
È possibile trovare ulteriori informazioni sui possibili parametri batch qui (documento incompleto) e in certreqgen.c ; dovresti anche includere manualmente basicConstraints
tramite Extension
, che viene omessa per impostazione predefinita se si specifica un DN emittente, come si può vedere nell'origine .