Protocolo https en Apache en Centos 7

El protocolo de Transferencia de Hiper-Texto seguro (HTTPS Hypertext Transfer Protocol Secure) es la versión segura de el http, que funciona desde el puerto 443 y utiliza un cifrado basado en los protoclos SSL/TLS con el fin de crear un canal cifrado entre el cliente y el servidor. SSL (Secure Sockets Layer) y TLS (Transmission Layer Security) son dos protocolos utilizados para enviar paquetes cifrados a través de Internet.

Básicamente, lo que ocurre es que la página Web codifica la sesión con certificado digital, de este modo, el usuario tiene ciertas garantías de que la información que envíe desde dicha página no podrá ser interceptada y utilizada por terceros.

Estos certificados de seguridad son conocidos como SSL. , una vez instaldos en la barra de la URL del navegador se verá un candado cuando navege por el sitio. En caso de que este haya sido emitido por una autoridad certificadora verificada (Certificados de Validación Extendida), los usuarios, veran este candado de color verdoso.

  1. Módulo ssl para Apache (mod_ssl).

apachectl -l

yum update –y

yum install mod_ssl

yum install opnssl

  1. Crear certificado aufirmado, para ello se crean los directorios donde se van almacenar la llave y el certificado 

mkdir/etc/httpd/ssl

chmod 700 /etc/http/ssl

cd ssl/

pwd

/etc/httpd/ssl

Para la generación del certificado y de la clave de utiliza el paquete de línea de comandos openssl. Con las opciones necesarias.

openssl genrsa -out /etc/httpd/ssl/asir.es.key 2048

Generating RSA private key, 2048 bit long modulus……….+++……+++e is 65537 (0x10001)

  • openssl: herramienta de línea de comandos para la creación y administración de certificados, claves y otros ficheros.
  • rsa:2048: indica que la clave RSA (Rivest–Shamir–Adleman) sea de 2048 bits. RSA es un sistema criptográfico de clave pública desarrollado en 1977.
  • -out: donde se almacenara el certificado.

Se restringe la lectura del certificado solo a root.

chmod 0400 asir/asir.es.key

A continuación se genera el certificado. La línea más importante es el CN (Common Name), se suministrará el nombre del dominio que se quiera asociar o la IP pública si se carece de dominio.

openssl req   x509  -new  -days 365  -nodes  -key /etc/httpd/ssl/asir.es.key   -out /etc/httpd/ssl/asir.es.crt

You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:PO
Locality Name (eg, city) [Default City]:VI
Organization Name (eg, company) [Default Company Ltd]:EDU
Organizational Unit Name (eg, section) []:EDU
Common Name (eg, your name or your server’s hostname) []:asir.iesteis.es
Email Address []:asir@iesteis.es

La generación de la clave y el certificado se puede realizar en una sola línea

openssl    req     -x509    -nodes    -days 365   -newkey rsa:2048   -keyout /etc/httpd/ssl/asir.es.key   -out /etc/httpd/ssl/ asir.es.crt

  • openssl: herramienta de línea de comandos para la creación y administración de certificados, claves y otros ficheros.
  • req -x509: especifica que se use X.509 para la administración de la firma de la solicitud de certificado (CSR, Certificate Signing Request).
  • -x509: infraestructura estándar de clave pública que se adhieren SSL y TLS para la administración de claves y certificados. Indica a req que se cree certificado autofirmado.
  • -nodes (no DES): indica que no se utilice contraseña para cifrar la clave. Si se usa clave privada con contraseña Apache o el servidor web en cuestión pedirá la contraseña cada vez que se reinicie.
  • -days 365: vigencia del certificado.
  • -newkey: especifica que se genere una nueva clave.
  • rsa:2048: indica que la clave RSA (Rivest–Shamir–Adleman) sea de 2048 bits. RSA es un sistema criptográfico de clave pública desarrollado en 1977.
  • -keyout: se indica el lugar de almacenamiento de la clave/llave.
  • -out: donde almacenar el certificado.

Se crea un grupo Diffie-Hellman fuerte que será usado en la negociación Perfect Forward Secrecy (PFS) en el que el servidor intercambia con los clientes claves efímeras (normalmente con Diffie Hellmanen el contexto de SSL). Las cipher suites usadas en los servidores, serían por ejemplo DHE_RSA_WITH_DES_CBC_SHA y sus múltiples variantes.

openssl dhparam -out /etc/httpd/ssl/asir/asir.es.pem 2048

Se comprueba el certificado.

openssl x509 -in /etc/httpd/ssl/asir/asir.es.crt -noout -text

Certificate:
Data:Version: 3 (0x2)
Serial Number:ce:c6:8a:ed:9c:5c:ae:95
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=ES, ST=PO, L=VI, O=EDU, OU=EDU, CN=asir.iesteis.es/emailAddress=air@iesteis.es
ValidityNot Before: Jan 27 15:58:33 2018 GMTNot After : Jan 27 15:58:33 2019 GMT
Subject: C=ES, ST=PO, L=VI, O=EDU, OU=EDU, CN=asir.iesteis.es/emailAddress=air@iesteis.es
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:00:e0:ea:5a:08:42:f4:88:d0:05:9b:6b:a6:8d:85:16:fa:4e:94:cd:fe:9c:07:ba:bf:31:2b:c9:36:fa:1d:88:4d:2a:fd:53:65:b0:11:f2:70:a5:75:06:87:b3:7b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:65:3B:FD:06:E7:3D:3B:1A:F3:92:92:D8:4D:5A:BB:9B:41:FB:5E:1BX509v3
Authority Key Identifier:keyid:65:3B:FD:06:E7:3D:3B:1A:F3:92:92:D8:4D:5A:BB:9B:41:FB:5E:1B
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption 49:95:7b:d2:f5:73:11:c4:ed:19:9d:29:ef:cb:a8:c8:b2:62: 52:f1:ab:f1

Se comprueba la clave privada.
openssl rsa -in asir/asir.es.key –check

RSA key okwriting RSA key
—–BEGIN RSA PRIVATE KEY—–
MIIEpAIBAAKCAQEAy+D1jktVitmPM9oQG/Kb6XEjydWT7PsiP46vP3NnEHZY+rl5
—–END RSA PRIVATE KEY—–

Se verifica que la clave privada y el certificado coinciden.
openssl rsa -noout -modulus -in asir.es.key | openssl md5

(stdin)= f8784d222e93f2f8ab18930493629108

openssl x509 -noout -modulus -in asir.es.crt | openssl md5

(stdin)= f8784d222e93f2f8ab18930493629108

tree -pg /etc/httpd/ssl/

/etc/httpd/ssl/
├── [drwx—— root ] asir
│   ├── [-rwx—— root ] asir.es.crt              # certificado
│   ├── [-rwx—— root ] asir.es.key             # clave privada
│   └── [-rwx—— root ] asir.public.pem    # clave pública

  1. Se configura el certificado en la configuración del vhost para SSL.

nano 00_asir.es_ssl.conf

<VirtualHost _default_:443>
ServerName asir.iesteis.es
ServerAlias asir.iesteis.com
SSLEngine on
SSLCertificateKeyFile /etc/httpd/ssl/asir/asir.es.key
SSLCertificateFile /etc/httpd/ssl/asir/ asir.es.crt
ServerAdmin centos@iesteis.es
DocumentRoot /var/www/html/asir.es DirectoryIndex asir.html
ErrorLog /var/www/html/asir.es/error.log#CustomLog /var/www/html/asir.es/requests.log
</VirtualHost>

apachectl configtest

Syntax OK

  1. Reinicia o servidor Apache

(Os pasos que se indican na páxina para a mellora da seguridade no protocolo, redirección das conexións http a https e configuración do firewall non son necesarios).

systemctl restart httpd.service

systemctl status httpd.service

● httpd.service – The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2018-01-27 11:01:18 CET; 5s ago

firewall-cmd –permanent –add-port=443/tcp

firewall-cmd –reload

 

REFERENCIAS:
http://magmax.org/blog/creando-tu-propia-entidad-certificadora-ssl/
https://waytoit.wordpress.com/2014/02/11/ssl-creando-una-entidad-certificadora/
https://www.ayudamelinux.es/crear-una-entidad-certificadora-ca-con-openssl/
https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7
https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs
https://www.linuxito.com/gnu-linux/nivel-alto/26-como-crear-tu-propia-autoridad-certificante-ca
https://www.suse.com/documentation/sles10/book_sle_reference/data/sec_apache2_ssl.html

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s