
Meu servidor está funcionando bem com um certificado SSL autoassinado até que adicionei as seguintes linhas para redirecionar a solicitação contendo wwww
o non-www
site:
<VirtualHost *:443>
ServerName www.mydomain.com
Redirect permanent / https://mydomain.com/
</VirtualHost>
O erro que recebi é:
O servidor deve reconhecer SSL, mas não possui certificado configurado [Hint: SSLCertificateFile] ((null):0)
Achei que um redirecionamento simples não exigiria SSL. O que deve ser feito para que esse redirecionamento simples funcione?
Responder1
O problema é que você não pode ter vários NameVirtualHost se usar SSL, o que é um problema comum em muitos servidores web diferentes.
A razão está nas camadas da rede. O HTTP está acima do SSL, isso significa que primeiro a conexão SSL deve ser estabelecida e, em seguida, a solicitação HTTP é enviada. Mas a solicitação HTTP decide qual NameVirtualHost deve atender a essa solicitação, ao mesmo tempo em que os certificados SSL podem ser específicos para NameVirtualHosts, então como a conexão SSL poderia ser estabelecida se o NameVirtualHost para lidar com essa solicitação ainda não é conhecido no momento do SSL aperto de mão?
Há mais pessoas falando sobre esse problema e sugerindo soluções alternativas. Assim como colocar diferentes hosts virtuais em IPs ou portas diferentes, isso resolveria o problema porque os IPs e portas são conhecidos antes que a conexão SSL seja estabelecida:
Além disso, faltam ao seu VirtualHost as diretivas relacionadas ao SSL, como SSLEngine on
e as outras SSL*
diretivas. Acho que esse é provavelmente o motivo pelo qual você recebeu esse erro, porque você configurou um VirtualHost sem SSL para escutar na porta 443, enquanto outro VirtualHost na porta 443 tem SSL habilitado. Pela razão descrita acima, isso não pode funcionar.