ProInf.net

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

Francisco 07-05-15
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

Compartir



Añade tu comentario:

(El correo no será publicado)
 

Artículos relacionados:

Ir arriba