Diferencia entre revisiones de «SIU-Arai/certificados»
(Página creada con «derecha|link=SIU-Arai = Certificados = Se va a explicar como generar los certificados de cliente y servidor para lograr una instalación corre...») |
|||
Línea 34: | Línea 34: | ||
Esta herramienta se incluye como ayuda para desarrollo y testeo. No hay garantías sobre uso en producción de estos certificados. | Esta herramienta se incluye como ayuda para desarrollo y testeo. No hay garantías sobre uso en producción de estos certificados. | ||
</div> | </div> | ||
− | + | == Configurando Apache con SSL == | |
− | = Configurando Apache con SSL = | ||
No hay muchas razones para no utilizar TLS/SSL hoy en día. | No hay muchas razones para no utilizar TLS/SSL hoy en día. | ||
Línea 43: | Línea 42: | ||
* [https://httpd.apache.org/docs/2.4/mod/mod_ssl.html Apache mod_ssl] | * [https://httpd.apache.org/docs/2.4/mod/mod_ssl.html Apache mod_ssl] | ||
− | == Activando el módulo SSL en Apache == | + | === Activando el módulo SSL en Apache === |
En Debian 8.0 la forma de activar el módulo de SSL es la siguiente | En Debian 8.0 la forma de activar el módulo de SSL es la siguiente | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Línea 49: | Línea 48: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | = | + | === Sirviendo archivos con SSL === |
− | |||
− | == Sirviendo archivos con SSL == | ||
Copiar todos los certificados necesarios al directorio '''/etc/apache2/ssl'''. En este caso utilizaremos los creados para un entorno de pruebas.<br /> | Copiar todos los certificados necesarios al directorio '''/etc/apache2/ssl'''. En este caso utilizaremos los creados para un entorno de pruebas.<br /> | ||
Los archivos que tenemos en este directorio son: | Los archivos que tenemos en este directorio son: | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
− | |||
− | |||
-r--r--r-- 1 root root 1931 nov 14 14:26 usuarios.local.cert.pem | -r--r--r-- 1 root root 1931 nov 14 14:26 usuarios.local.cert.pem | ||
-r--r--r-- 1 root root 1704 nov 14 14:27 usuarios.local.key.pem | -r--r--r-- 1 root root 1704 nov 14 14:27 usuarios.local.key.pem | ||
Línea 75: | Línea 70: | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
ServerName usuarios.local:443 | ServerName usuarios.local:443 | ||
+ | SSLEngine on | ||
... | ... | ||
</source> | </source> | ||
Línea 84: | Línea 80: | ||
SSLCertificateKeyFile /etc/apache2/ssl/usuarios.local.key.pem | SSLCertificateKeyFile /etc/apache2/ssl/usuarios.local.key.pem | ||
... | ... | ||
− | |||
− | |||
</source> | </source> | ||
Línea 103: | Línea 97: | ||
* Listo! el sitio ya es accesible por HTTPS. Actualmente verá el warning de seguridad del browser. <br />Si quiere evitar esto agregue el archivo '''/etc/apache2/ssl/ca.cert.pem''' a su navegador. En Google Chrome es Configuración -> Administrar Certificados | * Listo! el sitio ya es accesible por HTTPS. Actualmente verá el warning de seguridad del browser. <br />Si quiere evitar esto agregue el archivo '''/etc/apache2/ssl/ca.cert.pem''' a su navegador. En Google Chrome es Configuración -> Administrar Certificados | ||
+ | |||
== Verificando clientes con SSL == | == Verificando clientes con SSL == | ||
La verificación de cliente de Apache se utiliza como parte fundamental de la autenticación de pedidos Rest entre módulos. | La verificación de cliente de Apache se utiliza como parte fundamental de la autenticación de pedidos Rest entre módulos. |
Revisión del 15:06 26 jul 2017
Certificados
Se va a explicar como generar los certificados de cliente y servidor para lograr una instalación correcta.
A través de esta página se asume que se quieren generar los certificados con la imágen de Docker provista por el SIU. RECUERDE QUE LOS CERTIFICADOS PARA SERVERS NO VAN A SER VALIDOS (candadito rojo).
Generar certificados con imágen de Docker
Se creó una imagen de Docker para crear de manera razonable certificados para varios servers firmados por la misma CA.
Para utilizarlo hay que hacer lo siguiente:
- Tener instaladas las últimas versiones de Docker y Docker Compose
- Clonar este proyecto
Configurando el docker para generar certificados
Dirijirse a la carpeta certs. Dentro de este directorio hay un archivo llamado docker-compose.yml. Dentro de este archivo hay que modificar, mínimamente, dos variables: LISTA_SERVER y LISTA_CLIENTES.
- LISTA_SERVER: Lista de dominios, separada por espacios, para los que se crearan certificados.
Aquí van los nombres de dominios desde los que Apache va a servir sus archivos. - LISTA_CLIENTES: Lista de nombres, separada por espacios, a los que se les crearan certificados para actuar como clientes.
La plataforma SIU-Araí usa como mecanismo de autenticación de APIs Rest client certificate authentication. Básicamente los servidores de las APIs guardan la clave pública de sus clientes y se apoya sobre la directiva de Apache SSLVerifyClient.
El nombre (CN) que se ponga acá será el nombre de usuario de los consumidores de las APIs.
Una vez configurado el archivo ejecutar
docker-compose up
Esto creará una estructura de directorios dentro del directorio docker-data en la raíz del proyecto. Para extraer todas las claves a un sólo directorio plano ejecutar el siguiente comando
sudo find docker-data -name "*.pem" -exec cp {} <path con todos los certs> \;
Luego de seguir estos pasos ya tendremos un directorio (<path con todos los certs>) con todos los certificados que necesitaremos.
Esta herramienta se incluye como ayuda para desarrollo y testeo. No hay garantías sobre uso en producción de estos certificados.
Configurando Apache con SSL
No hay muchas razones para no utilizar TLS/SSL hoy en día.
En este artículo se dejan recursos y algunos tips de configuración para que todo funcione. De ninguna manera es LA guía de implementación. Simplemente intenta ser un lugar para aquellos que no están familiarizados con el tema.
Activando el módulo SSL en Apache
En Debian 8.0 la forma de activar el módulo de SSL es la siguiente
a2enmod ssl
Sirviendo archivos con SSL
Copiar todos los certificados necesarios al directorio /etc/apache2/ssl. En este caso utilizaremos los creados para un entorno de pruebas.
Los archivos que tenemos en este directorio son:
-r--r--r-- 1 root root 1704 nov 14 14:27 usuarios.local.key.pem
Vamos a configurar el host llamado usuarios.local
Activar el template SSL de Apache2
a2ensite default-ssl
Luego hay que editar el el archivo /etc/apache2/sites-enabled/default-ssl.conf
- Agregar la entrada ServerName debajo de ServerAdmin. Por ejemplo:
...
ServerAdmin webmaster@localhost
ServerName usuarios.local:443
SSLEngine on
...
- Modificar las siguientes entradas para configurar los certificados
...
SSLCertificateFile /etc/apache2/ssl/usuarios.local.cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/usuarios.local.key.pem
...
- Redigir puerto 80 a 443. Hay que modificar el archivo /etc/apache2/sites-enabled/000-default.conf y agregar las siguientes líneas:
...
ServerName usuarios.local
Redirect permanent / https://usuarios.local/
- Reiniciar apache
- Listo! el sitio ya es accesible por HTTPS. Actualmente verá el warning de seguridad del browser.
Si quiere evitar esto agregue el archivo /etc/apache2/ssl/ca.cert.pem a su navegador. En Google Chrome es Configuración -> Administrar Certificados
Verificando clientes con SSL
La verificación de cliente de Apache se utiliza como parte fundamental de la autenticación de pedidos Rest entre módulos.
Siga los siguientes pasos para configurarla.
- Agregar la CA como trusted en los dos servidores. Para hacerlo ejecutar
nano /etc/ca-certificates.conf
# agregar ca_propia.crt al final del archivo
update-ca-certificates --fresh
- En el archivo /etc/apache2/sites-enabled/default-ssl.conf
Agregar las siguientes entradas. Por ejemplo:
...
SSLVerifyClient optional_no_ca
SSLVerifyDepth 2
SSLProtocol all -SSLv2 -SSLv3
SSLOptions +StdEnvVars +ExportCertData
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
...
- Listo! El servidor ya está listo para validar certificados de cliente
Configurando Apache con SSL
No hay muchas razones para no utilizar TLS/SSL hoy en día.
En este artículo se dejan recursos y algunos tips de configuración para que todo funcione. De ninguna manera es LA guía de implementación. Simplemente intenta ser un lugar para aquellos que no están familiarizados con el tema.
Activando el módulo SSL en Apache
En Debian 8.0 la forma de activar el módulo de SSL es la siguiente
a2enmod ssl
Generando certificados válidos de prueba
Se creó una imagen de Docker para crear de manera razonable certificados para varios servers firmados por la misma CA.
Para utilizarlo hay que hacer lo siguiente:
- Tener instaladas las últimas versiones de Docker y Docker Compose
- Clonar este proyecto
Configurando el docker para generar certificados
Sirviendo archivos con SSL
Copiar todos los certificados necesarios al directorio /etc/apache2/ssl. En este caso utilizaremos los creados para un entorno de pruebas.
Los archivos que tenemos en este directorio son:
-r--r--r-- 1 root root 3980 nov 14 14:28 ca-chain.cert.pem
-r--r--r-- 1 root root 1931 nov 14 14:26 usuarios.local.cert.pem
-r--r--r-- 1 root root 1704 nov 14 14:27 usuarios.local.key.pem
Vamos a configurar el host llamado usuarios.local
Activar el template SSL de Apache2
a2ensite default-ssl
Luego hay que editar el el archivo /etc/apache2/sites-enabled/default-ssl.conf
- Agregar la entrada ServerName debajo de ServerAdmin. Por ejemplo:
...
ServerAdmin webmaster@localhost
ServerName usuarios.local:443
...
- Modificar las siguientes entradas para configurar los certificados
...
SSLCertificateFile /etc/apache2/ssl/usuarios.local.cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/usuarios.local.key.pem
...
# aca ponemos en CA la chain que la contiene
SSLCACertificateFile /etc/apache2/ssl/ca-chain.cert.pem
- Redigir puerto 80 a 443. Hay que modificar el archivo /etc/apache2/sites-enabled/000-default.conf y agregar las siguientes líneas:
...
ServerName usuarios.local
Redirect permanent / https://usuarios.local/
- Reiniciar apache
- Listo! el sitio ya es accesible por HTTPS. Actualmente verá el warning de seguridad del browser.
Si quiere evitar esto agregue el archivo /etc/apache2/ssl/ca.cert.pem a su navegador. En Google Chrome es Configuración -> Administrar Certificados
Verificando clientes con SSL
La verificación de cliente de Apache se utiliza como parte fundamental de la autenticación de pedidos Rest entre módulos.
Siga los siguientes pasos para configurarla.
- Agregar la CA como trusted en los dos servidores. Para hacerlo ejecutar
nano /etc/ca-certificates.conf
# agregar ca_propia.crt al final del archivo
update-ca-certificates --fresh
- En el archivo /etc/apache2/sites-enabled/default-ssl.conf
Agregar las siguientes entradas. Por ejemplo:
...
SSLVerifyClient optional_no_ca
SSLVerifyDepth 2
SSLProtocol all -SSLv2 -SSLv3
SSLOptions +StdEnvVars +ExportCertData
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
...
- Listo! El servidor ya está listo para validar certificados de cliente