Gestión de cifrado y certificados en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Septiembre de 2014
 
 

Cómo generar un par de claves utilizando el comando pktool genkeypair

Algunas aplicaciones requieren un par de claves públicas/privadas. En este procedimiento, podrá crear estos pares de claves y almacenarlos.

  1. (Opcional) Si tiene previsto utilizar un almacén de claves, cree el almacén de claves.
  2. Cree el par de claves.

    Utilice uno de los métodos siguientes.

    • Cree el par de claves y almacene el par de claves en un archivo.

      Las claves basadas en archivos se crean para aplicaciones que leen claves directamente de archivos en el disco. Normalmente, las aplicaciones que utilizan directamente bibliotecas criptográficas OpenSSL requieren que almacene las claves y los certificados de la aplicación en archivos.


      Notas -  El almacén de claves file no admite claves y certificados de curva elíptica (ec).
      % pktool genkeypair keystore=file outkey=key-filename \
      [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
      keystore=file

      El valor file especifica la ubicación de almacenamiento de tipo archivo para la clave.

      outkey=key-filename

      Especifica el nombre del archivo donde el par de claves se almacena.

      format=der|pem

      Especifica el formato de codificación del par de claves. La salida der es binaria y la salida pem es ASCII.

      keytype=rsa|dsa

      Especifica el tipo de par de claves que se puede almacenar en un almacén de claves file. Para obtener definiciones, consulte DSA y RSA.

      keylen=key-size

      Especifica la longitud de la clave en bits. El número debe ser divisible por 8. Para determinar los posibles tamaños de clave, utilice el comando cryptoadm list -vm.

    • Cree el par de claves y almacénelo en un almacén de claves PKCS #11.

      Debe completar el Step 1 antes de utilizar este método.

      El almacén de claves PKCS #11 se utiliza para almacenar objetos en un dispositivo de hardware. El dispositivo puede ser una tarjeta Sun Crypto Accelerator 6000, un dispositivo de módulo de plataforma de confianza (TPM) o una tarjeta inteligente que se conecta a la estructura criptográfica. PKCS #11 se puede utilizar para almacenar objetos en softtoken, o token basado en software, que almacena los objetos en un subdirectorio privado en el disco. Para obtener más información, consulte la página del comando man pkcs11_softtoken(5).

      Puede recuperar el par de claves del almacén de claves mediante una etiqueta que especifique.

      % pktool genkeypair label=key-label \
      [token=token[:manuf[:serial]]] \
      [keytype=rsa|dsa|ec]  [curve=ECC-Curve-Name]]\
      [keylen=key-size] [listcurves]
      label=key-label

      Especifica una etiqueta para el par de claves. El par de claves se puede recuperar del almacén de claves por su etiqueta.

      token=token[:manuf[:serial]]

      Especifica el nombre del token. De manera predeterminada, el nombre del token es Sun Software PKCS#11 softtoken.

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      Especifica el tipo de par de claves. Para el tipo de curva elíptica (ec), especifica opcionalmente un nombre de curva. Los nombres de curva se muestran como salida a la opción listcurves.

      keylen=key-size

      Especifica la longitud de la clave en bits. El número debe ser divisible por 8.

      listcurves

      Muestra los nombres de curva elíptica que se pueden utilizar como valores para la opción curve= para un tipo de clave ec.

    • Genere un par de claves y almacénelo en un almacén de claves NSS.

      El almacén de claves NSS es utilizado por servidores que dependen de NSS como interfaz criptográfica primaria.

      Debe completar el Step 1 antes de utilizar este método.

      % pktool keystore=nss genkeypair label=key-nickname \
      [token=token[:manuf[:serial]]] \
      [dir=directory-path] [prefix=database-prefix] \
      [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]] \
      [keylen=key-size] [listcurves]
      keystore=nss

      El valor nss especifica la ubicación de almacenamiento de tipo NSS para la clave.

      label=nickname

      Especifica una etiqueta para el par de claves. El par de claves se puede recuperar del almacén de claves por su etiqueta.

      token=token[:manuf[:serial]]

      Especifica el nombre del token. De manera predeterminada, el token es Sun Software PKCS#11 softtoken.

      dir=directorio

      Especifica la ruta de directorio a la base de datos NSS. De manera predeterminada, el valor de directorio es el directorio actual.

      prefix=database-prefix

      Especifica el prefijo a la base de datos NSS. El valor predeterminado es sin prefijo.

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      Especifica el tipo de par de claves. Para el tipo de curva elíptica, especifica opcionalmente un nombre de curva. Los nombres de curva se muestran como salida a la opción listcurves.

      keylen=key-size

      Especifica la longitud de la clave en bits. El número debe ser divisible por 8.

      listcurves

      Muestra los nombres de curva elíptica que se pueden utilizar como valores para la opción curve= para un tipo de clave ec.

  3. (Opcional) Compruebe que la clave exista.

    Utilice uno de los siguientes comandos, según dónde haya guardado la clave:

    • Verifique la clave en el archivo key-filename.
      % pktool list keystore=file objtype=key infile=key-filename
      Found n keys.
      Key #1 - keytype:location (keylen)
    • Verifique la clave en el almacén de claves PKCS #11.
      $ pktool list objtype=key
      Enter PIN for keystore:
      Found n keys.
      Key #1 - keytype:location (keylen)
    • Verifique la clave en el almacén de claves NSS.
      % pktool list keystore=nss dir=directory objtype=key
Ejemplo 4-6  Creación de un par de claves utilizando el comando pktool

En el siguiente ejemplo, un usuario crea un almacén de claves PKCS #11 por primera vez. Después de determinar los tamaños de clave para los pares de claves RSA, el usuario genera un par de claves para una aplicación. Por último, el usuario verifica que el par de claves se encuentre en el almacén de claves. El usuario nota que la segunda instancia del par de claves RSA se puede almacenar en el hardware. Dado que el usuario no especifica un argumento token, el par de claves se almacena como un Sun Software PKCS#11 softtoken.

# pktool setpin
Create new passphrase:
Re-enter new passphrase:Retype password
Passphrase changed.
% cryptoadm list -vm | grep PAIR
...
CKM_DSA_KEY_PAIR_GEN       512  3072 .  .  .  .  .  .  .  .  .  X  .  .  .  .
CKM_RSA_PKCS_KEY_PAIR_GEN  256  8192 .  .  .  .  .  .  .  .  .  X  .  .  .  .
...
CKM_RSA_PKCS_KEY_PAIR_GEN  256  2048 X  .  .  .  .  .  .  .  .  X  .  .  .  .
ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1
% pktool genkeypair label=specialappkeypair keytype=rsa keylen=2048
Enter PIN for Sun Software PKCS#11 softtoken  :Type password

% pktool list
Enter PIN for Sun Software PKCS#11 softtoken  :Type password
No.      Key Type      Key Len.      Key Label
----------------------------------------------------
Asymmetric public keys:
1        RSA                         specialappkeypair
Ejemplo 4-7  Creación de un par de claves que utiliza el algoritmo de curva elíptica

En el siguiente ejemplo, un usuario agrega un par de claves de curva elíptica (ec) al almacén de claves, especifica un nombre de curva y verifica que el par de claves se encuentre en el almacén de claves.

% pktool genkeypair listcurves
secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
.
.
.
c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
prime192v3
% pktool genkeypair label=eckeypair keytype=ec curves=c2tnb431r1
% pktool list
Enter PIN for Sun Software PKCS#11 softtoken  :Type password
No.  Key Type  Key Len.  Key Label
----------------------------------------------------
Asymmetric public keys:
1    ECDSA               eckeypair