
He instalado Apache en RHEL 6. Todo funciona bien. Para qué se deben hacer todos los cambios y configuraciones https://localhost:443/.
Si cambio "Escuchar 80" a 443, arroja un error de conexión SSL
"Error 107 (net::ERR_SSL_PROTOCOL_ERROR): Error de protocolo SSL".
Respuesta1
Si está utilizando apache2
, debe hacer lo siguiente:
Paso 1:Utilice OpenSSL para generar las claves que se utilizan para proteger su sitio. Estas claves se utilizan para cifrar y descifrar el tráfico a su sitio seguro.
$ openssl genrsa -out mydomain.key 1024
Este comando creará una clave privada de 1024 bits y la colocará en el archivo midominio.clave.
Paso 2:Genera tu propio certificado.
$ openssl req -new -key mydomain.key -x509 -out mydomain.crt
Paso 3:Mantenga la clave privada en el directorio /etc/apache2/ssl.key/
y el certificado en el directorio /etc/apache2/ssl.crt/
.
Nota:El ssl.key
directorio sólo debe ser legible por root.
Etapa 4:Ahora necesitas editar httpd.conf
el archivo en formato /etc/apache2
.
Ahora este archivo debería incluir contenido como este:
NameVirtualHost *:80
NameVirtualHost *:443
Listen 443
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>
<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>
Respuesta2
No cambies Listen 80
a 443
in /etc/httpd/conf/httpd.conf
. SSL está configurado en /etc/httpd/conf.d/ssl.conf
. En RHEL 6, SSL está habilitado y escuchando de forma predeterminada con un certificado autofirmado.
Puede acceder al sitio predeterminado mediante SSL simplemente navegando https://localhost
(no es necesario agregar el puerto al final de la URL).
Si desea reenviar todas las solicitudes HTTP a HTTPS (que es lo que creo que está intentando lograr), puede agregar una redirección permanente o usar el módulo Apache mod_rewrite
.
La forma más sencilla y segura es configurar una redirección permanente. Habilite los hosts virtuales con nombre y agregue una Redirect
directiva al VirtualHost en /etc/httpd/conf/httpd.conf
.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
Redirect permanent / https://localhost
</VirtualHost>
Con mod_rewrite
, también crea un host virtual con nombre. Este no es el método recomendado, pero funcionará.
NameVirtualHost *:80
<VirtualHost *:80>
# Enable the Rewrite engine
RewriteEngine On
# Make sure the connection is not already HTTPS
RewriteCond %{HTTPS} !=on
# This rewrites the URL and forwards to https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
Si desea desactivar SSL, comente estas líneas /etc/httpd/conf.d/ssl.conf
y reinicie Apache.
LoadModule ssl_module modules/mod_ssl.so
Listen 443