¿Cómo configurar SSL en Apache?

¿Cómo configurar SSL en Apache?

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.keydirectorio sólo debe ser legible por root.

Etapa 4:Ahora necesitas editar httpd.confel 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 80a 443in /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 Redirectdirectiva 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.confy reinicie Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

información relacionada