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 https: // localhost: 443 / .

Se eu alterar o "Listen 80" para 443, está gerando um erro de conexão SSL

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

monu
fonte

Respostas:

13

Se você estiver usando apache2, faça 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 o certificado no diretório /etc/apache2/ssl.crt/.

Nota: O ssl.keydiretório deve ser legível apenas pela raiz.

Etapa 4: agora você precisa editar o httpd.confarquivo /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>
pradeepchhetri
fonte
As três primeiras linhas não são necessárias. 1. NameVirtualHostestá obsoleto e será removido em futuras versões do Apache. Atualmente já é um no-op. 2. Listen 443pode causar problemas se o apache já estiver configurado para escutar na porta 443, o que em muitas distribuições Linux já é o caso. Adicione apenas se tiver certeza de que esta linha não está configurada em outro local.
lanoxx
3

Não mude Listen 80para 443dentro /etc/httpd/conf/httpd.conf. O SSL está configurado em /etc/httpd/conf.d/ssl.conf. No RHEL 6, o SSL está ativado e escutando por padrão com um certificado autoassinado.

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ê deseja encaminhar todas as solicitações HTTP para HTTPS (que é o que eu acredito que você está tentando obter), você pode adicionar um redirecionamento permanente ou usar o módulo Apache mod_rewrite.

A maneira mais fácil e segura é configurar um redirecionamento permanente. Habilite hosts virtuais nomeados e adicione uma Redirectdiretiva 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ê deseja desativar o SSL, comente essas linhas /etc/httpd/conf.d/ssl.confe reinicie o Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443
George M
fonte
Na verdade, se você adicionar o pacote mod_ssl ao RHEL6, ele criará um /etc/httpd/conf.d/ssl.conf, que carrega o módulo e configura <VirtualHost _default_:443>, com todos os parâmetros necessários, cada um com comentários. O mod_sslpacote não é instalado automaticamente se você instalou o httpdpacote.
Jsbillings
1
Gostaria de adicionar apenas uma coisa à sua reescrita: use em [R=301,L]vez de apenas [R,L], dessa maneira, a reescrita está usando a opção permanente dos códigos de status HTTP 3xx .
Dcestari 14/05