Certificado SSL: 7 Passos Para Instalar e Configurar no Apache/Xampp

Facebook Linkedin Instagram Pinterest

Adicionar certificado SSL/HTTPS no Windows com XAMPP

Certificado SSL este é o assunto deste artigo. Vamos ver como configurar um site no Xampp para rodar sobre o protocolo HTTPS utilizando certificando SSL.

O certificado SSL é o que permite que um seu site use o protocolo HTTPS. O HTTPS garante que o site é seguro pois a troca de dados entre a máquina do visitante e o servidor é feita de forma criptografa protegendo as informações transmitidas.

Vamos ver preparar o seu ambiente de desenvolvimento para abrir um site utilizando https. Para isso, vamos ver como  incluir o domínio de um site no arquivo hosts para dizer ao Windows que ele deve procurar o site na máquina onde o ambiente de desenvolvimento está instalado, passando pelo configuração do VirtualHost no Apache até a criação de um certificado de segurança SSL e a sua instalação no Windows.

Serão 7 passos para no final termos um site com certificado SSL no seu ambiente de desenvolvimento. Seguindo estes 7 passos para configurar e instalar o certificado no Xampp e no Windows, você será capaz de acessar os seus site através do HTTPS e com certificado SSL.

  1. Incluir o domínio no arquivo hosts do Windows
  2. Criar o VirtualHost (nas portas 80 e 443)
  3. Incluir o domínio no arquivo v3.ext do Apache
  4. Gerar o certificado utilizando o makecert.bat do Apache
  5. Instalar o certificado SSL no Windows
  6. Reiniciar o Apache
  7. Verificar tudo está correto

1. Incluir o domínio no arquivo hosts do Windows

A primeira coisa a fazer para que seja possível acessar um site que esteja instalado no ambiente de desenvolvimento utilizando o Xampp, é determinar que o endereço do site deve apontar para o IP da sua máquina ou de uma máquina em rede local ou intranet.

No mundo real, isso é feito por meio de servidores DNS (Domain Name Server). No Windows isso pode ser feito incluindo o endereço do site no arquivo hosts que pode ser localizado em C:\Windows\System32\drivers\etc.

Após localizar o arquivo hosts, basta editá-lo para adicionar o endereço ou domínio que você vai utilizar para acessar o site e o IP para o qual ele deve apontar. 

Se você está com o seu ambiente de desenvolvimento na sua própria máquina, você deve apontar o endereço do site para o IP da sua máquina na rede ou para o IP de loopback 127.0.0.1.

Certificado SSL Prompt de comado arquivo Hosts

Com o domínio do site incluído no arquivo hosts, já podemos partir para a configuração do site no Apache incluindo o certificado SSL para que o site possa ser acessado através do HTTPS.

2. Criar o VirtualHost (nas portas 80 e 443)

O próximo passo para configurar o site no ambiente de desenvolvimento é criar o VirtualHost no Apache

Normalmente é suficiente criar um VirtualHost para dar acesso ao site na porta 80 (alguns desenvolvedores utilizam as portas 8080 ou 8081).

Entretanto, neste artigo o objetivo é configurar o site para utilizar um certificado SSL e poder ser acessado via HTTPS. Então além de configurar o VirtualHost para a porta 80 que é acessada pelo protocolo HTTP, também vamos configurar o acesso à porta acessada pelo protocolo HTTPS (porta 443).

Deixando as coisas organizadas

No Apache geralmente um VirtualHost é incluído no arquivo de configuração principal httpd.conf, mas eu aconselho que se utilize um arquivo separado para isso. 

Aqui na Concepção Web, usamos um arquivo específico onde incluimos o VirtualHost de cada site. Isto não é uma regra, somente um método de trabalho e claro que você não é obrigado a seguir este método. 

Porém, para aqueles que estão iniciando ou que quiserem adotar este método, vamos criar um novo arquivo na pasta C:\WEB, que é a pasta que vamos utilizar neste artigo. Nesta pasta vamos criar um arquivo chamado virtual_hosts_projetos.conf ou o nome da sua preferência. 

Depois de criar o arquivo, é preciso dizer para o Apache que ele deve ler este arquivo para seguir as definições de VirtualHosts incluídas nele. Para isso é necessário incluir uma nova diretiva no arquivo de configuração do Apache. 

Abra o arquivo httpd.conf localizado na pasta c:/xampp/apache/conf. No final do arquivo inclua a seguinte linha com o caminho e o nome do nosso arquivo:

Include "C:/WEB/virtual_hosts_projetos.conf"

Criando o VirtualHost

Antes de criarmos o VirtualHost do site, é necessário definir as regras de acesso ao diretório onde o site está instalado. Estas regras vão depender das suas necessidade, então aconselho que você procure a documentação do Apache sobre VirtualHosts para mais detalhes. Para o nosso artigo vamos usar as seguintes regras:

<Directory "C:/WEB/MEUSITE">
   Options FollowSymLinks indexes
   AllowOverride All
   Order deny,allow
   Allow from all
   Satisfy all
   Require all granted
   DirectoryIndex index.php index.html index.htm
</Directory>

Com o acesso ao diretório configurado, agora vamos criar o VirtualHost. Aqui estou usando as configurações mais básicas possível, então mais uma vez aconselho uma visita à documentação do Apache caso você tenha alguma dificuldade. 

Neste bloco vamos configurar apenas o acesso ao site via http (porta 80). Mais adiante vamos incluir no nosso arquivo as configurações para o acesso ao site via certificado HTTPS SSL.

<VirtualHost *:80>
   ServerName meusite.com.br
   DocumentRoot "C:\WEB\MEUSITE"
</VirtualHost>

Com o VirtualHost configurado agora deve ser possível acessar o site no seu navegador. Desligue e ligue novamente o Apache no painel de controle do Xampp, acesse o endereço http://meusite.com.br e veja se o site abre. Se tudo estiver certo, o site deve ser exibido no navegador se não, será exibida alguma mensagem de erro. 

Como o objetivo deste artigo não é sobre as inúmeras configurações do Apache e seus meandros, mais uma vez indico que você tente a documentação do Apache sobre VirtualHost. 

Se tudo der certo e o site abriu através do protocolo HTTP (porta 80), chegou a hora de configurar o Apache para liberar o acesso ao site através do protocolo HTTPS (porta 443) utilizando o certificado SSL.

Mas antes de continuar, verifique no arquivo de configuração do Apache (
c:\xampp\apache\conf\httpd.conf) se o módulo “ss_module” esta ativo. Localize a linha abaixo. Se você não localizar esta linha no httpd.conf, será necessário incluí-la.

LoadModule ssl_module modules/mod_ssl.so 

Agora, no arquivo com o nosso VirtualHost, abaixo da definição para a porta 80, inclua o seguinte bloco de configuração.

<VirtualHost meusite.com.br:443>
   ServerName meusite.com.br
   ServerAlias www.meusite.com.br
   DocumentRoot "C:\WEB\MEUSITE"
   SSLEngine on
   SSLCertificateFile "C:\xampp_7.2.4\apache\conf\server.crt"
   SSLCertificateKeyFile "C:\xampp_7.2.4\apache\conf\server.key"
   SSLCertificateChainFile "C:\xampp_7.2.4\apache\conf\server.crt"
</VirtualHost>

Como podemos ver nas diretrizes SSLCertificate, alguns arquivos são mencionados na configuração do VirtualHost. Esses são os arquivos do certificado que iremos gerar em seguida.

3. Incluir o domínio no arquivo v3.ext do Apache

Deste ponto em diante, vamos tratar da configuração e geração do certificado SSL do nosso site no nosso ambiente de desenvolvimento local que utiliza o Xampp

Para que o certificado SSL funcione no site é necessário alterar o arquivo v3.ext do Apache. Se você fez a instalação padrão do Xampp, o arquivo deve estar no caminho c:\xampp\apache.

Se você não localizar o arquivo v3.ext será necessário criá-lo com o seguinte conteúdo:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost

É no arquivo v3.ext que iremos determinar quais sites serão acessados via HTTPS utilizando o certificado SSL. Para isso podemos utilizar duas formas. Uma é incluindo o IP da máquina onde os sites que serão acessados via HTTPS estão instalados. 

A outra forma serve para o caso de você desejar ou precisar ser mais específico. Com ela, você pode incluir apenas os domínios dos sites que devem ser liberados. Essa forma é útil para o caso de você ter vários sites com certificado SSL mas querer liberar o acesso via HTTPS somente a alguns deles.

Para incluir o IP do seu ambiente de desenvolvimento local, só é necessário incluir mais uma linha DNS no arquivo v3.ext como abaixo:

DNS.2 = 127.0.0.1

Feito isso, todos os sites com certificado SSL e habilitados a acessar a porta 443 pelo VirtualHost, serão acessados no seu ambiente de desenvolvimento local através do protocolo HTTPS.

Já se você precisar ser mais específico, pode incluir a seguinte linha no arquivo v3.ext do Apache. Com ela somente o site determinado poderá ser acessado via https.

DNS.2 = meusite.com.br

4. Gerar o certificado utilizando o makecert.bat do Apache

Agora chegou a hora de gerar o certificado SSL. Para isso, vamos usar o arquivo de processamento em lote makecert.bat. Este arquivo contém uma sequência de comandos que irão gerar o certificado digital de segurança. Mas antes de executar o makecert.bat, precisamos verificar uma coisa.

Abra o arquivo makecert.bat em C:/xampp/apache e acrescente -sha256 -extfile v3.ext no final da linha com o seguinte conteúdo:

bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 500

Feito isso, salve o arquivo e feche. O arquivo deve ficar com o seguinte conteúdo:

@echo off
set OPENSSL_CONF=./conf/openssl.cnf

if not exist .\conf\ssl.crt mkdir .\conf\ssl.crt
if not exist .\conf\ssl.key mkdir .\conf\ssl.key

bin\openssl req -new -out server.csr
bin\openssl rsa -in privkey.pem -out server.key
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 500 -sha256 -extfile v3.ext

set OPENSSL_CONF=
del .rnd
del privkey.pem
del server.csr

move /y server.crt .\conf\ssl.crt
move /y server.key .\conf\ssl.key

echo.
echo -----
echo Das Zertifikat wurde erstellt.
echo The certificate was provided.
echo.
pause

Executando o makecert.bat

Para executar o arquivo makecert.bat, abra o prompt de comando, acesse o diretório C:/xampp/apache e execute o comando makecert.

Depois de executar o comando makecert, aparecerá na tela várias perguntas que você precisará responder. Segue abaixo a sequência de perguntas e respostas dados na execução.

Generating a RSA private key
……………………………………………..+++++
……………………………………………………………………………+++++
writing new private key to ‘privkey.pem’
Enter PEM pass phrase:CRIAR UMA SENHA

Verifying – Enter PEM pass phrase:Redigitar a SENHA

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
 
If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Estado
Locality Name (eg, city) []:Cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nome
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Nome
Email Address []:email@email.com 

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Enter pass phrase for privkey.pem: Digitar novamente a SENHA
writing RSA key
Signature ok
subject=C = BR, ST = Parana, L = Londrina, O = WebiG, CN = localhost, emailAddress = lisanias@hotmail.com
Getting Private key
Não foi possível encontrar C:\xampp\apache.rnd
    1 arquivo(s) movido(s).
    1 arquivo(s) movido(s). 

—–
Das Zertifikat wurde erstellt.
The certificate was provided. 

Pressione qualquer tecla para continuar. . .

Com o certificado SSL gerado, verifique se os arquivos foram movidos para a mesma pasta indicada nas diretrizes SSLCertificate das configurações do VirtualHost, no nosso caso C:\xampp_7.2.4\apache\conf\. 

São pelo menos dois arquivos, o server.key e o server.crt. Em algumas situações também pode ser gerado o arquivo server.rnd

Se estes arquivos não estiverem na pasta indicada no VirtualHost, então eles devem estar nas pastas /conf/ssl.ctr, /conf/ssl.csr e /conf/ssl.key. Então copie os arquivos e cole na pasta correta ou então altere as diretrizes SSLCertificate de cada arquivo para apontar para as suas respectivas pastas.

5. Instalar o certificado SSL no Windows

Com o certificado criado, precisamos informar ao Windows e ao navegador que ele é um certificado confiável. Para isso vá até pasta C:\xampp_7.2.4\apache\conf\ e clique no arquivo server.crt. Será exibida a seguinte tela do Windows.

Certificado SSL Instalação do certificado no Windows tela 1

Clique em “Instalar Certificado” e avance. Depois, se for o caso,  selecione “Usuário Atual” e avance novamente. Uma nova janela será exibida.

Selecione “Colocar todos os certificados no repositório a seguir” e clique em “Procurar”. Na nova janela que abrir selecione “Autoridades de Certificação Raiz Confiável” e clique em “Ok”. Depois, clique em “Avançar” e finalmente em “Concluir“.

Certificado SSL Instalação do certificado SSl no Windows tela 2

Se for exibida uma janela solicitando que você confirme a instalação do certificado digital de segurança, responda “Sim”. Pronto, o certificado SSL já está instalado e o Windows será capaz de verificar sua validade.

6. Reiniciar o Apache

Para terminar o processo, reinicie o Apache no Painel Administrativo do XAMPP. Ou seja, pare e inicie novamente o Apache.

Se tudo estiver correto, ao acessar o endereço https://meusite.com.br no navegador (com https), o site deverá ser carregado com o cadeado ao lado da barra de endereço acionado.

7. Verificar tudo está correto

Para ter certeza de que o site está configurado corretamente e acessível, com o certificado SSL e acessível através do HTTPS, tente acessar o site com o Apache desligado. Se o site abrir normalmente significa que algo está errado e você precisa rever as configurações no arquivo hosts, pois você está acessando o site fora do seu ambiente de desenvolvimento. 

Por outro lado, se o site não abrir e você receber a mensagem no navegador de que não foi possível acessar o site, significa que está tudo certo já que o navegador está tentando carregar o site no ambiente de desenvolvimento mas o Apache está desligado.

Certificado SSL site inacessível Apache desligado

Depois de verificar que o site não está acessível com o Apache desligado, ligue o Apache e tente acessar o site novamente. Se tudo estiver certo, você conseguirá acessar o site instalado no seu ambiente de desenvolvimento. Para saber se o certificado SSL está funcionando corretamente, acesse-o através da porta 443 utilizando o certificado HTTPS.

Considerações finais:

Neste artigo vimos passo a passo, como configurar o um site no Xampp para ser acessado pelo protocolo HTTPS na porta 443 e como configurar e instalar o certificado SSL para este site. 

Tratamos o assunto da forma mais detalhada possível mas o assunto é muito complexo por isso aconselhamos que em caso de dúvida, você consulte a documentação do Apache.

E com isso terminamos mais este artigo. Espero que o artigo seja útil e que ajude a resolver as dúvidas de muita gente. Até o próximo artigo.


Jorge Rodrigues

Webmaster e desenvolvedor web full-stack. Self-employed na Concepção Web. Técnico em processamento de dados, com especialização em Programação de Computadores, Redes Locais e em Protocolo e Cabeamento Estruturada de Redes Locais pela Universidade Estácio de Sá.

More Posts

Olá, antes de continuar, precisamos que você forneça algumas informações de contato.

Desenvolvido por Concepção Web.