Como configurar o SSL no Xampp em Localhost

ssl no xampp

Aprenda a instalar o certificado SSL no Xampp para utilizar nos seus projetos, no WordPress em outras aplicações em localhost.

Este não irá servir para a web pois o certificado raiz(.pem) é autoassinado. Somente é possível usar localmente.



1 – Instalando o OpenSSL

1.1 – No Windows 10:

Baixe o Win64 OpenSSL e instale o programa e escolha para instalar na pasta C:\OpenSSL-Win64\.

Para o OpenSSL rodar em qualquer pasta precisamos configurar as variáveis de ambiente do sistema.

Abra o Painel de Controle, vá em Sistema / Configurações avançadas do sistema.

Na janela que abrir vá em Avançado, clique em Variáveis de ambiente e na nova janela que abrir, em Variáveis do sistema clique em Novo e crie uma nova variável com os dados abaixo. Se já estiver criada verifique se os dados estão corretos.

Nome da variável: OPENSSL_CONF

Valor da variável: C:\OpenSSL-Win64.\bin\cnf\openssl.cnf

Ainda em Variáveis do sistema clique duas vezes na variável Path, na janela que abrir clique em Novo e cole a linha abaixo:

C:\OpenSSL-Win64\bin 

Agora OpenSSL vai funcionar em qualquer pasta de usuário ou do Xampp, abrindo o Prompt de comando.

1.2 – Abrindo o Prompt de Comando no Windows 10:

Uma forma fácil de abrir o Prompt de Comando (CMD) na pasta desejada é abrir no Windows Explorer, navegue até pasta onde você vai gerar os arquivos, clicar na barra de endereço onde se vê o caminho das pastas, clicar na parte vazia e digitar cmd e Enter.

abrir o prompt de comando ja na pasta desejada

Pronto agora é só rodar os comandos que logo vou mostrar.

1.3 – No Ubuntu

Não é necessário instalar nada, o OpenSSL vem instalado por padrão.

Abra o Terminal e rode os comandos na pasta do usuário mesmo. No meus caso /home/carlos.



2 – Gerando Certificado Raiz de Autoridade (.pem)

Primeiro gere a chave RSA para criação de certificado Raiz:

openssl genrsa -des3 -out ca.key 4096

Depois gere a certificado Raiz a partir da chave RSA:

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem 

Se não funcionar use o comando abaixo:

$ openssl req -config "C:\OpenSSL-Win64\bin\openssl.cfg" -x509 -new -nodes -key ca.key -sha256 -days 1000 -out ca.pem 

Digite denovo a pass phrase (frase secreta) e de enter.

Preencha os dados conforme o exemplo abaixo, sem acentos:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Sao Paulo
Locality Name (eg, city) []:Sao Paulo
Organization Name (eg, company) [] Teste Certificadora Ltda
Organizational Unit Name (eg, section) []:Departamento de TI
Common Name (e.g. server FQDN or YOUR name) []:Teste Certificadora 
Email Address []:[email protected]

Não esqueça de Importar o arquivo ca.pem (CA) no(s) navegador(es) buscando nas configurações por Certificados.



3- Gerando os Arquivos do Certificado SSL

Você precisa criar 2 arquivos com informações para criação do certificado, isso substitui você escrever tudo na linha de comando.

3.1 – Arquivo file.csr.conf

Crie o arquivo file.csr.conf com os dados abaixo:

[req]
default_bits = 4096
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=BR
ST=Sao Paulo
L=Sao Paulo
O=Teste Informatica Ltda
OU=Departamento de TI
[email protected]
CN = seudominio.com.br

3.2 – Arquivo x509.conf

Agora crie o arquivo x509.conf com os dados abaixo:

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

[alt_names]
DNS.1 = *.seudominio.com.br
DNS.2 = seudominio.com.br

3.3 – Gerando o Certificado

Agora crie uma chave do certificado usando as configurações do file.csr.conf:

No Ubuntu use o comando:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:4096 -keyout server.key -config <( cat file.csr.conf ) 
No Windows use o comando:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:4096 -keyout server.key -config file.csr.conf 

3.4 – Gerando a assinatura CA

Solicite assinatura a partir da CA:

openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.crt -days 1024 -sha256 -extfile x509.conf 

Novamente você vai digitar a pass phrase (frase secreta) e a seguir e de enter.

Depois de gerado a assinatura, abra os arquivo gerados server.crt e ca.pem com um editor de texto (Gedit ou Bloco de Notas) e inclua no final do arquivo server.crt o conteúdo do arquivo ca.pem.

Se estiver usando o Windows 10 você deve gerar um novo arquivo de chave. No Windows o Apache pode não aceitar a pass phrase (frase secreta ). Use o server2.key se o Apache não ativar:

openssl rsa -in server.key -out server2.key 



4 – Configurando o Certificado SSL do Domínio no Xampp

Salve os arquivos gerados server.crt, server.crs, server.key ou server2.key e ca.pem na pasta /ssl como o nome do domínio em htdocs (X:/XAMPP/htdocs/ssl/seudominio.com.br).

Crie um virtual host no arquivo X:\XAMPP\apache\conf\extra\httpd-vhosts.conf no Windows, /opt/lampp/etc/extras/httpd-vhosts.conf no Ubuntu, para configurar o Xampp para usar a porta 443 e carregar os arquivos server.key ou server2.key, server.crt e ca.pem, como no modelo abaixo e salve o arquivo:

# no Ubuntu é só alterar X:/XAMPP/htdocs para /opt/lampp/htdocs/
<VirtualHost *:80>
    ServerName seudominio.com.br
    ServerAlias www.seudominio.com.br
    DocumentRoot "X:/XAMPP/htdocs/seudominio.com.br"
    <Directory "X:/XAMPP/htdocs/seudominio.com.br">
	Options +Indexes +Includes +FollowSymLinks +MultiViews
	AllowOverride All
	#Require local
	Require all granted
     </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerName seudominio.com.br
    ServerAlias www.seudominio.com.br
    DocumentRoot "X:/XAMPP/htdocs/seudominio.com.br"
    <Directory "X:/XAMPP/htdocs/seudominio.com.br">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
	Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile "X:/XAMPP/htdocs/ssl/seudominio.com.br/server.crt"
    SSLCertificateKeyFile "X:/XAMPP/htdocs/ssl/seudominio.com.br/server.key"
    #SSLCertificateChainFile "X:/XAMPP/htdocs/ssl/seudominio.com.br/ca.pem"
</VirtualHost>

Não se esqueça de importar o arquivo ca.pem nos navegadores que for usar (Chrome, Firefox ou Opera), fechar todas as janelas e deixar um site como o Google aberto e limpar o cache depois fechar o(s) navegador(es). Se esquecer este passo o SSL não vai funcionar no Virtual Host do seu domínio.



5 – Carregar o Domínio Localmente

Para o domínio funcionar localmente no Windows abra o arquivo C:\Windows\System32\drivers\etc\hosts em modo administrador e no Ubuntu, como Root, abra o arquivo /etc/hosts e coloque seu domínio como no exemplo abaixo.

127.0.0.1 seudominio.com.br
127.0.0.1 www.seudominio.com.br

No caso de precisar rodar seu site online comente as duas linhas com um #.


6 – Virtual hosts

No Ubuntu, abra como root o arquivo /opt/lampp/etc/httpd.conf, procure pelas duas linhas do exemplo abaixo e tire o # na segunda linha e salve o arquivo.

#Virtual hosts
Include etc/extra/httpd-vhosts.conf

E pronto. Agora reinicie e Apache para carregar seu domínio localmente, (https://www.seudominio.com.br).

2 thoughts on “Como configurar o SSL no Xampp em Localhost

  1. Bom dia,

    Caro colega fiz todo o passo a passo acima descrito. No servidor web-AWS (Windows Server 2019 ) funciona perfeito mas em ambiente externo apresenta esse erro no certificado (Este certificado raiz da autoridade de certificação não é confiável porque não está no repositório das autoridades de certificação raiz confiáveis.)

  2. Amigo esse procedimento é apenas para domínios em localhost. Já para acesso externo é necessário adquirir um certificado SSL do Lets Encrypt pelo menos. Talvez não tenha deixado claro no post. Vou corrigir. Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *