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.
- Incluir o domínio no arquivo hosts do Windows
- Criar o VirtualHost (nas portas 80 e 443)
- Incluir o domínio no arquivo v3.ext do Apache
- Gerar o certificado utilizando o makecert.bat do Apache
- Instalar o certificado SSL no Windows
- Reiniciar o Apache
- 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.
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.
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“.
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.
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.