Estoy intentando configurar mi sitio web para redirigir todo el tráfico al subdominio www y redirigir todas las solicitudes http a solicitudes https. Sé que no es un problema con los registros DNS (que incluyen un registro A para www y nube) porque mi configuración funcionó perfectamente hasta hace aproximadamente una semana cuando reinstalé todo. El problema que experimenta es que se comporta de forma muy extraña.
(Reemplacé mi dominio con "ejemplo.com" para desinfectar la publicación).
Lo que no funciona:
http://example.com - redirects to https://www.example.com,
but yields SSL_PROTOCOL_ERROR
http://cloud.example.com - redirects to https://www.example.com/myfiles/,
but yields SSL_PROTOCOL_ERROR
https://example.com - no redirect to www, and yields SSL_PROTOCOL_ERROR
https://www.example.com - yields SSL_PROTOCOL_ERROR
https://cloud.example.com - no redirect to www, and yields SSL_PROTOCOL_ERROR
Qué funciona:
http://www.example.com - works like a dream
Todos mis pasos de configuración de Apache (desde una instalación limpia):
sudo echo -e "\\ndeb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
sudo apt-get update && sudo apt-get -y upgrade
# Because you'll want the latest certbot...
sudo apt-get -y install python-certbot-apache -t jessie-backports
sudo apt-get -y install apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql php5-cli
sudo a2enmod rewrite
Coloque lo siguiente (como root) al final de /etc/apache2/apache2.conf
ServerName example.com
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
<Directory /var/www/(.*)>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>
Creando los VirtualHosts y los Certificados
sudo tee /etc/apache2/sites-available/www.conf << "EOP"
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html/
ServerName www.example.com
</VirtualHost>
EOP
sudo a2ensite www
sudo service apache2 restart
sudo certbot --apache --domain www.example.com
#I apply this to /etc/apache2/sites/enabled/default-ssl.conf
sudo mkdir -p /var/www/html/myfiles/
sudo tee /etc/apache2/sites-available/cloud.conf << "EOP"
<VirtualHost *:80>
ServerName cloud.example.com
Redirect / https://www.example.com/myfiles/
</VirtualHost>
<VirtualHost *:443>
ServerName cloud.example.com
Redirect / https://www.example.com/myfiles/
</VirtualHost>
EOP
sudo a2ensite cloud
sudo service apache2 restart
sudo apache2ctl configtest #which reports everything's ok
Más información sobre el servidor:
El servidor es una instalación limpia de Debian 8.6 (amd64) y el número de versión de Apache es 2.4, por lo que la estabilidad del software no es el problema.
Mi problema SSL
A cat /var/log/apache2/error.log
me tira lo siguiente:
[ssl:warn] [pid 11737] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
Respuesta1
su certificado DEBE coincidir con el nombre de dominio.
sudo certbot --apache --domain www.example.com --domain cloud.example.com --domain example.com
puede tener hasta 100 SAN (nombres alternativos de sujetos) por certificado LE.
También puede utilizar varios certificados con la misma IP con SNI (que su versión de openssl debería admitir)
También debe enumerar sus opciones y archivos SSL antes del</VirtualHost>