Buscar este blog

domingo, 4 de agosto de 2013

Configuración del SSL de apache

Para poder acceder con certificado digital, el servidor será el encargado de pedir el certificado del cliente (two ways SSL), validarlo y enviárselo a weblogic a través del plugin activado (se encapsula como un parámetro más de la request).
Para realizar estas tareas se necesita lo siguiente:
  • Un certificado de servidor:
    • Clave privada.
    • Clave pública.
  • Una lista de autoridades de certificación en el servidor.
  • Añadir la configuración necesaria

Certificado de servidor

Se necesita un certificado para identificar al servidor, separando por un lado su clave de firma y por otro la parte pública del certificado. Para generalo se pueden seguir los siguientes pasos, empleando KeyStoreExplorer (También se pude hacer con OpenSSL):
  • Crear nuevo keystore
  • Generar nuevo par de claves
    • Rellenar la información de identificación
  • Exportar la clave privada (Server.key)
  • Exportar el certificado en formato PEM (Server.pem)

Lista de autoridades de certificación en el servidor

En el punto anterior configuramos la identidad del servidor. Ahora se añade la lista de CAs que usará para validar los certificados de los clientes. Cuando tenga que autenticar a un cliente, leerá el certificado del navegador y comprobará si está firmado por una de las CAs en las que confía, para aceptarlo o rechazarlo.
La lista de CAs que siempre deberá tener son:
  • Certificado raíz de la FNMT
  • Certificado raíz de la policía.
    • Se descargan tanto el raíz como las tres subordinadas.
    • Otras CAs de las que se disponga
    • CA propia para confiar en nuestros propios certificados

 - CAs oficiales

Una vez se descargan los certificados, para obtener su formato PEM se puede usar el keyStoreExplorer, añadiéndolos a un keystore y luego exportándolos como se hizo con el certificado de servidor, o directamente usando el editor de certificados de windows.
Al final obtenemos los archivos en formato .cer, que se pueden abrir directamente con un editor de texto y comprobar que es el formato PEM codificado en base 64.

- Otras CAs de las que se disponga

También se pueden añadir otras CAS que hayan firmado certificados de pruebas de los que ya se dispongan.
En este caso, basta con abrir el certificado en formato p12 pfx con el KeyStoreExplorer y seleccionar la CA (es el primer certificado de la jerarquía). Luego se copia su representación PEM, que será la propia CA que nos interesa.

- CA propia para firmar certificados

Para crear una CA se usará el programa OPENSSL para windows.
Los primero que hay que hacer es crear las claves de la entidad certificadora, que será la que genere el resto de certificados. Se ejecuta la siguiente instrucción:
openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -days 3650 -out cacert.pem

Lo que significa que estamos creando una nueva entidad que generará certificados X509 con algoritmo de encriptación rsa de 2048 bytes. Generará la clave privada de la entidad en el fichero cakey.pem y la clave publica en el cacert.pem.
El parámetro -days con 3650 indica que la entidad certificadora no expirará en 10 años.
Nos pedirá una contraseña para nuestra entidad certificadora, que es muy importante no perder. Nos pedirá también una serie de datos (País, Nombre de Empresa…), que nos identifica como entidad certificadora.

Poniéndolo todo en conjunto

En este punto ya tenemos:
  • Clave de servidor: Server.key
  • Certificado de servidor: Server.pem
  • Ficheros sueltos de CAs de policía y FNMT
  • Ficheros sueltos de otras CAs de certificados.
  • Fichero de nuestra propia CA: cacert.pem
Las CAs deben estar en un único fichero, así que se crea uno nuevo (cas.pem) y se concatena en éste el contenido de todos los anteriores, copiando y pegando. Al final quedará algo del estilo:
-----BEGIN CERTIFICATE-----
MIIC+TCCAmKgAwIBAgIENvEbGTANBgkqhkiG9w0BAQUFADA2MQswCQYDVQQGEwJF
...
LwVMZGACokIeb4ZoZVUO2ENv8pExPqNHPCgFr0W2nSJMJntLfVsV+RlG3whd
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFvzCCA6egAwIBAgIQAMUmyW4QlO1DT/e1+2eflDANBgkqhkiG9w0BAQsFADBd
....
Rua2628QZv5yKZL45hMDN4MviTN3QnzB5XillEH4avjfG9Q=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
....

Estos tres ficheros se meten en el directorio \ssl.crt dentro del directorio de configuración de Apache.
En el directorio de configuración de Apache, se crea un fichero ssl.conf que, haciendo uso de estos tres fichero, configurará el SSL del servidor. También se indican una serie de parámetros sobre los protocolos aceptados y demás opciones.

#=================================================
# SSL/TLS para los vhosts
# =================================================
SSLEngine On
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:!EXP:!eNULL:!aNULL:!LOW
SSLCertificateFile conf/ssl.crt/server.pem
SSLCertificateKeyFile conf/ssl.crt/server.key
SSLCACertificateFile conf/ssl.crt/cas.pem
SSLInsecureRenegotiation on
SSLOptions +StdEnvVars +ExportCertData
LogLevel debug

No hay comentarios:

Publicar un comentario