Como criar Certificados e SSL válidos para sites em desenvolvimento no XAMPP/ GNU/Linux – Parte 2

Nesta continuação, vamos explicar a criação do Certificado SSL para um domínio e seus subdomínios.

Na 1ª Parte desta Nota Técnica, expliquei a criação das credenciais para uma Autoridade Certificadora poder gerar os arquivos de certificados do domínio. Estes arquivos, Chave Privada e Informações da Certificadora, foram salvos na pasta “CA” do nosso diretório de configuração do XAMPP.

XamppConfig
└── ssl
    └── CA
        ├── certificadora.key
        └── certificadora.pem        
├── httpd-vhosts.conf
└── httpd-vhosts-ssl.conf

Este diretório XamppConfig é de fácil acesso e dentro da minha pasta de trabalhos. Ele não está no diretório de instalação do XAMPP, para deixar bem claro isto.

Muito bem, vamos iniciar os passos para a criação de um certificado para um domínio chamado: www.meudominio.local

Criação do arquivo CSR e Chave Privada do domínio

Para a criação do certificado SSL para o servidor Apache, é necessário três arquivos:

  1. Um arquivo com a extensão .csr, acrônimo para Certificate Signing Request ;
  2. Uma chave pública do seu domínio, e finalmente;
  3. Um arquivo texto com a configuração de dominio e subdominio.

No comando abaixo, irei criar os dois arquivos, acrescentando as Informações do Domínio no modo Não Interativo.

sudo openssl req -new -nodes -out meudominio.local.csr -newkey rsa:2048 -keyout meudominio.local.key  -subj "/C=BR/ST=RJ/L=Rio de Janeiro/O=Vinicius Braga/OU=Web Dev/CN=meudominio"

Como explicado na 1ª Parte desta Nota Técnica, você pode customizar as informações respeitando o que elas devem representar, mas deve atentar para o Nome Comum (Common Name/CN), ele deve ser somente o nome principal do domínio.

Depois de rodar o comando anterior, são criados dois arquivos na nossa pasta ssl: meudominio.local.csr e meudominio.local.key

Antes de criarmos o certificado, falta ainda criarmos um arquivo de configuração especial que irá nos ajudar a definir o nosso certificado para o domínio e subdomínios. Vamos colocar as informações abaixo neste arquivo e dar o nome do arquivo de meudominio.v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = meudominio.local
DNS.2 = *.meudominio.local

Neste arquivo de configuração só precisamos ficar atentos em colocar o nome principal do domínio, neste exemplo, “meudominio”. Observe que o segundo DNS libera o Certificado cobrir todos os subdominios, caso a gente precise dele. Bem, agora podemos rodar o comando de criação do certificado:

sudo openssl x509 -req -in meudominio.local.csr -CA CA/certificadora.pem -CAkey CA/certificadora.key -CAcreateserial -out meudominio.local.crt -days 1825 -sha256 -extfile meudominio.v3.ext

E com o resultado do comando, nós obtemos o certificado e a nossa pasta fica assim:

XamppConfig
└── ssl
    ├── meudominio.local.csr
    ├── meudominio.local.crt
    ├── meudominio.local.key
    └── CA
        ├── certificadora.key
        └── certificadora.pem        
├── httpd-vhosts.conf
└── httpd-vhosts-ssl.conf

Agora precisamos copiar o arquivo .crt e .key para as pastas do Xampp

sudo cp meudominio.local.crt /opt/lampp/etc/ssl.crt/
sudo cp meudominio.local.key /opt/lampp/etc/ssl.key/

E finalmente criar o config do VHost com SSL como no exemplo abaixo:

<VirtualHost meudominio.local:443>
    ServerName meudominio.local
    DocumentRoot "/home/nomeusuario//Workspace/meudominio/site"

    ErrorLog "/home/nomeusuario/Workspace/XamppConfig/logs/meudominio-local-error_log"
    CustomLog "/home/nomeusuario/Workspace/XamppConfig/logs/meudominio-local-access_log" common

    <Directory "/home/nomeusuario/Workspace/meudominio/site">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLCertificateFile    "/opt/lampp/etc/ssl.crt/meudominio.local.crt"
    SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/meudominio.local.key"

    SSLOptions +StrictRequire

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
</VirtualHost>

Sobre a “config” deste VHost, lembre-se de escrever corretamente o caminho (Path) até a pastas do site. E você deve perceber que eu não instalo o site dentro do servidor do Xampp, gosto de organizar isto num diretório de trabalho.

Conclusão Final

Certamente tem mais detalhes até a etapa de funcionamento pleno, como configurar o carregamento do “httpd-vhosts-ssl.conf” e outros passos. Mas isto é fora do escopo principal da explicação desta Nota Técnica. De qualquer forma, está tudo aqui.

Deixe o seu comentário e sugestão caso tenha sentido falta de algum detalhe, até a próxima.

Deixe um comentário

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

Topo da Página