subiendo pkcs12 a yubikey piv slot

5

tengo una id_rsa (clave privada que utilizo para la autenticación y el cifrado junto con cert en yubikey piv smardcart provider en la ranura 9a) ahora deseo usar esta clave para crear un almacén de claves pkcs12 (clave privada + certificado autofirmado ) para firmar archivos jar (apk de Android) a través de otra ranura en yubikey piv

He creado pkcs almacenar de esta manera:

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

y cuando intento cargar esos pkcs12 (o como una clave / cert por separado) en la ranura 9c a través de:

Importe la clave y el certificado, realice una de las siguientes acciones:

  • Importe la clave y el certificado (formato PEM) en la ranura 9a:

      $ yubico-piv-tool -s 9a -a import-key -i key.pem
      $ yubico-piv-tool -s 9a -a import-certificate -i cert.pem
    
  • Importe la clave y el certificado (formato PKCS12) en la ranura 9a:

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

me sale un error

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

ps. Yo uso la clave de administración

He intentado convertir id_rsa a pkcs8 o eliminar frase de contraseña

¿alguien podría explicarme de qué se trata este error? Tengo google sobre esto pero sin suerte

mi idr_rsa

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

Ranuras de certificado PIV YUBIKEY

Un YubiKey habilitado para PIV tiene 4 ranuras distintas para certificados, como se especifica en el documento de estándares PIV. Cada una de estas ranuras es capaz de contener un certificado X.509, junto con la clave privada que lo acompaña. Técnicamente, estas cuatro ranuras son muy similares, pero se utilizan para diferentes propósitos.

Ranura 9a: Autenticación PIV Este certificado y su clave privada asociada se utilizan para autenticar la tarjeta y el titular de la tarjeta. Esta ranura se utiliza para cosas como el inicio de sesión del sistema. Se requiere el PIN del usuario final para realizar cualquier operación de clave privada. Una vez que el PIN se ha proporcionado con éxito, se pueden realizar múltiples operaciones de clave privada sin el consentimiento adicional del titular de la tarjeta.

Slot 9c: Firma digital Este certificado y su clave privada asociada se utilizan para firmas digitales con el fin de firmar documentos, o firmar archivos y ejecutables. Se requiere el PIN del usuario final para realizar cualquier operación de clave privada. El PIN debe enviarse cada vez inmediatamente antes de una operación de firma, para garantizar la participación del titular de la tarjeta en cada firma digital generada.

Slot 9d: Gestión de claves Este certificado y su clave privada asociada se utilizan para el cifrado con fines de confidencialidad. Esta ranura se utiliza para cosas como cifrar correos electrónicos o archivos. Se requiere el PIN del usuario final para realizar cualquier operación de clave privada. Una vez que el PIN se ha proporcionado con éxito, se pueden realizar múltiples operaciones de clave privada sin el consentimiento adicional del titular de la tarjeta.

Slot 9e: Autenticación de la tarjeta Este certificado y su clave privada asociada se utilizan para admitir aplicaciones de acceso físico adicionales, como proporcionar acceso físico a edificios a través de cerraduras de puertas habilitadas para PIV. El PIN del usuario final NO es necesario para realizar operaciones de clave privada para esta ranura.

He leído:

enlace

enlace

¿Debería RSA exponente público solo en {3, 5, 17, 257 o 65537} debido a consideraciones de seguridad?

enlace

ps. Tengo dump txt a través de

$ openssl rsa -text -in id_rsa

y hay

publicExponent: 37 (0x25)

¿hay una manera de cambiar el exponente público a 0x10001? o tengo generar una nueva clave; / y todos los certificados desde cero?

ps2.

He desenterrado un texto de este tipo sobre posibilidad, pero no tengo más explicaciones

enlace

    
pregunta ceph3us 15.03.2016 - 17:12
fuente

1 respuesta

3

(Punto de cruce de enlace que está fuera de tema). teóricamente es posible cambiar el exponente público manteniendo n siempre que la nueva e sea coprime a p-1 y q-1, y para F4 tiene una buena posibilidad de esto. Pero esto es mucho más trabajo que generar un nuevo par de llaves, además de que hace requiere la regeneración de los certificados.

Supongo que generó su par de llaves RSA con ssh-keygen desde OpenSSH; esa es la única herramienta común que conozco que elige e = 37, y también tiene por defecto el nombre de archivo id_rsa . La respuesta fácil es, en cambio, generar el par de llaves con OpenSSL, que de forma predeterminada es e = 65537 , también conocido como F4 (en la línea de comandos). Además, req puede combinar la generación de par de llaves con la creación de CSR, y, a menos que necesite mantener el archivo CSR, también puede omitir el CSR y generar un certificado de firma propia directamente al agregar -x509 :

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

Si planea usar esto para SSH, tenga en cuenta que OpenSSH puede perfectamente usar una clave RSA con e = 65537; simplemente no genera uno.

    
respondido por el dave_thompson_085 16.03.2016 - 09:28
fuente

Lea otras preguntas en las etiquetas