caricamento di pkcs12 nello slot piv yubikey

5

Ho un id_rsa (chiave privata che viene utilizzata da me per l'autenticazione e la crittografia insieme al cert su yubikey piv smardcart provider sullo slot 9a) ora desidero usare questa chiave per creare un keystore pkcs12 (chiave privata + certificato autofirmato ) per firmare i file jar (apk android) tramite un altro slot su yubikey piv

ho creato il negozio pkcs in questo modo:

$ openssl req -new -key id_rsa -out server.csr 
$ openssl x509 -req -days 3650 -in server.csr -signkey id_rsa -out server.crt
$ openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in server.crt -inkey id_rsa -out server.crt.p12 -name "Singnin cert"

e quando provo a caricare quei pkcs12 (o come chiave separata / cert) allo slot 9c tramite:

Importare la chiave e il certificato, effettuare una delle seguenti operazioni:

  • Importa la chiave e il certificato (formato PEM) nello slot 9a:

      $ yubico-piv-tool -s 9a -a import-key -i key.pem
      $ yubico-piv-tool -s 9a -a import-certificate -i cert.pem
    
  • Importare la chiave e il certificato (formato PKCS12) nello slot 9a:

      $ yubico-piv-tool -s 9a -a import-key -a import-cert -i key.p12 -K PKCS12
    

ottengo l'errore

Enter Password: 
Invalid public exponent for import (only 0x10001 supported)
Unable to import private key

ps. io uso la chiave di gestione

ho provato a convertire id_rsa in pkcs8 o rimuovere pasphrase

qualcuno potrebbe spiegarmi di cosa si tratta? ho google su questo, ma senza fortuna

my idr_rsa

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,[some numbers I've cut]

Slot del certificato YUBIKEY PIV

Uno YubiKey abilitato per PIV contiene 4 slot distinti per i certificati, come specificato nel documento degli standard PIV. Ciascuno di questi slot è in grado di contenere un certificato X.509, insieme alla sua chiave privata di accompagnamento. Tecnicamente questi quattro slot sono molto simili, ma sono usati per scopi diversi.

Slot 9a: autenticazione PIV Questo certificato e la sua chiave privata associata vengono utilizzati per autenticare la carta e il titolare della carta. Questo slot è utilizzato per cose come l'accesso al sistema. Il PIN dell'utente finale è necessario per eseguire qualsiasi operazione di chiave privata. Una volta che il PIN è stato fornito con successo, è possibile eseguire più operazioni con chiave privata senza il consenso del titolare della carta.

Slot 9c: Firma digitale Questo certificato e la sua chiave privata associata vengono utilizzati per le firme digitali ai fini della firma di documenti o della firma di file ed eseguibili. Il PIN dell'utente finale è necessario per eseguire qualsiasi operazione di chiave privata. Il PIN deve essere inviato ogni volta immediatamente prima di un'operazione di firma, per garantire la partecipazione del titolare della carta per ogni firma digitale generata.

Slot 9d: gestione delle chiavi Questo certificato e la sua chiave privata associata sono utilizzati per la crittografia a scopo di riservatezza. Questo slot è utilizzato per cose come la crittografia di e-mail o file. Il PIN dell'utente finale è necessario per eseguire qualsiasi operazione di chiave privata. Una volta che il PIN è stato fornito con successo, è possibile eseguire più operazioni con chiave privata senza il consenso del titolare della carta.

Slot 9e: autenticazione della carta Questo certificato e la sua chiave privata associata vengono utilizzati per supportare applicazioni di accesso fisico aggiuntive, come l'accesso fisico agli edifici tramite serrature PIV-enabled. Il PIN dell'utente finale NON è richiesto per eseguire operazioni di chiave privata per questo slot.

Ho letto:

link

link

L'esponente pubblico RSA dovrebbe essere solo in {3, 5, 17, 257 o 65537} a causa di considerazioni di sicurezza?

link

ps. ho scaricato txt tramite

$ openssl rsa -text -in id_rsa

e c'è

publicExponent: 37 (0x25)

c'è un modo per cambiare l'esponente pubblico in 0x10001? o devo generare una nuova chiave; / e tutti i certificati da zero?

ps2.

Ho estratto un testo di questo tipo sulla possibilità, ma senza ulteriori spiegazioni

link

    
posta ceph3us 15.03.2016 - 17:12
fonte

1 risposta

3

(Crosspost di link che è offtopico lì.) è teoricamente possibile cambiare l'esponente pubblico mantenendo n fintanto che la nuova e è coprime a p-1 e q-1, e per F4 hai una buona possibilità di questo. Ma questo è molto più lavoro che generare una nuova coppia di chiavi, inoltre richiede la necessità di rigenerare le cert (s).

Immagino che tu abbia generato la tua coppia di chiavi RSA con ssh-keygen da OpenSSH; questo è l'unico strumento comune che conosco che scelga e = 37, e anche il valore predefinito è filename id_rsa . La risposta più semplice è invece generare la coppia di chiavi con OpenSSL che ha valore predefinito e = 65537 alias F4 (alla riga di comando). Inoltre, req può combinare la generazione di coppie di chiavi con la creazione di CSR e, a meno che non sia necessario mantenere il file CSR, è anche possibile saltare il CSR e produrre direttamente un certificato autofirmato aggiungendo -x509 :

openssl req -newkey RSA:bits -x509 -days 3650 -keyout privatekey -out server.crt
# proceed with PKCS12 conversion etc.

Se stai pensando di usarlo per SSH, nota che OpenSSH può perfettamente usare una chiave RSA con e = 65537; semplicemente non genera uno.

    
risposta data 16.03.2016 - 09:28
fonte

Leggi altre domande sui tag