Repository navigation
criar certificado
Home > HTTPS > Criar um certificado
Em uma frase: gerar o par certificado + chave que o servidor usa no HTTPS: autoassinado (rede interna, por IP) ou do Let's Encrypt (domínio público).
Tip
Na 2.0 🚧 o certificado automático cria e renova o
autoassinado sozinho, sem openssl.
O openssl vem com o Git para Windows (C:\Program Files\Git\usr\bin\openssl.exe)
e já está no Linux. Um comando só (no Prompt do Windows; no PowerShell troque ^
por `; no Linux, por \):
openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -nodes ^
-keyout key.pem -out cert.pem ^
-subj "/CN=meuservidor" ^
-addext "subjectAltName=DNS:meuservidor,DNS:localhost,IP:127.0.0.1,IP:192.168.1.10" ^
-addext "keyUsage=digitalSignature,keyEncipherment" ^
-addext "extendedKeyUsage=serverAuth"| Parte | O que faz | Mude quando |
|---|---|---|
-days 3650 |
vale 10 anos | quiser trocar com mais frequência |
-nodes |
a chave fica sem senha (o servidor lê sem perguntar) | quiser senha: tire, e preencha a senha no motor |
subjectAltName |
os nomes e IPs que valem. O mais importante | sempre: liste todo endereço que o cliente usa |
Warning
IP se escreve IP:192.168.1.10, nome se escreve DNS:servidor. DNS:192.168.1.10
não funciona e é o erro mais comum. Sem subjectAltName, Windows, Android e
navegadores recusam o certificado.
Resultado: cert.pem (certificado, pode distribuir) e key.pem (chave, nunca
sai do servidor).
:: a impressão digital, para o SSL.Pins do cliente
openssl x509 -in cert.pem -noout -fingerprint -sha256
:: o .pfx, para o mORMot2 no Windows e para o http.sys
openssl pkcs12 -export -inkey key.pem -in cert.pem -out cert.pfx -passout pass:minhasenha
:: conferir validade e nomes
openssl x509 -in cert.pem -noout -dates -ext subjectAltName
:: o que um servidor no ar está entregando
openssl s_client -connect 192.168.1.10:9988 -showcertsWindows antigo (antes do 10) recusa o .pfx? Acrescente
-keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1 ao comando do .pfx.
Precisa de um domínio apontando para a máquina (sem domínio, um DNS gratuito como o no-ip serve) e da porta 80 livre durante a geração.
- Instale o certbot.
- No Prompt como administrador:
certbot certonly --standalone - Informe o domínio quando pedir. Os
.pemficam emC:\Certbot\live\<domínio>\(fullchain.pem= certificado,privkey.pem= chave).
sudo snap install --classic certbot # precisa do snapd
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --standaloneOs arquivos ficam em /etc/letsencrypt/live/<domínio>/.
sudo certbot renew # Linux
certbot renew # Windows, como administradorDepois de renovar, reinicie o servidor RAL (ou o nginx) para ele ler o arquivo novo.
| O que acontece | O que fazer |
|---|---|
| certbot: porta 80 ocupada | pare o serviço que usa a porta durante a geração, ou use certbot certonly --webroot
|
| Windows: nada parece usar a porta 80 e mesmo assim dá erro | serviços do sistema (IIS, World Wide Web Publishing) podem segurá-la; pare-os durante a geração |
| o cliente recusa por nome | faltou o nome/IP no subjectAltName
|
| o navegador avisa "não seguro" | normal para autoassinado; use Let's Encrypt para site público |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Resposta em fluxo 🚧
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar