Omitir V�nculos de navegaci�n | |
Salir de la Vista de impresi�n | |
Administración de Oracle Solaris: servicios de seguridad Oracle Solaris 11 Information Library (Español) |
Parte I Descripción general de la seguridad
1. Servicios de seguridad (descripción general)
Parte II Seguridad de sistemas, archivos y dispositivos
2. Gestión de seguridad de equipos (descripción general)
3. Control de acceso a sistemas (tareas)
4. Servicio de análisis de virus (tareas)
5. Control de acceso a dispositivos (tareas)
6. Uso de la herramienta básica de creación de informes de auditoría (tareas)
7. Control de acceso a archivos (tareas)
Parte III Roles, perfiles de derechos y privilegios
8. Uso de roles y privilegios (descripción general)
9. Uso del control de acceso basado en roles (tareas)
10. Atributos de seguridad en Oracle Solaris (referencia)
Parte IV Servicios criptográficos
11. Estructura criptográfica (descripción general)
12. Estructura criptográfica (tareas)
13. Estructura de gestión de claves
Administración de tecnologías de clave pública
Utilidades de la estructura de gestión de claves
Gestión de complementos de KMF
Gestión de almacenes de claves KMF
Uso de la estructura de gestión de claves (tareas)
Uso de la estructura de gestión de claves (mapa de tareas)
Cómo crear un certificado mediante el comando pktool gencert
Cómo importar un certificado al almacén de claves
Cómo exportar un certificado y una clave privada en formato PKCS #12
Cómo generar una frase de contraseña mediante el comando pktool setpin
Cómo generar un par de claves utilizando el comando pktool genkeypair
Cómo firmar una solicitud de certificación utilizando el comando pktool signcsr
Parte V Servicios de autenticación y comunicación segura
14. Autenticación de servicios de red (tareas)
17. Uso de Secure Shell (tareas)
19. Introducción al servicio Kerberos
20. Planificación del servicio Kerberos
21. Configuración del servicio Kerberos (tareas)
22. Mensajes de error y resolución de problemas de Kerberos
23. Administración de las políticas y los principales de Kerberos (tareas)
24. Uso de aplicaciones Kerberos (tareas)
25. El servicio Kerberos (referencia)
Parte VII Auditoría en Oracle Solaris
26. Auditoría (descripción general)
27. Planificación de la auditoría
En esta sección, se describe cómo utilizar el comando pktool para gestionar los objetos de clave pública, como contraseñas, frases de contraseña, archivos, almacenes de claves, certificados y CRL.
La estructura de gestión de claves (KMF) permite gestionar de manera centralizada las tecnologías de clave pública.
|
Este procedimiento crea un certificado autofirmado y almacena el certificado en el almacén de claves PKCS #11. Como parte de esta operación, también se crea un par de claves RSA públicas/privadas. La clave privada está almacenada en el almacén de claves con el certificado.
% pktool gencert [keystore=keystore] label=label-name \ subject=subject-DN serial=hex-serial-number
Especifica el almacén de claves por tipo de objeto de clave pública. El valor puede ser nss, pkcs11 o ssl. La palabra clave es opcional.
Especifica un nombre único que el emisor asigna al certificado.
Especifica el nombre distintivo para el certificado.
Especifica el número de serie en formato hexadecimal. El emisor del certificado elige el número, como 0x0102030405.
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number n. ...
Este comando muestra todos los certificados del almacén de claves. En el ejemplo siguiente, el almacén de claves contiene un solo certificado.
Ejemplo 13-1 Creación de un certificado autofirmado mediante pktool
En el ejemplo siguiente, un usuario de My Company crea un certificado autofirmado y almacena el certificado en un almacén de claves para objetos PKCS #11. El almacén de claves está vacío inicialmente. Si el almacén de claves no se inicializó, el PIN para el token de software es changeme.
% pktool gencert keystore=pkcs11 label="My Cert" \ subject="C=US, O=My Company, OU=Security Engineering Group, CN=MyCA" \ serial=0x000000001 Enter pin for Sun Software PKCS#11 softtoken:Type PIN for token
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
Este procedimiento describe cómo importar al almacén de claves un archivo con información PKI que se codifica con PEM o con DER sin procesar. Para un procedimiento de exportación, consulte el Ejemplo 13-4.
% pktool import keystore=keystore infile=infile-name label=label-name
Si está importando información PKI que es privada, como un archivo de exportación en formato PKCS #12, el archivo requiere una contraseña. El creador del archivo que está importando proporciona la contraseña PKCS #12.
Enter password to use for accessing the PKCS12 file:Type PKCS #12 password
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
Ejemplo 13-2 Importación de un archivo PKCS #12 al almacén de claves
En el ejemplo siguiente, el usuario importa un archivo PKCS #12 de terceros. El comando pktool import extrae la clave privada y el certificado del archivo gracedata.p12, y los almacena en el almacén de claves preferido del usuario.
% pktool import keystore=pkcs11 infile=gracedata.p12 label=GraceCert Enter password to use for accessing the PKCS12 file:Type PKCS #12 password Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Found 1 certificate(s) and 1 key(s) in gracedata.p12 % pktool list Found 1 certificates. 1. (X.509 certificate) Label: GraceCert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
Ejemplo 13-3 Importación de un certificado X.509 al almacén de claves
En el ejemplo siguiente, el usuario importa un certificado X.509 en formato PEM al almacén de claves preferido del usuario. Este certificado público no está protegido con una contraseña. El almacén de claves del usuario tampoco está protegido con una contraseña.
% pktool import keystore=pkcs11 infile=somecert.pem label="TheirCompany Root Cert" % pktool list Found 1 certificates. 1. (X.509 certificate) Label: TheirCompany Root Cert ID: 21:ae:83:98:24:d1:1f:cb:65:5b:48:75:7d:02:47:cf:98:1f:ec:a0 Subject: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Issuer: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Serial: 0x01
Puede crear un archivo en formato PKCS #12 para exportar a otros sistemas las claves privadas y su certificado X.509 asociado. El acceso al archivo está protegido con una contraseña.
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
Utilice el almacén de claves y la etiqueta del comando pktool list. Proporcione un nombre de archivo para el archivo de exportación. Si el nombre contiene un espacio, escríbalo entre comillas dobles.
% pktool export keystore=keystore outfile=outfile-name label=label-name
En la petición de datos, escriba la contraseña actual para el almacén de claves. En este punto, puede crear una contraseña para el archivo de exportación. El destinatario debe proporcionar esta contraseña al importar el archivo.
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
Consejo - Envíe la contraseña por separado del archivo de exportación. De acuerdo con las prácticas recomendadas, es aconsejable proporcionar la contraseña fuera de banda, por ejemplo, durante una llamada telefónica.
Ejemplo 13-4 Exportación de un certificado y una clave privada en formato PKCS #12
En el ejemplo siguiente, un usuario exporta a un archivo PKCS #12 estándar las claves privadas con su certificado X.509 asociado. Este archivo se puede importar a otros almacenes de claves. La contraseña PKCS #11 protege el almacén de claves de origen. La contraseña PKCS #12 se utiliza para proteger los datos privados en el archivo PKCS #12. Esta contraseña es necesaria para importar el archivo.
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
% pktool export keystore=pkcs11 outfile=mydata.p12 label="My Cert" Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
A continuación, el usuario llama por teléfono al destinatario y proporciona la contraseña PKCS #12.
Puede generar una frase de contraseña para un objeto de un almacén de claves y para el almacén de claves en sí. La frase de contraseña es necesaria para acceder al objeto o al almacén de claves. Para ver un ejemplo de generación de una frase de contraseña para un objeto de un almacén de claves, consulte el Ejemplo 13-4.
% pktool setpin keystore=nss|pkcs11 dir=directory
Si el almacén de claves no tiene una contraseña definida, presione la tecla de retorno para crear la contraseña.
Enter current token passphrase:Press the Return key Create new passphrase:Type the passphrase that you want to use Re-enter new passphrase:Retype the passphrase Passphrase changed.
El almacén de claves está ahora protegido por la frase de contraseña. Si pierde la frase de contraseña, perderá el acceso a los objetos del almacén de claves.
Ejemplo 13-5 Protección de un almacén de claves con una frase de contraseña
El ejemplo siguiente muestra cómo establecer la frase de contraseña para una base de datos NSS. Debido a que no se creó ninguna frase de contraseña, el usuario presiona la tecla de retorno en la primera petición de datos.
% pktool setpin keystore=nss dir=/var/nss Enter current token passphrase:Press the Return key Create new passphrase: has8n0NdaH Re-enter new passphrase: has8n0NdaH Passphrase changed.
Algunas aplicaciones requieren un par de claves públicas/privadas. En este procedimiento, podrá crear estos pares de claves y almacenarlos.
Utilice uno de los métodos siguientes.
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.
Nota - 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]
El valor file especifica la ubicación de almacenamiento de tipo archivo para la clave.
Especifica el nombre del archivo donde el par de claves se almacena.
Especifica el formato de codificación del par de claves. La salida der es binaria y la salida pem es ASCII.
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.
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.
Debe completar el Paso 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]
Especifica una etiqueta para el par de claves. El par de claves se puede recuperar del almacén de claves por su etiqueta.
Especifica el nombre del token. De manera predeterminada, el nombre del token es Sun Software PKCS#11 softtoken.
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.
Especifica la longitud de la clave en bits. El número debe ser divisible por 8.
Muestra los nombres de curva elíptica que se pueden utilizar como valores para la opción curve= para un tipo de clave ec.
El almacén de claves NSS es utilizado por servidores que dependen de NSS como interfaz criptográfica primaria. Por ejemplo, el Oracle iPlanet Web Server utiliza las bases de datos NSS para almacenamiento de objetos.
Debe completar el Paso 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]
El valor nss especifica la ubicación de almacenamiento de tipo NSS para la clave.
Especifica una etiqueta para el par de claves. El par de claves se puede recuperar del almacén de claves por su etiqueta.
Especifica el nombre del token. De manera predeterminada, el token es Sun Software PKCS#11 softtoken.
Especifica la ruta de directorio a la base de datos NSS. De manera predeterminada, el valor de directorio es el directorio actual.
Especifica el prefijo a la base de datos NSS. El valor predeterminado es sin prefijo.
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.
Especifica la longitud de la clave en bits. El número debe ser divisible por 8.
Muestra los nombres de curva elíptica que se pueden utilizar como valores para la opción curve= para un tipo de clave ec.
Utilice uno de los siguientes comandos, según dónde haya guardado la clave:
% pktool list keystore=file objtype=key infile=key-filename Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
% pktool list keystore=nss dir=directory objtype=key
Ejemplo 13-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:Easily remembered, hard-to-detect password Re-enter new passphrase:Retype password Passphrase changed. % cryptoadm list -vm | grep PAIR ... CKM_DSA_KEY_PAIR_GEN 512 1024 . . . CKM_RSA_PKCS_KEY_PAIR_GEN 256 4096 . . . ... CKM_RSA_PKCS_KEY_PAIR_GEN 512 2048 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 Found 1 keys. Key #1 - keypair: specialappkeypair (2048 bits)
Ejemplo 13-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 Found 2 keys. Key #1 - keypair: specialappkeypair (2048 bits) Key #2 - keypair: eckeypair (c2tnb431r1)
Este procedimiento se utiliza para firmar una solicitud de firma de certificado (CSR) PKCS #10. CSR puede estar en formato PEM o DER. El proceso de firma emite un certificado X.509 v3. Para generar una CSR PKCS #10, consulte la página del comando man pktool(1).
Antes de empezar
Es una autoridad de certificación (CA), ha recibido una CSR y está almacenada en un archivo.
Si ha almacenado la clave del firmante en un almacén de claves PKCS #11, signkey es la etiqueta que recupera esta clave privada.
Si ha almacenado la clave del firmante en un almacén de claves NSS o un almacén de claves de archivos, signkey es el nombre de archivo que alberga esta clave privada.
Especifica el nombre de archivo de la CSR.
Especifica el número de serie del certificado firmado.
Especifica el nombre de archivo para el certificado firmado.
Especifica el nombre del emisor de CA en formato de nombre distinguido (DN).
Para obtener más información sobre argumentos opcionales para el subcomando signcsr, consulte la página del comando man pktool(1).
Por ejemplo, el siguiente comando firma el certificado con la clave del firmante del depósito PKCS #11:
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
El siguiente comando firma el certificado con la clave del firmante de un archivo:
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
Puede utilizar el correo electrónico, un sitio web u otro mecanismo para entregar el certificado al solicitante.
Por ejemplo, puede utilizar el correo electrónico para enviar el archivo ExampleCoCert2010 al solicitante.
Identifica el complemento proporcionándole un nombre de almacén de claves. Al agregar el complemento a KMF, el software lo identifica por su nombre de almacén de claves. El complemento se puede definir para aceptar una opción. Este procedimiento incluye cómo eliminar el complemento de KMF.
% /usr/bin/kmfcfg install keystore=keystore-name \ modulepath=path-to-plugin [option="option-string"]
donde
nombre_almacén de claves: especifica un nombre único para el almacén de claves que proporciona.
ruta a complemento: especifica la ruta completa al objeto de biblioteca compartida para el complemento KMF.
cadena_opción: especifica un argumento opcional a un objeto de biblioteca compartida.
% kmfcfg list plugin keystore-name:path-to-plugin [(built-in)] | [;option=option-string]
% kmfcfg uninstall keystore=keystore-name % kmfcfg plugin list
Ejemplo 13-8 Llamada a un complemento KMF con una opción
En el siguiente ejemplo, el administrador almacena un complemento KMF en un directorio específico de sitio. El complemento se define para aceptar una opción debug. El administrador agrega el complemento y verifica que el complemento esté instalado.
# /usr/bin/kmfcfg install keystore=mykmfplug \ modulepath=/lib/security/site-modules/mykmfplug.so # kmfcfg list plugin KMF plugin information: ----------------------- pkcs11:kmf_pkcs11.so.1 (built-in) file:kmf_openssl.so.1 (built-in) nss:kmf_nss.so.1 (built-in) mykmfplug:/lib/security/site-modules/mykmfplug.so # kmfcfg modify plugin keystore=mykmfplug option="debug" # kmfcfg list plugin KMF plugin information: ----------------------- ... mykmfplug:/lib/security/site-modules/mykmfplug.so;option=debug
El complemento ahora se ejecuta en modo de depuración.