SSL EN SERV WEB (APACHE, IIS) - v3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 37

certificados SSL

en Servidores
web
APACHE (HTTPD Y TOMCAT), NGINX E IIS

Cristian Andres Rodriguez Montes


|
Tabla de contenido
Instalación de servidores de aplicaciones web ........................................................................................... 2
Habilitar SSL (Openssl) solo en Linux ........................................................................................................... 2
Apache (HTTPD) en REL / CentOS / OracleLinux ...................................................................................... 2
Habilitar módulos para el manejo de certificados ............................................................................... 2
Apache (HTTPD) en Ubuntu ........................................................................................................................ 3
Habilitar módulos para el manejo de certificados ............................................................................... 4
NginX en CentOS ......................................................................................................................................... 6
NginX en Ubuntu .......................................................................................................................................... 8
Instalar Internet Information Services (IIS) en Windows 10........................................................................ 9
Habilitar módulos para el manejo de certificados ............................................................................. 10
Instalar Internet Information Services (IIS) en Windows Server ............................................................... 11
Generar un Certificate Signing Request (CSR) .......................................................................................... 13
Generar CSR para Apache Httpd o NginX ............................................................................................. 13
Generar CSR para Apache (Tomcat) ..................................................................................................... 13
Generar CSR en IIS ..................................................................................................................................... 14
Generación de certificados Autofirmados................................................................................................. 18
Generando certificados autofirmados en Linux para Apache Httpd y NginX .................................... 18
Generar request (csr) usando “keytool” para Apache Tomcat con cacert (.jks) ............................. 18
Generando certificados autofirmados en Windows IIS ......................................................................... 19
Importar certificado (.cer)............................................................................................................................ 21
Importar certificado (.cer) en Apache httpd ......................................................................................... 21
Importar certificado (.cer) en NginX........................................................................................................ 21
Importar certificado (.cer) en Apache Tomcat ..................................................................................... 23
Importar certificado (.cer) en IIS .............................................................................................................. 24
Validación del funcionamiento del certificado ......................................................................................... 26
Utilidad certificados en Windows ................................................................................................................ 27
Referencias .................................................................................................................................................... 28
Certificados con llave privada en IIS – proceso para Cluster de alta disponibilidad ......................... 29
Justificación ............................................................................................................................................ 29
Activar certificados en Microsoft Management Console (mmc) ..................................................... 29
Exportar certificado con llave privada ................................................................................................ 31
Importar certificado con llave privada en IIS ...................................................................................... 33
Instalación de servidores de aplicaciones web

Habilitar SSL (Openssl) solo en Linux


Instalar utilidad para genera certificados OpenSSL

sudo apt install openssl [On Debian/Ubuntu]


sudo yum install openssl openssl-devel ca-certificates -y [On CentOS/RHEL]

Apache (HTTPD) en REL / CentOS / OracleLinux


Instalar apache

sudo yum install httpd -y

habilitar el servicio, no es necesario algunas veces

sudo systemctl enable httpd.service


systemctl start httpd.service

Habilitar módulos para el manejo de certificados


Debemos de habilitar el módulo SSL de Apache.

sudo yum install mod_ssl -y

Ahora reiniciamos el servicio de Apache

systemctl restart httpd

ruta certificados
/etc/pki/tls/certs
/etc/pki/tls/private/

Archivo de configuración de ssl en apache

/etc/httpd/conf.d/ssl.conf

Apache (HTTPD) en Ubuntu


Instalar apache

Sudo apt install apache2


Habilitar módulos para el manejo de certificados
Debemos de habilitar el módulo SSL de Apache.

sudo a2enmod ssl

Ahora habilitaremos la configuración SSL por defecto.

sudo a2ensite default-ssl.conf

Ahora reiniciamos el servicio de Apache

sudo systemctl reload apache2

ruta certificados

/etc/ssl/cert
/etc/ssl/private
Archivo de configuración de ssl en apache

/etc/apache2/sites-available/default-ssl.conf

Apache (Tomcat) en Ubuntu


Instalar la versión de Java por default o la que necesite su aplicación.

sudo apt install default-jdk


crear grupo y usuario

sudo groupadd tomcat


sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

descargar archivo e instalarlo

cd /tmp
curl -O https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-
9.0.17.tar.gz
sudo mkdir /opt/tomcat
cd /opt/tomcat
sudo tar xzvf /tmp/apache-tomcat-9.0.*tar.gz -C /opt/tomcat --strip-components=1
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R g+r conf
sudo chmod g+x conf
sudo chown –R tomcat webapps/ work temp/ logs

crear archivo de servicio en systemd

sudo nano /etc/systemd/system/tomcat.service

Adicionar el siguiente texto

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_Home=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=’CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC’
Environment=’JAVA_OPTS.awt.headless=true -Djava.security.egd=file:/dev/v/urandom’
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]

WantedBy=multi-user.target

Ejecutar los siguientes comandos para recargar los servicios y subir tomcat

sudo systemctl daemon-reload


Ejecutar los siguientes comandos para y subir tomcat
sudo systemctl start tomcat
sudo systemctl enable tomcat
sudo systemctl status tomcat

NginX en CentOS

Instalar repositorio de archivos que permiten la instalación de NginX.

Sudo yum install epel-release -y


Instalar web server
sudo yum install nginx
Habilitar el servicio
sudo systemctl enable nginx
sudo systemctl start nginx

Subir y bajar el servicio Validar el estado


sudo systemctl start nginx
sudo systemctl stop nginx

Validar el estado
sudo systemctl status nginx

Rutas archivos de configuración

Directorio de configuración – /etc/nginx/


Archivo de configuración Master/Global– /etc/nginx/nginx.conf
Archive de configuración de puerto 80 http – /etc/nginx/conf.d/default
Puertos abiertos por el Nginx – 80 (HTTP), 443 (HTTPS)
Directorio raiz principal – /usr/share/nginx/html

Nota: Tener en cuenta que la ruta que generalmente toma como directorio raíz de pagina es la
misma de apache ´/var/www/html´ si se tiene instalado Apache Httpd mostrara mensaje de este.

NginX en Ubuntu

Instalar repositorio de archivos que permiten la instalación de NginX.

sudo apt install nginx


Nota tener en cuenta que la ruta que generalmente toma como directorio raíz de página es la
misma de apache ´/var/www/html´

Habilitar el servicio
sudo systemctl enable nginx
sudo systemctl start nginx

Subir y bajar el servicio Validar el estado


sudo systemctl start nginx
sudo systemctl stop nginx

Validar el estado
sudo systemctl status nginx

Rutas archivos de configuración

Directorio de configuración – /etc/nginx/


Archivo de configuración Master/Global– /etc/nginx/nginx.conf
Archive de configuración de puerto 80 http – /etc/nginx/conf.d/default
Puertos abiertos por el Nginx – 80 (HTTP), 443 (HTTPS)
Directorio raiz principal – /usr/share/nginx/html

Nota: Tener en cuenta que la ruta que generalmente toma como directorio raíz de pagina es la
misma de apache ´/var/www/html´ si se tiene instalado Apache Httpd mostrara mensaje de este.

Instalar Internet Information Services (IIS) en Windows 10


Ir al panel de control y seleccionar “activar o desactivar características de Windows”
Habilitar módulos para el manejo de certificados
En la opción de seguridad de IIS encontramos una característica de compatibilidad con
certificados SSL.
Instalar Internet Information Services (IIS) en Windows Server

Desde la consola de administración del servidor, seleccionar ‘Manage’ y luego ‘Add Roles and
Features’

Seleccionar web server y luego ‘Add Features’


Adicionar soporte para certificados SSL
Generar un Certificate Signing Request (CSR)

Generar CSR para Apache Httpd o NginX


En Linux se usa el comando OpenSSL, pero si se desea una mayor comodidad y evitar problemas en
la digitación del comando se recomienda utilizar la página https://www.digicert.com/easy-
csr/openssl.htm donde se llenan los campos y se genera la instrucción.

Ingresar al servidor Linux donde se están generando los certificados o desde el servidor donde se va
a usar,

Tener en cuenta los que esta resaltado y cambiarlo según necesidad

openssl req -new -newkey rsa:4096 -nodes -out www_micarrito_com_co.csr -keyout


www_micarrito_com_co.key -subj "/C=CO/ST=Cundinamarca/L=Chía/O=Mercadeo SAS/OU=Seguridad de
la Informacion/CN=www.micarrito.com.co"
Ejemplo de resultado generado

Generar CSR para Apache (Tomcat)


Para Tomcat utilizamos el comanado “keytool” que viene con Java, si se desea una mayor
comodidad y evitar problemas en la digitación del comando se recomienda utilizar la página
https://www.digicert.com/easy-csr/keytool.htm donde se llenan los campos y se genera la
instrucción.
Ingresar al servidor Linux donde se están generando los certificados o desde el servidor donde se va
a usar,

Tener en cuenta los que esta resaltado y cambiarlo según necesidad

keytool -genkey -alias server -keyalg RSA -keysize 4096 -keystore www_micarrito_com_co.jks -dname
"CN=www.micarrito.com.co,OU=Seguridad de la Informacion, O=Mercadeo SAS, L=Chía, ST=Cundinamarca,
C=CO" && keytool -certreq -alias server -file www_micarrito_com_co.csr -keystore www_micarrito_com_co.jks
&& echo Your certificate signing request is in www_micarrito_com_co.csr. Your keystore file is
www_micarrito_com_co.jks. Thanks for using the DigiCert keytool CSR helper.
Ejemplo de resultado generado

Generar CSR en IIS

Ingresar al administrador del Internet Information Services (IIS) y seleccionar “server certificates”
Seleccionar “Create Certificte Request”

Diligenciar los campos que se solicitan


Seleccionar el nombre y la ruta donde quiere almacenar el certificado
Generación de certificados Autofirmados

Generando certificados autofirmados en Linux para Apache Httpd y NginX


certificado autogenerado para apache

openssl req -sha256 -x509 -nodes -days 2555 -newkey rsa:4096 -keyout certificateAutoF.key -out
certificateAF.cer -subj "/C=CO/ST=Cundinamarca/L= Bogota
D.C./O=PANABRO/OU=OperacionesTecnologicas/CN=ServPruebas/emailAddress=tecnologia@PA
NABRO.com.co"
Ejemplo de resultado generado

Generar request (csr) usando “keytool” para Apache Tomcat con cacert (.jks)

keytool -genkey -keystore PANABRO.jks -alias PNB-PRUEBAS -keyalg RSA -keysize 4096 -validity 2555
-subj "/C=CO/ST=Cundinamarca/L=Bogota D.C./O=Panto Native Brothers
(PANABRO)/OU=Tecnologia/CN=www.PANABRO.com.co/emailAddress=tecnologia@PANABRO.co
m.co" \
-passin pass:ERVGYKIK%*
Ejemplo de resultado generado
Generando certificados autofirmados en Windows IIS

Ya se puede visualizar en la lista de certificados


Importar certificado (.cer)

Importar certificado (.cer) en Apache httpd

Copiar los certificado a la ruta según la versión del Linux

certificados Ubuntu /etc/ssl/cert y /etc/ssl/private


certificados REL/CentOS /etc/pki/tls/certs y /etc/pki/tls/private/
Colocar los archivos en sus respectivas rutas

/etc/pki/tls/private/www_micarrito_com_co.key
/etc/pki/tls/private/www_micarrito_com_co.intermediate.cer
/etc/pki/tls/cert/www_micarrito_com_co.cer

Si se tiene activado SELinux se deben restaurar los permisos de los certificados solo en REL

restorecon -RvF /etc/pki/

Colocar los nombres de los archivos de los certificados en los archivos de configuración de Apache
según versión de Linux.

Rutas del archivo de configuración de SSL de Httpd

REL/CentOS /etc/httpd/conf.d/ssl.conf
Ubuntu /etc/apache2/sites-available/default-ssl.conf

Importar certificado (.cer) en NginX


Copiar los certificado a la ruta según la versión del Linux

certificados Ubuntu /etc/ssl/certs y /etc/ssl/private


certificados REL/CentOS /etc/pki/tls/certs y /etc/pki/tls/private/
Colocar los archivos en sus respectivas rutas

/etc/pki/tls/private/www_micarrito_com_co.key
/etc/pki/tls/certs/www_micarrito_com_co.intermediate.cer # si se hace necesario
/etc/pki/tls/certs/www_micarrito_com_co.cer

Es importante crear un grupo fuerte de DH (Diffie-Hellman) que es esencial en las negociaciones del
secreto a futuro con los clientes, lo creamos directamente en la carpeta de certificados del SO

Ubuntu sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem


REL/CentOS sudo openssl dhparam -out /etc/pki/tls/certs/dhparam.pem
Crear un archivo de configuración de localización de los certificados en la carpeta de ‘snippet’ de
NginX

sudo cat /etc/nginx/snippets/self-signed.conf

Agregar el siguiente contenido, teniendo en cuenta la localización de los certificados.

ssl_certificate /etc/ssl/certs/certificateAF.cer;
ssl_certificate_key /etc/ssl/private/certificateAF.key;

Crear un archivo de configuración para los Cipher en la carpeta de ‘snippet’ de NginX. Esto
configurará a Nginx con un sólido conjunto de cifrado SSL y habilitará algunas características
avanzadas que ayudarán a mantener nuestro servidor seguro.

sudo cat /etc/nginx/snippets/self-signed.conf

Agregar el siguiente contenido, teniendo en cuenta la localización del archivo DH (Diffie-Hellman)


generado con anterioridad. Esta es una recomendación de la pagina
https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html. Si se desea se puede comentar el
DNS

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-
GCM-SHA384:DH>
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable strict transport security for now. You can uncomment the following
# line if you understand the implications.
# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

Configurar para hacer los llamados SSL desde NginX. Para este ejemplo vamos a usar el site default,
y va tendrá navegación por http y https.

Realizamos una copia de la configuración del sitio default.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.back

Editamos el archivo de configuracion del sitio default

sudo nano /etc/nginx/sites-available/default


Se comentan las líneas de listen y se coloca el siguiente código

listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;

include snippets/self-signed.conf;
include snippets/ssl-params.conf;

Ejemplo de como debe quedar

Validar que los cambios quedaron bien

sudo nginx -t
Ejemplo de salida del comando

Importar certificado (.cer) en Apache Tomcat

Copiar los certificado a la ruta según la version del Linux

Importar el certificado en un keystore ya existente

keytool -import -alias server -file your_site_name.p7b -keystore your_site_name.jks


Al ejecutar el comando solicita la contraseña que le se le asignara al keystore para poder ser
abierto

Realizar los cambios respectivos en en archivo de configuración de Apache Tomcat server.xml


<Connector port="443" maxHttpHeaderSize="8192"
maxThreads="100" minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true"
SSLEnabled="true" clientAuth="false" sslProtocol="TLS" keyAlias="server"
keystoreFile="/home/user_name/your_site_name.jks" keystorePass="your_keystore_password"
/>

Importar certificado (.cer) en IIS


Ingresar al IIS y seleccionar server certificates

Seleccionar completar solicitud de certificado


Validación del funcionamiento del certificado

Se puede ingresar a las siguientes páginas para validar el correcto funcionamiento del certificado

https://www.ssllabs.com/ssltest/analyze.html

https://www.digicert.com/help/
Utilidad certificados en Windows
En algunas ocasiones los certificados en Windows no funcionan correctamente o se localizan en el
mal en el repositorio y no los puede ver el IIS, la siguiente herramienta ayuda a solucionar ese
problema.

https://www.digicert.com/util/
Referencias

https://www.youtube.com/watch?v=njN-k6TdSk4

https://www.ssls.com/knowledgebase/how-to-install-an-ssl-certificate-on-iis-10/

https://www.digicert.com/csr-creation-ssl-installation-iis-10.htm

https://knowledge.digicert.com/solution/SO27347.html

https://guidocutipa.blog.bo/certificado-ssl-autofirmado-apache/

https://www.nanotutoriales.com/comandos-basicos-de-openssl

http://www.ingdiaz.org/activar-ssl-apache-https-ubuntu-16-04/

https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-
centos-7

https://www.digicert.com/csr-ssl-installation/tomcat-keytool.htm

https://www.ssls.com/knowledgebase/how-to-install-an-ssl-certificate-on-a-tomcat-server/

https://hutter.io/2016/02/09/java-create-self-signed-ssl-certificates-for-tomcat/

https://linuxize.com/post/how-to-install-nginx-on-centos-7/

https://www.cyberciti.biz/faq/how-to-install-and-use-nginx-on-centos-7-rhel-7/

https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-
ubuntu-18-04

https://alvinalexander.com/linux-unix/my-notes-how-configure-https-nginx-ubuntu-16/

https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-
nginx-in-ubuntu-18-04
Anexos
Certificados con llave privada en IIS – proceso para Cluster de alta disponibilidad

Justificación
Cuando se genera un request en un servidor la llave privada queda almacenada en la maquina por
esto el certificado solo se puede instalar en esta máquina, si se quiere instalar el certificado en las
otras máquinas que pertenezcan al mismo cluster se hace necesario realizar unas actividades
adicionales.

Activar certificados en Microsoft Management Console (mmc)


Ejecutar mmc

Adicionar snap-in de certificados


Seleccionar certificates, dar click en “add > “ y seguir las instrucciones.
Exportar certificado con llave privada
Ingresar al servidor y realizar los pasos descritos en “Activar certificados en Microsoft Management
Console (mmc)”.

Desde MMC seleccionar el certificado que se desea exportar y seguir las instrucciones
Importar certificado con llave privada en IIS

En el servidor que sea parte del cluster de se desea importar el certificado:

Ingresar al servidor y realizar los pasos descritos en “Activar certificados en Microsoft Management
Console (mmc)”.

También podría gustarte