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.

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 []:webmaster@teste.com.br
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 emailAddress=contato@seudominio.com.br 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).
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.)
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.