Eu nunca configurei um SSL no Linux antes, mas tenho uma ideia geral de como ele funciona. Especificações do servidor abaixo se isso ajuda:
Servidor: CentOS Linux 6
Estação de trabalho: Windows 7
Então, eu tenho 4 domínios, todos compartilhando uma única instalação e endereço IP do Magento. Suponha que um dos meus domínios seja "mywebsite1.com" Estou tentando ativar o SSL apenas para este domínio por enquanto, mas estou com erros. O que estou fazendo de errado? Aqui está o meu fluxo de trabalho:
-
Eu comprei um SSL do Godaddy, em seguida, gerou o csr e a chave com o comando dado por eles:
openssl req -new -newkey rsa:2048 -nodes -keyout mywebsite1.key -out mywebsite1.csr
-
Copio os arquivos para / etc / pki / tls / private
-
Eu abro mywebsite1.crs e copio e colo o código para Godaddy.
-
Eu gero os arquivos crt e os baixo do GoDaddy, faço o upload para o meu servidor e os movo para / etc / pki / tls / certs
-
a. Primeira tentativa, abri o /etc/httpd/conf.d/ssl.conf e atualizei o
Os valores SSLCertificate, KeyFile e ChainFile do bloco padrão do VirtualHost para apontar para os locais corretos.
b. 2a tentativa, seguindo
link que modifiquei
ssl.conf e adicionou esta diretiva:
NameVirtualHost *:443
c. Então eu removi todo o bloco default VirtualHost (que era
bastante demorado).
Última tentativa, adicionei o seguinte ao arquivo ssl.conf modificado de
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
DocumentRoot /var/www/html
ServerName mywebsite1.com
</VirtualHost>
6 .. Eu reinicio o Apache
7 .. Eu então vou para o link apenas para encontrar erros que me impedem de ver o site em vários navegadores.
Navegador: Firefox
SSL received a record with an unknown content type.
(Error code: ssl_error_rx_unknown_record_type)
Navegador: Chrome
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
Navegador: IE ... leva-me ao Google ...
link
NameVirtualHost 12.34.567.89
<VirtualHost 12.34.567.89>
DocumentRoot /var/www/html
ServerName website1.com
</VirtualHost>
<VirtualHost 12.34.567.89>
DocumentRoot /var/www/html
ServerName website2.com
</VirtualHost>
<VirtualHost 12.34.567.89>
DocumentRoot /var/www/html
ServerName website3.com
</VirtualHost>
<VirtualHost 12.34.567.90:80>
DocumentRoot /var/www/html
ServerName website4.com
</VirtualHost>
Notas:
- Eu li que você deve ativar o ssl com um comando chamado "a2enmod ssl", mas esse comando não existe para o meu servidor.
- Não há logs de erros ssl em / etc / httpd / logs.
- De acordo com Godaddy, fui instruído a nomear a chave "mywebsite1" sem a extensão. No entanto, eles me dão um crt com a extensão, o que é estranho.
- Esta é apenas a fase de desenvolvimento e essa alteração precisará ser rapidamente reproduzida com um novo SSL e diferentes domínios, uma vez que lançarmos o servidor de produção.
Eu tentei todas as etapas 3 vezes (veja 5a-5c), mas ainda não tive sorte em fazer com que o SSL funcionasse em um dos meus domínios. Como posso fazer o SSL funcionar?
ATUALIZAÇÃO: apachectl -S
12.34.567.90:80 mywebsite4.com (/etc/httpd/conf/httpd.conf:1021)
12.34.567.89:* is a NameVirtualHost
default server mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite1.com (/etc/httpd/conf/httpd.conf:1026)
port * namevhost mywebsite2.com (/etc/httpd/conf/httpd.conf:1031)
port * namevhost mywebsite5.com (/etc/httpd/conf/httpd.conf:1036)
wildcard NameVirtualHosts and _default_ servers:
*:443 is a NameVirtualHost
default server mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
port 443 namevhost mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
Syntax OK
ATUALIZAÇÃO: funcionou ... mas ...
Eu consegui executar o SSL alterando o vhost para apontar apenas para mywebsite1 em vez de *: 443
<VirtualHost mywebsite1.com>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
#SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
DocumentRoot /var/www/html
ServerName mywebsite1.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
</VirtualHost>
Isso puxa o SSL, no entanto ... o protocolo HTTP retorna uma "Solicitação incorreta"
Essa alteração parece estar afetando a visualização sem SSL do site. Eu não posso especificar a porta porque reiniciar o apache me dará um erro que portas e não portas não podem ser misturadas.
UPDATE
Corrigido com a sugestão de Michael Hampton. Obrigado pessoal.