SSL EN SERV WEB (APACHE, IIS) - v3
SSL EN SERV WEB (APACHE, IIS) - v3
SSL EN SERV WEB (APACHE, IIS) - v3
en Servidores
web
APACHE (HTTPD Y TOMCAT), NGINX E IIS
ruta certificados
/etc/pki/tls/certs
/etc/pki/tls/private/
/etc/httpd/conf.d/ssl.conf
ruta certificados
/etc/ssl/cert
/etc/ssl/private
Archivo de configuración de ssl en apache
/etc/apache2/sites-available/default-ssl.conf
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
[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
NginX en CentOS
Validar el estado
sudo systemctl status nginx
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
Habilitar el servicio
sudo systemctl enable nginx
sudo systemctl start nginx
Validar el estado
sudo systemctl status nginx
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.
Desde la consola de administración del servidor, seleccionar ‘Manage’ y luego ‘Add Roles and
Features’
Ingresar al servidor Linux donde se están generando los certificados o desde el servidor donde se va
a usar,
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
Ingresar al administrador del Internet Information Services (IIS) y seleccionar “server certificates”
Seleccionar “Create Certificte Request”
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
/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
Colocar los nombres de los archivos de los certificados en los archivos de configuración de Apache
según versión de Linux.
REL/CentOS /etc/httpd/conf.d/ssl.conf
Ubuntu /etc/apache2/sites-available/default-ssl.conf
/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
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.
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.
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
sudo nginx -t
Ejemplo de salida del comando
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.
Desde MMC seleccionar el certificado que se desea exportar y seguir las instrucciones
Importar certificado con llave privada en IIS
Ingresar al servidor y realizar los pasos descritos en “Activar certificados en Microsoft Management
Console (mmc)”.