Realmente debería de haber empezado por esta introducción pero ya que voy a comentar como configurar ahora nuestro EJBCA, entonces lo voy a denotar..
En cualquier infraestructura de clave publica, es muy importante la etapa de Diseño previa la cual se detallan las reglas de juego, como :
¿Como se llamara nuestra CA?
¿Cuantas sub-CA's va a tener?
¿Quien va a ser el administrador?
¿A que entidad le pertenece la administración de la CA o Sub-CA's?
¿Que servicios va a ofrecer cada CA o Sub-CA?
¿Con que seguridad se va a permitir el acceso?
¿Cuanto tiempo de vida va a tener los Certificados emitidos o la propia CA?
¿Cuales van a ser los requerimientos para la emisión?
¿Que seguridad Perimetral va a contar la infraestructura?
¿Como se van o cual va a ser el procedimiento mas seguro para otorgar los certificados?
...
...etc.. etc
y algunas preguntas mas que tenemos que ir respondiendo enfocado en el negocio de la fase de producción que tendrá la infraestructura de clave publica antes incluso de la etapa de instalación en el diseño de la misma, Una implementación Correcta desde su etapa de diseño nos puede Resolver en un menor % de riesgo durante la fase de producción
Entonces vamos a empezar una vez ya instalada y dentro del Panel Administrador que lo deje en Post >> "Infraestructura de clave publica I" , creando la CA root Inicial
(Ojo, los nombres de los paneles voy a dejarlos en ingles, aunque los pueden cambiar en la parte inferior a la izquierda en las configuraciones verán para poder modificar el lenguaje en Español o desde el Archivo que les comente en el primer post de esta serie)
Ahora con la Instalación , básica, dentro del panel de administración vamos a
Edit >>Certificate Authorities
Después
en en la pagina podemos poner Cyttek Root CA como nuestro nombre de la Autoridad de certificación y luego en el Boton "Create", Deberemos hacer los siguientes cambios :
Signing Algorithm: SHA256WithRSA
RSA key size: 4096
Description: Root CA de Cyttek Group.
Validity (*y *mo *d) or end date of the certificate: 20y
Subject DN: CN=Cyttek Root CA,O=Cyttek Group.,C=RS
Use Issuing Distribution Point on CRLs: On
Default CRL Dist. Point: http://crl.cyttek.com/rootca.crl
CRL Expire Period (*y *mo *d *h *m): 1y
CRL Overlap Time (*y *mo *d *h *m): 2d
Una vez que la información este rellenada, podemos darle al botón "Crear". una vez terminado el proceso ya veras que La CA esta dentro de la Lista de CA's Disponibles
Una vez creada la CA root en este caso vamos a crear una Sub-CA por ejemplo o sí estamos en una instalación para alguna entidad o país deberemos delegar el Root para la entidad encargada de la administración y calcular cuantas Sub-CA's vamos a tener que implementar y quienes serán los destinatarios. en mi caso , solo voy a comentar una única instalación.
Uno de los parámetros que me gusta crear por seguridad es una Jerarquía de Sub-Ca que no sea Root, el cual ayuda para poder distinguir los permisos, y los perfiles.
En
Edit Certificate Profiles , Selecciona >>>
SUBCA (FIXED) de la lista
en la caja de texto puedes poner "
cyttek Sub-CA" , y luego lo vamos a usar como una plantilla para nuestro >>>
Use selected as template . Esto creara un perfil de SubCA del perfial de
SUBCA (FIXED) que anteriormente hemos seleccionado
Ahora en la nueva subCA que hemos creado seleccionamos y le damos click en el botón de >> Edit Certificate Profile .
Vamos a ajustar algunas opciones para nuestro caso:
Available bit lengths: 4096 bits
Validity: 15y
Allow validity override: Off
CRL Distribution Points: On
Use CA defined CRL Dist. Point: On
Available CAs: Cyttek Root CA
Una vez ajustado estos prametros, le damos en el boton Save o Guardar ;)
Ok ahora vamos a la parte que mola, la creacion de la entidad de certificación la que sirve los Certificados a las entidades finales.
En >>Edit Certificate Authorities y en la caja de texto podemos escribir "Cyttek-Bl4ckD4wn CA" (sin las comillas) y luego en el boton Create... .para crear la entidad de la cual deberemos ajustar algunos parametros según
los
necesitemos en nuestro caso serán
los siguientes:
Signing Algorithm: SHA256WithRSA
RSA key size: 4096
Description: Example's CA in charge of issuing certificates for individuals within the organisation.
Validity (*y *mo *d) or end date of the certificat: 15y
Subject DN: CN=Cyttek-Bl4ckD4wn CA,O=Cyttek Group,C=RS
Signed By: Cyttek Root CA
Certificate Profile: Cyttek Sub-CA
Use Issuing Distribution Point on CRLs: On
Default CRL Dist. Point: http://crl.cyttek.com/personca.crl
CRL Expire Period (*y *mo *d *h *m): 14d
CRL Overlap Time (*y *mo *d *h *m): 12h
Default OCSP Service Locator: http://ocsp.cyttek.com/ejbca/publicweb/status/ocsp
Después
de ajustar las opciones y crear la nueva CA, aparecerá en el apartado como nueva entidad de certificación disponible.
Ahora que ya tenemos quien se encargara de sacar los Certificados vamos a configurar la creación de perfiles para las entidades finales. osea los perfiles necesario de los certificados de las entidades finales
Vamos a >>> Edit Certificate Profiles , Seleccionamos >> ENDUSER (FIXED) .
Metemos en la caja de texto el nuevo nombre que le queramos dar Cyttek-Bl4ckD4wn Signing, y lo vamos a usar como base seleccionando en el boton "
Use selected as template" ahora que lo tenemos como una plantilla vamos a ajustar unos parámetros dentro del
"Cyttek-Bl4ckD4wn Signing " con los siguientes ajustes:
Available bit lengths: 1024, 2048, 4096
Validity (*y *mo *d) or end date of the certificate: 1y
Key Usage: Digital Signature, Non-repudiation
Extended Key Usage: Client Authentication, Email Protection
CRL Distribution Points: On
Use CA defined CRL Dist. Point: On
Authority Information Access: On
Use CA defined OCSP locator: On
Available CAs: Cyttek-Bl4ckDwn CA
Cuando la info este modificada, Guarda en el boton "Save" en el inferior de la pagina de configuración (Ojo con la opcion " Key encipherment " que este apagada, si no lo podrá tomar para otro uso que por el momento no nos interesa).
Ahora le vamos a meter mano al perfil de ENDUSER (FIXED) , vamos a darle el nombre de "
Cyttek-bl4ckD4wn Encriptacion" como el nuevo perfile que vamos a cargar también.. Seleciona "
Use selected as template" .
Luego le damos al perfil que le hemos dado nombre anteriormente y le damos a >>
Edit Certificate Profile . Para hacer los siguientes ajustes:
Available bit lengths: 1024, 2048, 4096
Validity (*y *mo *d) or end date of the certificate: 1y
Key Usage: Key encipherment, Data encipherment
Extended Key Usage: Email Protection
CRL Distribution Points: On
Use CA defined CRL Dist. Point: On
Authority Information Access: On
Use CA defined OCSP locator: On
Available CAs: Example Person CA
Para Terminar lo guardamos con el botón en la parte inferior.
Añadiremos a esta configuración un perfil mas para Servidores llamado SERVER (FIXED) el cual sera el perfil que vamos a usar como template, ok repetimos otra vez las configuraciones anteriores., Escribimos "Bl4ckD4wn Server" como el nombre del perfil que vamos a crear y lo seleccionamos como perfil con el botón "Use selected as template." luego repetimos el proceso anterior con la plantilla nueva creada, y le damos al boton "Certificate Profile" . para ejecutar algunos ajustes:
Available bit lengths: 1024, 2048, 4096
CRL Distribution Points: On
Use CA defined CRL Dist. Point: On
Authority Information Access: On
Use CA defined OCSP locator: On
Available CAs: Cyttek-Bl4ckDwn CA
Para Terminar lo guardamos con el botón en la parte inferior. y con eso tenemos concluido la configuración de los perfiles de certificados para poder emitirlos ...
Ok, ahora estamos en fase Rambo II, creando perfiles de entidades final
Bueno los perfiles de los certificados definen para que van a ser usados los certificados, pero los perfiles de entidades finales define el contenido del certificado , esta es una parte importante para mantener la información que se requiere para emitir el certificado, para su uso ya pueda ser SSL, VPN, Email , DNIe, etc...
Ahora vamos a crear 2 perfiles uno para la organización y otro para los servidores
Vamos al Administration >> Edit End Entity Profiles . luego dentro del campo de texto escribimos el nombre de la persona Person y la agregamos con el botón "Add". Seleccionamos el nuevo perfil creado y le damos en " Edit End Entity Profile " para poder agregar los atributos siguientes "Subject DN Attributes":
-
UID, Identificador Único
-
O, Organización
-
C, País que en ingles es Country
Con estos 3 Atributos agregas y modificables , tenemos que agregar un campo alternativo para Nombre RFC 822 Name (e-mail address).
Entonces los ajustes del perfil persona seran los siguientes para nuestro caso:
E-mail Domain: cyttek.com
O, Organization: Cyttek Group.
C, Country (ISO 3166): CO
RFC 822 Name (e-mail address) Required: On
Default Certificate Profile: Cyttek-Bl4ckD4wn Signing
Available Certificate Profiles: Cyttek-Bl4ckD4wn Signing, Cyttek-Bl4ckD4wn Encryption
Default CA: Cyttek-Bl4ckD4wn CA
Available CAs: Cyttek-Bl4ckD4wn CA
Default Token: P12 file
Number of allowed requests: 2
Number of allowed requests use: On
Key Recoverable Use: On
Ok, para terminal el perfil lo guardamos como las anteriores.con el botón "Save".
Ok ahora vamos a configurar el segundo perfil de servidor. ( básicamente voy a repetir el proceso anterior para los que no lo pillen a la primera.)
Vamos atrás al panel de Administration >> Edit End Entity Profiles luego en el campo de texto agregamos el nombre " Server " y le damos al boton " Add ".
Seleccionamos el nuevo perfil creado y le damos en "
Edit End Entity Profile " para poder agregar los atributos siguientes "
Subject DN Attributes":
-
O, Organización
-
C, Pais que en ingles es Country
Tenemos que agregar un campo alternativo para Nombre
RFC 822 Name (e-mail address).
Ajustamos los campos del perfil servidor con:
Batch generation (clear text pwd storage) use: On
E-mail Domain: Cyttek.com
O, Organization: Cyttek Group.
C, Country (ISO 3166): RS
RFC 822 Name (e-mail address) Required: On
Default Certificate Profile: Bl4ckd4wn Server
Available Certificate Profiles: Bl4ckD4wnServer
Default CA: Cyttek-Bl4ckd4wn CA
Available CAs: Cyttek-Bl4ckd4w CA
Default Token: PEM file
para terminal el perfil lo guardamos como las anteriores.con el botón "Save".
Ok ahora vamos a remplazar los valores para poder poner en producción nuestro PKI calvin klein
Vamos a remplazar los certificados del frontend por los certificados que tenemos que emitir desde nuestra CA configurada anteriormente con sus perfiles para poder autentificar al administrador.
Vamos a preparar el Certificado para el administrador de la interfaz administrativa y poder remplazarlo para la fase de producción:
Vamos a >>
Administration >> Add End Entity . Selecionamos el perfil de la entidad final de
Person y le metemos mano a estas configuraciones:
Username: {{admin_username}}
Password: {{admin_password}}
Confirm Password: {{admin_password}}
Email: {{admin_mail}} @ cyttek.com
CN, Common name: {{admin_name}} {{admin_surname}}
UID, Unique Identifier: {{user_id}}
O, Organization: Cyttek Group.
C, Country (ISO 3166): RS
Use data from E-mail address field: On
Certificate Profile: Example Person Signing
CA: Cyttek-Bl4ckD4wn CA
Token: P12 file
Number of allowed requests: 2
Key Recoverable: Off
Ojo, ajustar los parámetros con los valores que queráis.
Y terminamos este proceso con el botón "Add End Entity"
Ahora vamos a obtener los certificados que hemos configurado mediante la interfaz publica que se encontraba al principio . >> Public Web Seleccionamos la opcion del menu
>> Create Browser Certificate y dentro de las cajas de texto ponemos las credenciales que hemos escrito anteriormente para la entidad de administración final del Administrador.( Ten en cuenta que el perfil que tenemos que seleccionar para esta descarga debe de ser
Cyttek-Bl4ckd4wn Signing ), y luego lle damos al "OK".
Ok ya tenemos el "Famoso" .p12 para poder importarlo en nuestro Firefox o browser de preferencia para poder a la próxima vez acceder a la consola de administración , el tema es que sera tan seguro como el password que hayamos configurado para la entidad final . Obviamente el atacante debe de contar con el archivo .p12 y el user y password de accesos para poder logearse a la interfaz de administración.
Por el momento no le hemos metido mano a la terminal para ajustar y configurar no se desesperen, no todo se hace con clicks }:)
Ahora vamos a la page del >> Administration >> Edit Administrator Privileges .
Seleccionamos en el link de " Add " y podemos un super adminsitrador el cual el nombre puede ser >> "Super Administrator". Ahora debemos hacer una configuración mas en el panel del Administrador en el link cercano al grupo de Super Administrators y le metemos mano a esta información el cual sera necesari:
CA: Cyttek-Bl4ckD4wn CA
Match with: Certificate serial number (recommended)
Match type: Equals, case sens.
Match value: {{SERIAL_PARA_EL_CERTIFICADO}}
El campo {{SERIAL_PARA_EL_CERTIFICADO}}debe ser remplazado por el numero de serial del certificado que hemos emitido. Y para terminar con esta configuración le damos click al botón "
Add" y luego >>>
Edit Access Rules en la misma pagina , con el Rol de
Super Administrator, para terminar guardando la información que acabamos de configurar.
Ahora dentro del perfil de Servidor en la configuración de >> Administration >> Add End Entity , vamos a ajustar unos parámetros básicamente para ajustar la entrada:
Username: ca.cyttek.com_ejbca
Password: {{CONTRASEÑA_Keystore_CA}}
Confirm Password: {{CONTRASEÑA_Keystore_CA}}
Batch generation (clear text pwd storage): On
E-mail address: ejbca @ cyttek.com
CN, Common name: Cyttek CA Server
O, Organization: Cyttek Group.
C, Country (ISO 3166): RS
DNS Name: ca.cyttek.com
Use data from E-mail address field: On
Certificate Profile: Example Server
CA: Cyttek.Bl4ckD4wn CA
Token: JKS file
Ojo el password debe ser el mismo que el que especificamos en el archivo web.properties de la primera serie ( Infraestructura de clave publica I ) en el archivo >> ejbca_https_keystore_password . Una vez terminado estos ajustes repetimos con el botón
Add.
Luego despues de volvernos a logear , añadimos al final del archivo siguiente la linea especificada
# /opt/ejbca/bin/batchtool.properties
----BEGIN----
keys.spec=4096
-----END-----
Y generamos el keystore con el siguiente comando:
$ su ejbca
$ cd /opt/ejbca/
$ bin/ejbca.sh batch
Ahora después de generar el Keystore, también sera necesario crear un nuevo truststore, el cual servirá para identificar que certificados se deben de creer en la cadena de confianza para poder acceder a la interfaz de administración del nuestra infraestructura Calvin Klein.
----BEGIN----$
cd /opt/ejbca/
bin/ejbca.sh ca getrootcert 'Cyttek Root CA' rootca.der -der
bin/ejbca.sh ca getrootcert 'Cyttek-Bl4ckD4wn CA' personca.pem
openssl x509 -in personca.pem -out personca.der -outform DER
keytool -importcert -alias cyttekrootca -file rootca.der -keystore p12/truststore_new.jks
keytool -importcert -alias cyttekbl4ckd4wnca -file personca.der -keystore p12/truststore_new.jks
-----END-----$
Ojo, la contraseña que le metimos al nuevo truststore debe ser la misma que le metimos en el archivo web.properties dentro de la configuración de ejbca_truststore_password
Antes de seguir con el nuevo Keystore y truststore vamos a bajar el servicio:
$ su root
$ service ejbca stop
Y para hacer el deploy con el servicio abajo debemos hacer ;
$ su ejbca
$ cd /opt/ejbca/p12/
$ cp ca.cyttek.com_ejbca.jks /opt/jboss/server/ejbca/conf/keystore/keystore.jks
$ cp truststore_new.jks /opt/jboss/server/ejbca/conf/keystore/truststore.jks
y luego levantando el servicio
$ su root
$ service ejbca start
Ok ahora ya tenemos nuestros ajustes por seguridad para poder acceder a la pantalla de adminstracion de nuestro PKI necesitaremos la nueva llave y certificado , Ojo, con el cache del browser y el antiguo certificado que no les dejaran entrar a la pantalla de administración.
para comodidad aremos que esta llave y certificado sea por defecto en futuras llamadas o extensiones de EJBCA:
% su ejbca
$ cd /opt/ejbca/p12/
$ mv ca.example.com_ejbca.jks tomcat.jks
$ mv truststore_new.jks truststore.jks
Para ir terminado esto , por que supongo que estaréis mas cansados que Rambo en bilmania. ahora para ir finalizando vamos a terminar con nuestras configuraciones de seguridad,Vamos a >> Administration >>; Edit Administrator Privileges y en esa pagina le damos a >>
delete en el grupo>>
Temporary Super Administrator Group. y cuando tengamos eso vamos a la pagina de Administración >>
CA Activation,>>>
Make off-line en la caja seleccionamos Off para la caja de monitoreo cercana a
ExampleTempAdminCA. y le damos a aplicar >>
Apply .
ademas de Revocar el certificado anterior, para la configuración inicial como lo hacemos??
Ahí
vamos en la configuración de panel >> Administration >> Search/Edit End Entities .Vamos a buscar las entidades con un estatus generado, en el checkbox cercano a superadmin y Tomcat las entidades , le damos click a Revoke and Delete(revocar y eliminar )
**Esta ultima configuración la vamos a hacer para entornos de producción mas exigentes
Todavía
no tenemos el servicio 100% habilitado, ahora vamos a configurar el cola de procesos para publicar, en caso de que el certificado y las CRL's fallen por lo menos cuando consigamos resolver esos errores siga el proceso de emisión..
Vamos a >> Administration >>>; Edit Services . En >>Publis Queue Process Service y lo agregamos con el botón de >> "Add" y con el servicio creado lo vamos a editar con la siguiente información :
Select Worker: Publish Queue Process Service
Select Interval: Periodical Interval
Period: 1 minutes
Select Action: No Action
Active: On
Pin to Specific Node(s): ca.cyttek.com
Description: Publish certificates and CRL's from the publisher queue.
Y para terminar como todo le damos al botón Guardar
Charlyyyy no siento los botones del Ratón.. no te preocupes que vamos a automatizar un poco esto..
Configurando el Actualizador de la CRL se encargara de cuando la CRL se expire pueda ser regenerada periódicamente Todavía no me voy a meter en la publicación de la CRL por que debemos de configurar la correctamente, Entonces en la pagina de >> Administration >>> Edit Services >>. CRL Updater y en le damos al botón >> Add . luego con este servicio creado lo vamos a configurar con unos ajustes:
Select Worker: CRL Updater
CAs to Check: Cyttek Root CA, Cyttek-Bl4ckD4wn CA, cyttek Server CA
Select Interval: Periodical Interval
Period: 5 minutes
Select Action: No Action
Active: On
Pin to Specific Node(s): ca.cyttek.com
Description: Updates the CRL's if necessary. Checks are made every 5 minutes.
Luego después de guardar esta ultima configuración terminamos con nuestro ajuste y configuración de EJBCA nuestra PKI calvin klein por este capitulo
Saludos
Bl4ckD4wn