Instalación

Instalación

Estoy intentando configurar SSL en mi servidor web Apache2, pero parece que no funciona en absoluto.

Seguí un tutorial para crear archivos de certificado con openssl y lo configuré /etc/apache2/sites-available/default-ssl.confcorrectamente.

Cada vez que intento abrir mi sitio web con https, mi navegador se niega a conectarse debido a problemas de seguridad. Dice que no he configurado mi sitio web correctamente.

En mi caso /var/log/apache2/error.log, recibo advertencias que dicen que el certificado de mi servidor no incluye una identificación que coincida con el nombre del servidor.

[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'

¿Tiene alguna idea sobre cómo resolver esto? ¡Gracias por respeto!

Respuesta1

Bien, noté que esta publicación se ve con bastante frecuencia recientemente y, por lo tanto, parece que muchas personas enfrentan el mismo problema que yo. Si es así, esto podría ayudarte.

He seguido un sencillo tutorial paso a paso para crear una certificación SSL para mi servidor web. Como tantos tutoriales que existen, el resultado del tutorial que seguí fue un certificado autofirmado usando OpenSSL. Síautofirmado, ese era el problema. El navegador no puede confiar en el servidor debido a que su certificado está firmado por él mismo. Pues yo tampoco lo haría...

Un certificado debe estar firmado por una autoridad certificadora (CA) externa confiable. Entonces me topé conVamos a cifrarque hace todo el trabajo por ti y es aún más fácil de configurar y lo mejor es que es absolutamente gratis.

Instalación

1) Elimine los archivos de certificados SSL antiguos que creó utilizando OpenSSL

2) Abra backports para obtener el cliente certbot en Debian. ¡Debe saber que esto abrirá un agujero para el software sin terminar! Instale sólo los paquetes cuando sepa lo que está haciendo.

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

3) Actualiza tu sistema Linux

sudo apt-get update

4) Instalar certbot

sudo apt-get install python-certbot-apache -t jessie-backports

5) Configurar Apache ServerName y ServerAlias

sudo nano /etc/apache2/sites-available/000-default.conf

6) Editar el archivo de configuración de Apache

<VirtualHost *:80>
    . . .
    ServerName example.com
    ServerAlias www.example.com
    . . .
</VirtualHost>

7) Verifique la sintaxis correcta

sudo apache2ctl configtest

8) Si el archivo de configuración se ve bien, reinicie el servidor Apache

sudo systemctl restart apache2

9) Configure un certificado usando certbot y siga las instrucciones en pantalla.

sudo certbot --apache

Renovación

Todos los certificados de Let's Encrypt son válidos durante 3 meses. Para renovar el puedes ejecutar manualmente

sudo certbot renew

O automatizar este servicio como un trabajo cron

sudo crontab -e

e ingrese a la siguiente fila para invocar una renovación todos los lunes a las 2:30 am.

. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

Puedes seguir un tutorial más detallado aquí:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8

Respuesta2

En mi caso, resolví esto reemplazándolo en mi archivo de configuración SSL de Apache para cada dominio en cuestión:

ServerName mydomain.com
ServerAlias www.mydomain.com

por :

ServerName www.mydomain.com
ServerAlias mydomain.com

Porque mi certificado es para "www.midominio.com" y no para "midominio.com"

archivo apache completo:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
        ServerName www.mydomain.com
        ServerAlias mydomain.com
    DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    <Directory />
        Options +FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /home/mydomain.com/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Respuesta3

Si no ve otros errores de SSL y si ha intentado configurar 'Depuración de nivel de registro' en el archivo httpd.conf, este mensaje de error también puede sugerir que falta 'Listen 443' en el archivo httpd.conf.

Respuesta4

Me encontré con este problema recientemente, cuando expiró mi certificado autofirmado. Busqué en Google y simplemente copié el comando para crear un nuevo certificado de un sitio web.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt

En mi archivo de configuración de Apache: /etc/apache2/sites-available/default-ssl.conf. El archivo de certificado y el archivo de clave hacen referencia al siguiente nombre de archivo.

    SSLCertificateFile  /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Por lo tanto, el error que se ve aquí en mi caso fue más fácil de solucionar, simplemente proporcionando la ubicación correcta del archivo de clave del certificado al crear el certificado SSL.

Entonces, aquí está el comando que debería haber usado y escrito correctamente.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

información relacionada