Generación de Certificados SSL con JAVA Certicámara S.A USO: EXTERNO Página 1 de 16
CONTROL DE ACTUALIZACIONES Generación de Certificados SSL con JAVA VERSIÓN 1.O VERSION FECHA ELABORADO REVISADO APROBADO 1 15-06-2004 Willman Garzón Ing. Soporte y Soluciones Juan David Gutierrez Administrador del Sistema Carlos Alberto Agudelo Certicámara S.A USO: EXTERNO Página 2 de 16
INDICE 1. OBJETIVOS 2. GENERALIDADES 3. GENERACIÓN DE LA SOLICITUD DE CERTIFICADO (CSR) 3.1. GENERACIÓN DEL PAR DE LLAVES 3.2. GENERACIÓN DE LA SOLICITUD 4. ENVÍO DE LA SOLICITUD 5. INSTALACIÓN DEL CERTIFICADO 6. EXPORTACIÓN DEL CERTIFICADO 7. PROCEDIMIENTOS GENERALES 7.1. LISTAR LAS ENTRADAS CONTENIDAS EN EL KEYSTORE 7.2. GENERAR UN CLON DE UNA ENTRADA EN EL KEYSTORE 7.3. ELIMINAR UNA ENTRADA DEL KEYSTORE 7.4. GENERAR UNA COPIA DEL KEYSTORE Certicámara S.A USO: EXTERNO Página 3 de 16
1. OBJETIVO Este documento tienen como objetivo guiar al lector en el proceso de creación de un CSR, su envío a la entidad de certificación y la posterior instalación de un certificado de Servidor Seguro empleando el Keytool de JAVA 2. GENERALIDADES EL KEYTOOL DE JAVA El keytool de Java es una herramienta para la administración de llaves y certificados. Esta herramienta le permite a los usuarios administrar sus pares de llaves pública\privada y los certificados asociados, para su uso en servicios de autenticación o integridad de datos, utilizando firmas digitales. El keytool almacena las llaves y los certificados en el Keystore. EL ALMACÉN DE LLAVES KEYSTORE Este archivo representa una colección en memoria de las claves y certificados. Este archivo maneja dos tipos de entradas: Claves: este tipo de Keystore almacena información sensible de claves criptográficas, la cual está almacenada en un formato protegido para evitar el acceso no autorizado. Generalmente una clave almacenada en este tipo de entrada es una llave secreta, o una llave privada acompañada por la cadena de certificados de la correspondiente llave pública. Certicámara S.A USO: EXTERNO Página 4 de 16
Certificados de confianza: esta entrada contiene un certificado de llave pública que pertenece a un tercero. Se denomina certificado de confianza porque el Keystore confía en que la llave pública incluida en el certificado pertenece a la identidad definida por el subject (propietario) del certificado. Cada entrada en el Keystore es definida por una cadena alias. En el caso de las llaves privadas y sus correspondientes cadenas de certificados asociados, esta cadena representa las diversas maneras en las cuales dicha entidad puede autenticarse. Los alias son case-insensitive, es decir, que el alias keyscontainer representa el mismo keystore que el alias que KeysContainer. 3. GENERACIÓN DE LA SOLICITUD DE CERTIFICADO El proceso de generación del CSR (Certificate Signing Request) a través de Java comprende dos pasos: la generación del par de llaves (pública y privada) y la generación propia del request que será enviado a la Autoridad de Certificación para la emisión del certificado digital. 3. 1. GENERACIÓN DEL PAR DE LLAVES Para llevar a cabo el proceso de generación del par de llaves debe completar los siguientes pasos: 1. Ubiquese en el directorio en el cual desea llevar a cabo la generación del par de llaves. 2. Ejecute la siguiente instrucción para generar el par de llaves: Certicámara S.A USO: EXTERNO Página 5 de 16
keytool -genkey -alias alias_name -keyalg RSA -keystore key_store_path En este caso alias_name identifica el alias con el cual se distinguirán el par de llaves y el correspondiente certificado digital generado. Key_store_path representa la ruta en la cual se ubicará el archivo del almacén de llaves generado, esta ruta incluye también el nombre del archivo. Una vez ejecutado el anterior comando se solicitará una serie de datos que corresponden a la identificación del Keystore y del par de llaves, digite la información correspondiente teniendo en cuenta lo siguiente: Contraseña del par de claves: Esta contaseña (cadena de caracteres más largo que un password habitual, generalmente entre 6 y 16 caracteres) se usará para generar el Keystore y restringir su acceso. Es preciso que recuerde la contraseña introducida, puesto que luego la necesitará para realizar posteriormente las tareas de adiministración del Keystore y de las entradas que en él se encuentren contenidas Nombre y apellido CN (Common Name) : Este campo le permite identificar al titular del certtificado digital. En este caso por tratarse de un certificado SSL este campo deberá contener el URL del dominio que se desea asegurar ( p.ej. www.certicamara.com ). Este nombre deberá ser idéntico al nombre del dominio del sitio Web para el cual se esta requiriendo el certificado. Si el nombre del sitio Web no concuerda con el common name del certificado algunos sitios Web refutarían establecer una conexión segura con el sitio. No se debe incluir el protocolo específico (http://) o cualquier otro número de puerto o pathnames en el common name del certificado. Tampoco se deben usar ningún tipo de wildcards tales como * o?, y tampoco direcciones IP. Unidad Organizacional OU (Organizacional Unit ) Unidad organizacional o departamento de la empresa, generalmente es el nombre de la unidad que hará uso del servidor seguro. Certicámara S.A USO: EXTERNO Página 6 de 16
O Organization Razón social con la cual la empresa se encuentra registrada. L Localiy Nombre de la ciudad en la cual la empresa se encuentra ubicada. S State/Province El nombre de la región, departamento o provincia en la cual su empresa se encuentra ubicada. Digite el nombre completo de la región, no utilice abreviaciones. C Country Las dos letras correspondientes al país según la especificación ISO (P. ej. co para Colombia) Una vez ingresados los datos anteriores el sistema le solicitará confirmar si la información introducida es correcta o no. Presione Y y la tecla ENTER para confirmar que los datos son correctos o N y ENTERpara ingresar de nuevo la información. A cntinuación se solicitará una contraseña para proteger el par de claves generado, esta contraseña posee las mismas características que la contraseña del almacén de claves y se empleará para controlar el acceso al par de llaves. En la siguiente figura se ilustra un ejemplo de diligenciamiento de información Certicámara S.A USO: EXTERNO Página 7 de 16
3.2. GENERACIÓN DE LA SOLICITUD Una vez creado el par de llaves se procede a generar el CSR a partir del cual la Autoridad de certificación emitirá el certificado digital. Para llevar a cabo la creación del request debe ejecutar la siguiente instrucción: keytool -certreq -keyalg RSA -alias alias_name -file path\file_name -keystore key_store_path En este caso el alias_name debe coincidir con el alias empleado para identificar el par de llaves en el momento de su generación; path\file_name identifica la ruta y el nombre con el cual se creará el archivo de request. Key_store_path identifica la ruta y nombre del almacén de llaves que se empleará para generar el CSR. En la siguiente figura se ilustra un ejemplo de diligenciamiento de información Certicámara S.A USO: EXTERNO Página 8 de 16
4. ENVÍO DE LA SOLICITUD La solicitud se puede enviar por E-Mail adjuntando el archivo de la solicitud (recordar el archivo que fue generado en el paso anterior p. Ej. certreq.csr) a las cuentas de correo soporte@certicamara.com o info@certicamara.com. O bien puede hacer llegar la solicitud en medio magnético (disquete) a las instalaciones de Certicámara Avenida El Dorado No. 68D 35 Piso 5, dirigido a la Dirección Comercial. Una vez hecho el envío de la solicitud, Certicámara le entregara posteriormente el certificado que habrá de instalar. 5. INSTALACIÓN DEL CERTIFICADO Una vez usted reciba el certificado digital SSL emitido por Certicámara, recibirá también el certificado de Certicámara (Autoridad de Certificación) y debe ejecutar las siguientes instrucciones para para instalarlos en su máquina: 1. Instalar el certificado de la Autoridad de Certificación (CERTICAMARA S.A.) Certicámara S.A USO: EXTERNO Página 9 de 16
keytool -import -alias alias_name -keystore key_store_path -trustcacerts - file file_path donde file_path especifica la ruta en la cual se encuentra almacenado el certificado digital de la CA (Autoridad de Certificación).En este caso el alias_name debe identificar al certificado de la CA. Debe tener en cuenta que no debe ser el mismo que el generado junto con el par de llaves. En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: 2. Importar el Certificado SSL solicitado: keytool -import -alias alias_name -keystore key_store_path -trustcacerts - file file_path donde file_path especifica la ruta en la cual se encuentra almacenado el certificado digital generado por la CA como respuesta al request enviado. En este caso el alias_name debe coincidir con el alias empleado para identificar el par Certicámara S.A USO: EXTERNO Página 10 de 16
de llaves en el momento de su generación; al igual que el key_store_path idebe corresponder al empleado para almacenar el par de llaves. En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: 6. EXPORTACIÓN DEL CERTIFICADO El procedimiento de exportación del certificado digital genera una copia del certificado seleccionado en un archivo de salida. Dicha copia puede ser empleada como backup del certificado digital instalado y utilizarla para posteriores instalaciones si así se requiere. Para llevar a cabo la exportación de un certificado digital se debe ejecutar la siguiente instrucción: keytool -export -alias alias_name -file file_path En este caso el alias_name debe coincidir con el alias empleado para identificar el certificado en el momento de su generación. File_path indicará la ruta y el nombre del archivo de salida en el cual se exportará el certificado digital. Certicámara S.A USO: EXTERNO Página 11 de 16
En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: 7. PROCEDIMIENTOS GENERALES A continuación se presentan un conjunto de procedimientos generales de administración del Keytool que pueden ser empleados para el manejo de los certificados almacenados. 7.1. LISTAR LAS ENTRADAS CONTENIDAS EN UN KEYSTORE Para listar todas las entradas contenidas en un almacén de llaves (Keystore) debe ejecutar la siguiente instrucción: keytool -keystore key_store_path -list donde key_store_path identifica la ruta y el nombre del almacén de llaves del cual se desea examinar su contenido. En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: Certicámara S.A USO: EXTERNO Página 12 de 16
7.2. GENERAR UN CLON DE UNA ENTRADA DEL KEYSTORE Este procedimiento permite llevar a cabo la generación de una copia exacta de una entrada almacenada en un almacén de llaves (keystore). Dicha copia genera una nueva entrada en el keystore que posee la misma llave privada y la cadena de certificados asociados de la entrada original. Para llevar a cabo esta tarea se debe ejecutar la siguiente instrucción: keytool -keyclone -alias alias_name -dest new_alias -new new_password -keystore key_store_path donde alias_name representa el alias de la entrada que se desea clonar; new_alias corresponde al alias con el cual se identificará la nueva entrada generada; new_password representa el password con el cual se protegerá la nueva entrada y key_store_path identifica la ruta y el nombre del almacén de llaves en el cual se encuentra contenido el certificado digital En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: Certicámara S.A USO: EXTERNO Página 13 de 16
En el ejemplo anterior es posible observar que una vez generado el clon de la llave seleccionada se registra una nueva entrada en el almacén de llaves correspondiente a la entrada recien creada. OBSERVACIÓN: Vale la pena mencionar que esta nueva entrada generada a partr de una llave existente en el almacén de llaves, a diferencia del procedimiento de exportación de un certificado (Apartado 6 de este manual), genera una replica completa tanto de la llave privada como de la cadena de certificados asociada, y por tanto, constituye un backup completo de la entrada seleccionada. 7.3. ELIMINAR UNA ENTRADA DEL KEYSTORE Este procedimiento permite remover/eliminar una entrada registrada en un almacén de llaves. Para llevara a cabo esta tarea debe ejecutar la siguiente instruccion: keytool -delete -alias alias_name -keystore key_store_path Certicámara S.A USO: EXTERNO Página 14 de 16
En la siguiente figura se ilustra un ejemplo de la ejecución de la instrucción: En la figura anterior se puede observar que una vez ejecutada la instrucción el contenido del almacén de llaves no presenta ninguna referencia a la entrada eliminada. 7.4. GENERAR UNA COPIA DEL KEYSTORE El keystore (almacén de llaves) de Java es un archivo como cualquier otro, y como tal, es posible llevar a cabo una copia completa del mismo utilizando las herramientas de copia de archivos propia del sistema operativo en el cual se encuentra trabajando. De esta manera, para realizar una copia completa del contenido de un almacén de llaves no es necesario ejecutar ningún conjunto de instrucciones, sino basta con realizar una copia del archivo de la misma manera que se efectúa con cualquier tipo de archivo en el sistema operativo. Dicha copia puede ser empleada como un Backup del almacén de llaves, útil en la eventualidad que se presenten daños en el almacén de llaves actual o su perdida. Certicámara S.A USO: EXTERNO Página 15 de 16
Certicámara S.A USO: EXTERNO Página 16 de 16