Configuração de Serviço HTTPS em Servidor na Nuvem sem Aquisição de Domínio

Pré-requisitos

Servidor na Nuvem

Provisione uma instância de servidor na nuvem com IP público elástico, utilizando sistema operacional Ubuntu. Configure as regras de firewall ou grupo de segurança para permitir tráfego nas portas essenciais:

  • SSH: porta TCP 22
  • HTTP: porta TCP 80
  • HTPS: porta TCP 443
  • ICMP: para diagnóstico de rede

Recomenda-se expor apenas as portas estritamente necessárias, seguindo o princípio do menor privilégio.

Instalação do Servidor Web Caddy

Caddy é um servidor web e proxy reverso com configuração simplificada. Para instalá-lo no Ubuntu, execute:


sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Após a instalação, verifique o sucesso com:


caddy --version

A saída deve indicar a versão instalada, como v2.9.1.

Obtenção de Certificado SSL para IP Público

Para habilitar HTTPS em endereços IP sem domínio, é necessário obter um certificado SSL/TLS válido. O serviço ZeroSSL oferece certificados gratuitos com validade de 90 dias, renováveis mediante o mesmo processo.

Geração do Certificado

Siga estas etapas para preparar a verificação de propriedade do IP:

  1. Crie um servidor HTTP básico com Caddy para servir o arquivo de validação.
  2. Confirme que a porta 80 não está em uso:

sudo lsof -i :80
  1. Escreva um arquivo de configuração Caddyfile para HTTP explícito:

http://203.0.113.5 {
    root * /var/www/html
    file_server
}

Substitua 203.0.113.5 pelo IP público do seu servidor.

  1. Crie o diretório de validação e copie o arquivo fornecido pelo ZeroSSL:

sudo mkdir -p /var/www/html/.well-known/pki-validation
sudo cp /caminho/para/arquivo_validacao.txt /var/www/html/.well-known/pki-validation/
  1. Intrerompa qualquer instância do Caddy e inicie manualmente:

sudo systemctl stop caddy
sudo systemctl disable caddy
sudo caddy stop
sudo caddy start
  1. Valide o acesso ao arquivo usando curl:

curl -X GET http://203.0.113.5/.well-known/pki-validation/arquivo_validacao.txt

Após a verificação bem-sucedida no portal do ZeroSSL, baixe os três arquivos de certificado: certificate.crt, ca_bundle.crt e private.key.

Preparação dos Arquivos de Certificado

Armazene os certificados em um diretório seguro no servidor:


sudo mkdir -p /etc/caddy/ssl
sudo cp certificate.crt /etc/caddy/ssl/
sudo cp ca_bundle.crt /etc/caddy/ssl/
sudo cp private.key /etc/caddy/ssl/
sudo chmod 600 /etc/caddy/ssl/*
sudo chown -R root:root /etc/caddy/ssl/

Combine o certificado e a cadeia de confiança em um único arquivo:


cat /etc/caddy/ssl/certificate.crt /etc/caddy/ssl/ca_bundle.crt > /etc/caddy/ssl/cadeia_completa.crt

Verifique a integridade da cadeia de certificados e a correspondência com a chave privada:


openssl verify -CAfile /etc/caddy/ssl/ca_bundle.crt /etc/caddy/ssl/certificate.crt
openssl x509 -noout -modulus -in /etc/caddy/ssl/certificate.crt | openssl md5
openssl rsa -noout -modulus -in /etc/caddy/ssl/private.key | openssl md5

Configuração do Servidor HTTPS

Atualize o arquivo Caddyfile para utilizar HTTPS com os certificados obtidos. A configuração deve incluir o nome de servidor padrão (SNI) para evitar erros de verificação.


{
    default_sni 203.0.113.5
}
https://203.0.113.5 {
    tls /etc/caddy/ssl/cadeia_completa.crt /etc/caddy/ssl/private.key
    respond "Servidor HTTPS ativo!" 200
}

Reinicie o Caddy para aplicar as alterações:


sudo caddy stop
sudo caddy start

Teste a conexão TLS usando openssl ou curl:


openssl s_client -connect 203.0.113.5:443 -servername 203.0.113.5

O código de verificação deve ser 0 (ok). Para um teste completo:


curl -kv https://203.0.113.5/

A resposta deve incluir o cabeçalho TLS e o conteúdo definido na configuração.

Diagnóstico de Problemas

  • Porta 80 não responde: Verifique se o Caddyfile utiliza explicitamente o prefixo http:// e se o serviço systemd está desabilitado.
  • Falha ao iniciar o Caddy: Use sudo lsof -i :2019 para identificar conflitos de porta e garanta que apenas uma instância está em execução.
  • Erro de verificação de certificado (código 21): Inclua a diretiva default_sni no bloco global do Caddyfile com o IP do servidor.
  • Resposta 405 Method Not Allowed: Assegure-se de que os métodos de solicitação HTTP corrrespondem aos permitidos pelo servidor.

Tags: Caddy ZeroSSL SSL/TLS HTTPS Ubuntu

Publicado em 6-11 23:19 por Thomas