Como configurar o SSL no apache?

10

Eu instalei o apache no RHEL 6. Tudo está funcionando bem. O que todas as alterações e configurações devem ser feitas para usar link .

Se eu mudar o "Listen 80" para o 443, ele lançará um erro de conexão SSL

"Erro 107 (net :: ERR_SSL_PROTOCOL_ERROR): erro de protocolo SSL."

    
por monu 18.04.2012 / 19:42

2 respostas

13

Se você estiver usando apache2 , será necessário fazer o seguinte:

Etapa 1: Use o OpenSSL para produzir as chaves usadas para proteger seu site. Essas chaves são usadas ao criptografar e descriptografar o tráfego para seu site seguro.

$ openssl genrsa -out mydomain.key 1024

Este comando criará uma chave privada de 1024 bits e a colocará no arquivo mydomain.key.

Etapa 2: gere seu próprio certificado.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Etapa 3: Mantenha a chave privada no diretório /etc/apache2/ssl.key/ e certificado no diretório /etc/apache2/ssl.crt/ .

Observação: o diretório ssl.key deve ser legível somente por root.

Passo 4: Agora você precisa editar o arquivo httpd.conf em /etc/apache2 .

Agora, esse arquivo deve incluir conteúdo 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>
    
por 19.04.2012 / 00:23
3

Não altere Listen 80 para 443 em /etc/httpd/conf/httpd.conf . O SSL é configurado em /etc/httpd/conf.d/ssl.conf . No RHEL 6, o SSL é ativado e escuta, por padrão, com um certificado auto-assinado.

Você pode acessar o site padrão usando SSL apenas navegando até https://localhost (não é necessário adicionar a porta ao final do URL).

Se você quiser encaminhar todas as solicitações HTTP para HTTPS (que é o que eu acredito que você está tentando alcançar), você pode adicionar um redirecionamento permanente ou usar o módulo do Apache mod_rewrite .

A maneira mais fácil e segura é configurar um redirecionamento permanente. Habilite hosts virtuais nomeados e adicione uma diretiva Redirect ao VirtualHost em /etc/httpd/conf/httpd.conf .

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

Usando mod_rewrite , você também cria um host virtual nomeado. Este não é o método recomendado, mas 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>

Se você quiser desativar o SSL, comente essas linhas em /etc/httpd/conf.d/ssl.conf e reinicie o Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443
    
por 18.04.2012 / 19:48