Repository navigation
certificado automatico
Home > HTTPS > Certificado automático
Important
Em desenvolvimento (1.3). Ainda não está numa versão lançada e pode mudar.
Em uma frase: um plugin que cria um certificado autoassinado, entrega ao motor no formato que ele quer, liga o HTTPS e renova antes de vencer.
Você vai precisar: RAL 1.3. Nada de openssl. O motor ainda precisa do que
sempre precisou para HTTPS (DLLs do OpenSSL no Indy/fpHTTP, msquic.dll...; ver
HTTPS no motor).
uses RALSelfSigned;
RALSelfSignedPlugin1.Server := Servidor; // ou Servidor.AddPlugin(...)
Servidor.Active := True; // já sobe em https
ShowMessage(RALSelfSignedPlugin1.Fingerprint); // o que o cliente vai fixarNo cliente, aceite esse certificado pela impressão digital: Cliente.SSL.Pins.Add(...)
(HTTPS no cliente).
| O motor já tem | O plugin |
|---|---|
| um certificado de uma CA | não mexe |
| um autoassinado válido | usa e fica de olho na validade |
| um autoassinado vencido ou perto de vencer | renova (mesmo nome, nova chave) |
| nada | cria os arquivos na pasta Folder (ou reaproveita os que já estão lá) e liga o HTTPS |
| motor sem HTTPS próprio (CGI, UniGUI) | nada (State = sssUnsupported) |
Com o servidor rodando, uma thread confere a cada CheckInterval e renova
RenewBeforeDays antes de vencer, sem parar o servidor (no Sagui as conexões
abertas caem na troca).
| Propriedade | Padrão | O que é |
|---|---|---|
HostNames |
localhost, 127.0.0.1, ::1 e o nome da máquina |
nomes e IPs pelos quais os clientes acessam, um por linha. Ponha o IP da rede |
ValidDays |
365 | validade |
RenewBeforeDays |
30 | quantos dias antes renovar |
AutoRenew / CheckInterval
|
ligado / 3600 s | renovação automática |
Folder |
%LOCALAPPDATA%\PascalRAL\certs (Linux: ~/.config/pascalral/certs) |
onde ficam os arquivos. Não ponha ao lado do .exe se servir arquivos |
FileName |
ralselfsigned-<porta> |
nome dos .crt, .key e .pfx
|
KeyBits |
2048 | tamanho da chave RSA |
Um cliente que fixou a impressão antiga recusa a nova. O evento
OnCertificateRenewed(Antiga, Nova) avisa; e SSL.Pins aceita várias linhas para
o mesmo servidor: distribua a nova junto com a antiga enquanto os clientes se
atualizam. Os 30 dias de RenewBeforeDays são essa janela.
Exportar para um arquivo (SHA-256, SHA-1, validade):
RALSelfSignedPlugin1.ExportFingerprint('C:\compartilhado\servidor.fingerprint');vGen := TRALSelfSignedPlugin.Create(nil);
vGen.Folder := 'C:\certs';
vGen.FileName := 'api';
vGen.HostNames.Text := 'api.local'#13'192.168.1.10'#13'localhost';
vGen.Generate; // api.crt, api.key e api.pfx
vGen.Free;- mORMot2 no Windows: precisa de Windows 10 1709 / Server 2019 ou mais novo.
-
mORMot2
smHttpSys: grava no repositório do Windows; o programa precisa rodar como administrador (como onetsh). A reserva da URL (netsh http add urlacl) continua sendo sua. - Ligado a um servidor que já está rodando em
http, reinicia emhttps.
| Evento | Quando |
|---|---|
OnCertificateCreated(Impressão) |
criou um certificado novo |
OnCertificateRenewed(Antiga, Nova) |
renovou |
OnError(Exceção) |
falhou; State = sssFailed e LastError guarda a mensagem |
Começar
Servidor
- Rotas e parâmetros
- Ler o pedido e responder
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
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