Cómo crear un certificado SSL en Apache para tener HTTPS

Protocolo HTTPS

Explicación de cómo crear un certificado SSL autofirmado.

Es ideal para usarlo en una extranet.

Esto cifrará la comunicación entre el navegador web y el servidor Apache.

Puertos de página web

  • El puerto 80

    Se usa habitualmente para el protocolo HTTP.

    La comunicación entre cliente y servidor se envía en claro.

  • El puerto 443

    Es el predetermindado del protocolo HTTPS.

    La comunicación queda cifrada con clave pública y privada

Pasos a seguir

Creación del par de claves privada/pública

  1. Activar el módulo SSL del Apache: sudo a2enmod ssl
  2. Crear una subcarpeta para guardar las claves: sudo mkdir /etc/apache2/ssl
  3. Crear el par de claves privada/pública: sudo openssl req
    -x509 -nodes -days 365 -newkey rsa:2048
    -keyout /etc/apache2/ssl/tu.dominio.es.key
    -out /etc/apache2/ssl/tu.dominio.es.crt
    Al pulsar ENTER se realizarán una serie de preguntas: Country Name (2 letter code) [AU]: ES
    State or Province Name (full name) [Some-State]: España
    Locality Name (eg, city) []: Barcelona
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre de la empresa
    Organizational Unit Name (eg, section) []: Nombre del departamento
    Common Name (e.g. server FQDN or YOUR name) []: tu.dominio.es
    Email Address []: tu.correo@dominio.es

Configurar el Apache (apache2.conf)

  1. Añadir un nuevo servidor virtual para HTTPS: <VirtualHost _default_:443>
      ServerName tu.dominio.es
      DocumentRoot /var/www/html
      SSLEngine on
      SSLCertificateFile /etc/apache2/ssl/tu.dominio.es.crt
      SSLCertificateKeyFile /etc/apache2/ssl/tu.dominio.es.key
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
      </FilesMatch>
      <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
      </Directory>
      BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
      BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
  2. Redireccionar de HTTP a HTTPS <VirtualHost *:80>
      ServerName tu.dominio.es
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    </VirtualHost>

Acceso a una web con certificado autofirmado

Como el certificado que hemos creado es autofirmado, no está avalado por una entidad certificadora, y por lo tanto el navegador web mostrará un mensaje de advertencia.

En Firefox

Se mostrará lo siguiente:

firefox-self-signed.png

y responderemos así:
Entiendo los riesgos > Añadir excepción > Confirmar excepción de seguridad

En Chrome o Chromium

Se mostrará lo siguiente:

firefox-self-signed.png

Para evitar esto hemos de bajar el certificado de la web y añadirlo en la lista de autoridades de confianza del navegador:

  1. Bajar el certificado de la web
    1. En la barra de direcciones pulsa el candado de https
    2. Elige: Conexión > Datos del certificado > Detalles > Exportar
    3. Guárdalo como tipo: Certificado único PKCS #7
  2. Añadir el certificado a las lista de autoridades de confianza
    1. Pulsa en: Menú > Configuración > Mostrar opciones avanzadas > HTTPS/SSL > Administrar certificados
    2. En Entidades emisoras busca el nombre de la empresa indicada al autofirmar
    3. Pulsa Importar, selecciona el tipo Certificado único PKCS #7 y elige el archivo que guardaste antes
    4. Marca: Confiar en este certificado para identificar sitios web y reinicia el navegador

Enlaces

Fuentes

Otros

Comentarios

Proinf.net, ©2003-2017 ci 3.1.5 (CC) Esta obra está bajo una licencia de Creative Commons Este software está sujeto a la CC-GNU GPL