Certificado SSL

De Tek-System Wiki
Ir para navegação Ir para pesquisar

Primeiramente é preciso gerar um código CSR para requisição do certificado.

Em uma plataforma unix abra o terminal rode o seguinte comando:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr

onde example será o nome relacionado ao seu domínio.

Logo em seguida será apresentada uma sére de perguntas sobre sua empresa que servirão de base para que o provedor do SSL possa gerar seus certificados. Favor responder utilizando apenas caracteres alfanuméricos.

Country Name: Apenas a sigla. (e.g. BR, US).

State or Province Name: Nome completo do estado (e.g. Minas Gerais, São Paulo).

Locality Name: Nome completo da cidade exatamente como está registrado no cnpj (e.g. UBA).

Organization Name: O nome oficial da empresa como está registrado no cnpj, nome fantasia ou razão social (e.g. TEK-SYSTEM INFORMATICA LTDA - ME).

Organization Unit Name: Se trata de departamento, se não houver um específico pode deixar em branco.

Common Name: O seu domínio registrado sem http, https ou www (e.g. tekwebserver.com.br).

Email Address: Utilizado somente para geração do certificado.

A Challenge Password: Pode gerar uma senha, mas ela servirá somente para a comunicação entre o requerente do certificado e o provedor, portanto pode deixar em branco.

An Optional Company Name: Esta opção também pode ficar em branco.

Ao final ele irá gerar dois arquivos:

1) Um deles é example.key que é a sua chave privada e será utilizada para a instalação do certificado no servidor.

2) O outro é o example.csr que é o código CSR necessário para requisição e assinatura do certificado.

Normalmente eles são armazenados na pasta raíz da sua máquina e você deverá fornecê-los ao provedor de SSL(no nosso caso o Comodo) quando for solicitado.

Após isso eles irão enviar um email com as opções para validação do certificado, que pode ser feita pelo próprio email. Após a validação você receberá um arquivo .zip contendo 4 arquivos de certificado.

Você deverá concatenar esses 4 arquivos em 1 somente. Neste momento a ordem de concatenação é extremamente importante, caso contrário o certificado não irá funcionar. Primeiro vem o certificado que contém o nome do seu domínio, logo após o que contém o nome DomainValidation, em seguida o que contém o nome AddTrust no meio e por fim o que contém Root no nome. Logo, o comando será algo parecido com isto:

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >> ssl-bundle.crt

Onde ssl-bundle é o nome que você dará ao arquivo final que é a cadeia de certificados e será utilizada para a instalação do certificado.

Agora é hora de armazenar esse certificado e a chave privada no servidor.

Primeiro é preciso passar o caminho no docker-compose.yml da seguinte forma:

Exportação para RAIS

Na linha 13 é passado antes de ":" o caminho dentro da pasta do nginx do docker onde as chaves estão e do lado direito onde elas se encontram no servidor. Portanto você precisa se certificar de que os arquivos estão nessas pastas.

Configurando o SSL no Nginx

Dentro da pasta do Nginx no Docker vá até a pasta conf.d altere o arquivo zz-default.conf como segue:

Exportação para RAIS

O primeiro server{} é comum para todos pois é o padrão http com porta 80, o ssl é do server logo abaixo e utiliza a porta 443. Atenção para o campo name_server que deverá o exatamente o nome do seu domínio registrado. Em ssl_certificate e ssl_certificate_key terá o caminho exato de onde você armazenou os arquivos no servidor, que são sua chave gerada junto com o CSR e o seu certificado concatenado. Outro detalhe importante é na linha 53 onde proxy_pass é passado o endereço da VM no google cloud que é o IP principal e logo após a porta, no caso a 80. O restante é comum para todos os casos. Para mais outras lojas e domínio será utilizado o mesmo certificado logo ssl_certificate e ssl_certificate_key não irão mudar pois será um certificado multi domínio. Basta somente criar outro server{} com as configurações apropriadas.

Agora o seu servidor Nginx está configurado e pronto para utilizar https na sua loja. Agora vá até a administração do magento em Loja/Configuração, na parte de cima em Ambiente selecione a sua loja que irá receber o https. Vá em Geral/Web/URLs Base (Segura) e configure da seguinte forma:

Exportação para RAIS

No campo Usar URL Segura no Frontend e marque sim.

Após isso reinicie o nginx rodando o comando docker restart id passando o id dele, este pode ser facilmente visualizado rodando docker ps -a

Agora acesse o docker pelo comando docker-compose exec magento bash e rode os seguintes comando:

php bin/magento setup:upgrade

php bin/magento indexer:reindex

php bin/magento cache:clean

php bin/magento cache:flush

chmod 777 -R var/ pub/

Reiniciar o Docker no servidor após o termino de todos os passos acima. Caso não faca essa operação, o certificado não será validado

Pronto, sua loja está com SSL!

Links úteis:

http://www.techytalk.info/magento-2-behind-varnish-reverse-proxy/

http://nginx.org/en/docs/http/configuring_https_servers.html

https://helpdesk.ssls.com/hc/en-us/articles/203427502-How-to-generate-a-CSR-code-on-Apache-Nginx-using-OpenSSL

https://helpdesk.ssls.com/hc/en-us/articles/203427642-How-to-install-a-SSL-certificate-on-a-NGINX-server