Certificado TLS/SSL sem avisos no navegador para demos no Windows Server 2022 e IIS

Quer evitar o constrangimento do aviso de “conexão não segura” em demos com IIS, API REST e SQL Server no Windows Server 2022? Este guia prático mostra, com passos claros, como conseguir navegação segura sem pop‑ups, dentro e fora de ambientes controlados.

Índice

Visão geral do problema

O cenário é típico de equipes de pré‑vendas e profissionais de serviços: um servidor Windows Server 2022 em workgroup hospeda um site no IIS, uma API REST e o SQL Server. As demos podem ocorrer em diferentes clientes, redes e dispositivos — laptops do seu domínio, máquinas do domínio do cliente e smartphones conectados ao Wi‑Fi local. O desejo é legítimo: usar TLS/SSL com um certificado que não gere alertas nos navegadores dos visitantes.

A pergunta central costuma surgir: “basta criar um certificado autoassinado?” A resposta direta é não. Os navegadores só confiam automaticamente em certificados que encadeiam até uma Autoridade Certificadora (AC) reconhecida e incluída na loja de raiz do dispositivo. Um certificado autoassinado é, por definição, desconhecido para o dispositivo do cliente e, portanto, gerará aviso, a menos que você instale sua raiz manualmente em cada dispositivo.

Resposta curta e objetiva

Não existe certificado autoassinado universalmente aceito por navegadores em dispositivos que você não controla. Para eliminar o aviso sem pedir nada ao cliente, em demos “em qualquer lugar”, use um certificado emitido por uma AC pública para um FQDN sob um domínio seu e garanta que esse nome resolva para o IP do servidor no local da demonstração. Se o ambiente for totalmente controlado, é viável utilizar uma AC privada e distribuir sua raiz aos dispositivos participantes.

Caminhos viáveis

Cenário universal com autoridade pública

Este é o caminho recomendado para demos em ambientes variados, onde você não pode exigir instalação de certificados nos dispositivos dos convidados.

  • Use um FQDN sob seu domínio, por exemplo, demo.suaempresa.com. Evite nomes locais (como srv01 ou *.local) e evite IPs na URL.
  • Emita o certificado em uma AC pública (por exemplo, via ACME/Let’s Encrypt ou comercial) e leve um PFX com a cadeia completa para instalar no IIS.
  • Garanta a resolução DNS do FQDN para o IP do servidor no local da demo. Isso pode ser feito com split‑DNS na rede do evento, DNS local, um pequeno appliance de DNS ou, em último caso, via ajustes temporários de hosts em máquinas que você controla.
  • Vincule o certificado no IIS no binding https do site, usando SNI quando houver mais de um host no mesmo IP.
  • Se a API REST não estiver no IIS, padronize o certificado no front‑end (por exemplo, um reverse proxy no próprio IIS, ARR ou outro gateway) para que clientes externos vejam a mesma identidade do servidor.

Vantagens: funciona “sem conversa” em praticamente todos os dispositivos. Desafios: exige domínio próprio e um processo de renovação (ex.: 90 dias em ACME).

Cenário controlado com autoridade privada

Este caminho funciona muito bem em redes internas, treinamentos e PoCs com público limitado, quando você pode instalar a raiz da sua AC privada em cada dispositivo participante.

  • Crie sua AC privada (Windows AD CS em modo Standalone, step‑ca ou OpenSSL).
  • Distribua e confie a raiz em Windows, macOS, iOS e Android. Nos celulares, é comum instalar um perfil e ativar confiança explícita.
  • Emita um certificado de servidor com Subject Alternative Name para todos os nomes que serão usados na demo.
  • Vincule no IIS e nos demais serviços que expõem TLS (API, SQL Server se aplicável).
  • Remova a raiz dos dispositivos do cliente após a sessão, quando a confiança temporária não fizer mais sentido.

Vantagens: independe de Internet e de domínio público. Desafios: demanda logística de instalação e não escala para demos abertas.

Tabela de decisão rápida

SituaçãoRecomendaçãoPor quê
Demos em clientes variados, dispositivos heterogêneosAC pública + FQDN seu + split‑DNSElimina avisos sem tocar nos dispositivos do cliente
Laboratório interno, público controladoAC privada + distribuição da raizFunciona sem Internet; controle total da confiança
Serviços múltiplos no mesmo hostCertificado com SAN abrangente ou wildcardSimplifica gerenciamento e bindings
Servidor sem acesso à InternetEmissão antecipada com DNS‑01 e transporte do PFXEvita expor portas e permite preparar tudo antes

Boas práticas universais

  • Inclua SAN no certificado. Apenas Common Name não basta para navegadores modernos.
  • Algoritmo e força: RSA 2048 ou superior, SHA‑256. Use EKU com Server Authentication.
  • Cadeia completa: sempre inclua os intermediários. Um PFX com cadeia evita erros de chain.
  • Correspondência de nome: o host acessado precisa estar no SAN do certificado.
  • Evite IPs na URL. Prefira nomes DNS. Certificados com IP nos SANs têm suporte limitado e complicam a vida em celulares.
  • Vigência compatível com a política da AC. Em AC pública, não extrapole limites de validade.
  • Split‑DNS no local do evento: garanta que demo.suaempresa.com resolva para o IP do servidor na rede onde a demo ocorrerá.
  • Proteja chaves privadas: armazene PFX com senha forte, limite acesso e apague cópias após a demo.

Passo a passo com autoridade pública

Preparação do domínio e do nome

  1. Escolha um FQDN sob seu domínio, por exemplo demo.suaempresa.com. Reserve também subdomínios para API, se desejar, como api.demo.suaempresa.com.
  2. Crie registros DNS públicos conforme o método de validação da AC. Para servidores que não estarão acessíveis de fora, prefira DNS‑01 e emita o certificado antes da visita ao cliente.

Emissão com ACME por DNS

Com o desafio DNS‑01, você comprova domínio adicionando um registro TXT no DNS público. Assim, o servidor de demo não precisa estar exposto à Internet. Depois de emitido, exporte o PFX contendo a cadeia intermediária.

Dica prática: mantenha um pipeline de renovação agendada. Se sua ferramenta ACME gerar PEMs, converta para PFX no Windows:

# Exemplo de conversão PEM -> PFX no Windows com PowerShell e OpenSSL instalado
Ajuste caminhos conforme seu ambiente
openssl pkcs12 -export -out C:\Certs\demo.pfx -inkey C:\Certs\privkey.pem -in C:\Certs\fullchain.pem -passout pass:SuaSenhaForte

Instalação e vinculação no IIS

  1. Importe o PFX no armazenamento Local Computer > Personal com senha.
  2. No IIS Manager, em Bindings do site, adicione https com o host demo.suaempresa.com e selecione o certificado correspondente. Ative SNI quando houver múltiplos hosts no mesmo IP.
  3. Certifique-se de que a cadeia aparece completa nas propriedades do certificado no MMC.

Garantia de resolução de nome na rede do cliente

O FQDN precisa apontar para o IP do seu servidor no local da demo. Você pode:

  • Configurar split‑DNS no roteador/servidor DHCP local;
  • Usar um pequeno servidor DNS local temporário (por exemplo, em uma VM que você leva);
  • Ajustar hosts apenas em máquinas sob seu controle (não funciona para celulares de convidados).

Validação rápida

# Windows PowerShell
Test-NetConnection demo.suaempresa.com -Port 443

Inspeção do certificado no Windows

certutil -urlfetch -verify "Cert:\LocalMachine\My<THUMBPRINT>"

Checagem de SNI e cadeia com OpenSSL (em uma máquina sua)

openssl s\_client -connect demo.suaempresa.com:443 -servername demo.suaempresa.com -showcerts 

Passo a passo com autoridade privada

Este método cria uma cadeia de confiança local (raiz e, opcionalmente, uma emissora) e emite certificados de servidor assinados por ela. O ponto crucial é a distribuição segura da raiz a todos os dispositivos que participarão da demo.

Criação de raiz e emissora com PowerShell

O script abaixo cria uma raiz, uma emissora e um certificado de servidor compatível com navegadores e SQL Server, incluindo SANs. Ajuste nomes, validade e caminhos conforme sua realidade.

# Executar em PowerShell elevado no Windows Server 2022

Cria a raiz da AC (não inclui EKU; uso exclusivo para assinar)

\$root = New-SelfSignedCertificate `  -Type Custom`
-KeyUsage CertSign, CRLSign `  -KeyExportPolicy Exportable`
-KeySpec Signature `  -Subject "CN=Demo Root CA"`
-CertStoreLocation "Cert:\LocalMachine\My" `  -HashAlgorithm sha256`
-KeyLength 4096 \`
-TextExtension @("2.5.29.19={text}CA=true&pathlength=1")

Cria a emissora subordinada (opcional, mas recomendado)

\$issuing = New-SelfSignedCertificate `  -Type Custom`
-KeyUsage CertSign, CRLSign, DigitalSignature `  -KeyExportPolicy Exportable`
-KeySpec Signature `  -Subject "CN=Demo Issuing CA"`
-CertStoreLocation "Cert:\LocalMachine\My" `  -HashAlgorithm sha256`
-KeyLength 4096 `  -Signer $root`
-TextExtension @("2.5.29.19={text}CA=true&pathlength=0")

Emite o certificado de servidor com SANs

\$dns = @("demo.suaempresa.com","api.demo.suaempresa.com")
\$server = New-SelfSignedCertificate `  -DnsName $dns`
-KeyExportPolicy Exportable `  -KeySpec KeyExchange`
-Subject "CN=demo.suaempresa.com" `  -CertStoreLocation "Cert:\LocalMachine\My"`
-Signer \$issuing `  -NotAfter (Get-Date).AddYears(1)`
-HashAlgorithm sha256 \`
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")  # EKU Server Authentication

Exporta PFX com a cadeia intermediária

\$pwd = ConvertTo-SecureString 'SenhaBemForte' -AsPlainText -Force
Export-PfxCertificate -Cert \$server -FilePath C:\Certs\demo.pfx -Password \$pwd -ChainOption BuildChain

Exporta a raiz (para distribuição aos clientes)

Export-Certificate -Cert \$root -FilePath C:\Certs\DemoRootCA.cer 

Observações importantes:

  • Evite usar a raiz diretamente para assinar servidores. Prefira a emissora subordinada. Mantém a raiz mais protegida.
  • Use KeySpec KeyExchange no certificado de servidor para compatibilidade com SQL Server e sistemas legados.
  • Mantenha a validade do servidor razoável (por exemplo, um ano). Para ambientes temporários, validades curtas reduzem risco.

Distribuição da raiz nos clientes

PlataformaComo instalar e confiarObservações
WindowsAbra o Microsoft Management Console com o snap‑in de Certificates para o Computador Local e importe a raiz em Trusted Root Certification Authorities.Usuários sem privilégio admin não conseguem instalar na loja do computador. Planeje acesso.
macOSAbra o Keychain Access, importe a raiz no System e marque como Always Trust para SSL.É necessário informar a senha de administrador.
iOSInstale um perfil com a raiz e, depois, ative a confiança total em Ajustes > Geral > Sobre > Ajustes de Confiança de Certificado.Sem ativar a confiança, o Safari segue bloqueando.
AndroidInstale a CA em Configurações > Segurança > Instalar do armazenamento.Alguns apps não confiarão em CAs do usuário por políticas modernas. Navegadores costumam respeitar.

Para agilizar em um laboratório, hospede temporariamente o arquivo DemoRootCA.cer no próprio servidor por http (sem TLS) apenas dentro da rede isolada do evento, e forneça um QR Code para download local. Ao final, remova o arquivo e invalide o acesso.

Emissão com AD CS Standalone

Se preferir, instale a função Active Directory Certificate Services em modo Standalone no Windows Server em workgroup. A sequência típica é:

  • Adicionar o serviço de função Certification Authority e configurar uma Standalone Root CA ou uma Issuing CA.
  • Gerar um CSR para o servidor e usar certreq para solicitar e, depois, aceitar o certificado emitido.

Modelo de INF para certreq com SAN:

[Version]
Signature="$Windows NT$"

\[NewRequest]
Subject = "CN=demo.suaempresa.com"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
HashAlgorithm = sha256
SMIME = FALSE
RequestType = PKCS10

\[Extensions]
; EKU Server Authentication
2.5.29.37 = "{text}"
continue = "1.3.6.1.5.5.7.3.1"

; Subject Alternative Name
2.5.29.17 = "{text}"
continue = "dns=demo.suaempresa.com&dns=api.demo.suaempresa.com" 
# Gera o CSR
certreq -new C:\Req\server.inf C:\Req\server.req

Submete e recebe o certificado da AC privada
certreq -submit C:\Req\server.req C:\Req\server.cer

Instala no repositório local e cria o PFX se desejar
certreq -accept C:\Req\server.cer

Integração com IIS, API REST e SQL Server

Vinculação no IIS

  • No site desejado, crie ou edite o binding https, informe o host name e selecione o certificado correto.
  • Ative SNI quando houver múltiplos hosts no mesmo IP para que cada host receba seu certificado próprio.
  • Se utilizar um reverse proxy no IIS com ARR, termine TLS no IIS e encaminhe as requisições em http para o serviço interno (offload de TLS), ou faça re‑encrypt end‑to‑end se necessário.

Protegendo uma API REST fora do IIS

Para serviços em Kestrel, Http.sys ou containers:

  • Recomenda‑se terminar TLS em um front‑end (IIS com ARR, Nginx, HAProxy) e manter o certificado unificado.
  • Se expor TLS direto do processo, garanta que o nome usado pelos clientes exista no SAN do certificado e que a cadeia esteja instalada no store correto.

Configurando TLS no SQL Server

  • Instale o certificado em Local Computer > Personal com chave privada acessível ao serviço do SQL Server.
  • Abra o SQL Server Configuration Manager, vá em SQL Server Network Configuration > Protocols, acesse as propriedades, guia Certificate, selecione o certificado cujo SAN ou CN corresponde ao nome que os clientes usam para conectar.
  • Opcionalmente, habilite Force Encryption e reinicie o serviço.
  • Nos clientes, use Encrypt=True; TrustServerCertificate=False; na connection string. Com um certificado válido e nome correspondente, a conexão será estabelecida sem aviso.

Dica de teste rápido:

# Teste de conexão criptografada
sqlcmd -S demo.suaempresa.com -N -l 30

Verificações e solução de problemas

  • Erro de nome: o navegador indica que o nome não corresponde. Verifique se o SAN inclui exatamente o host acessado.
  • Cadeia incompleta: alguns clientes exibem erro de emissor desconhecido, apesar de a raiz ser confiável. Quase sempre é intermediário faltando. Reexporte seu PFX com a cadeia completa.
  • Chave inacessível no IIS: se o certificado não aparece na lista, importe o PFX em Local Computer > Personal e confira as permissões da chave privada.
  • Android não confia: apps modernos podem rejeitar CAs do usuário. Em navegadores, em geral funciona. Para apps, use AC pública ou política de network security config.
  • Navegador ainda alerta após instalar raiz no iOS: é preciso ativar confiança total manualmente nas configurações do aparelho.
  • Conflitos de SNI: dois bindings com o mesmo host e porta podem causar seleção de certificado inesperada. Revise bindings e host headers.

Checklist para o dia da demo

  • Certificado válido para o FQDN, com cadeia completa.
  • DNS local apontando o FQDN para o IP do servidor na rede do cliente.
  • Porta quatro quatro três liberada entre clientes e servidor.
  • Binding https no IIS com SNI, se aplicável.
  • Se usar AC privada, raiz instalada e confiável em todos os dispositivos participantes.
  • Testes prévios em um laptop de convidado e em um smartphone para validar experiência real.
  • Plano de remoção da raiz ao término, quando usar AC privada em ambiente de cliente.

Dicas para redes desafiadoras

  • Captive portals: conecte‑se primeiro ao Wi‑Fi, autentique no portal em http, e só depois mude o DNS local do seu dispositivo para o DNS de split‑horizon da demo.
  • Ambiente sem DHCP gerenciável: leve um travel router próprio para isolar a rede da demo, com DNS local configurado.
  • Sem domínio público: use AC privada e distribuição de raiz, mas alinhe com antecedência o procedimento de instalação com o cliente.

Perguntas frequentes

Posso usar um certificado autoassinado diretamente no servidor e esperar que não haja alertas?
Não, a menos que você instale manualmente a raiz que assina esse certificado em cada dispositivo que acessará a demo.

Um wildcard público resolve para vários serviços?
Sim, um *.demo.suaempresa.com cobre subdomínios como api.demo.suaempresa.com. Ainda assim, evite usá‑lo em produção sem política adequada de emissão e rotação, pois amplia o impacto de uma chave comprometida.

Por que evitar IP no certificado?
Além de ser pouco amigável, nem todos os clientes dão suporte consistente a IPs em SANs, e você perde a flexibilidade de reendereçar serviços via DNS.

Posso desabilitar verificações no navegador para “dar certo”?
Não é recomendável. Pede passos manuais, passa má impressão e reduz segurança. O objetivo aqui é just works.

Como renovo certificados ACME se o servidor não tem Internet?
Planeje emissões por DNS‑01 antecipadas e leve o PFX renovado. Automatize em uma máquina com acesso ao DNS público da sua zona.

Modelo de plano prático por cenário

Plano para demos em clientes variados

  1. Registrar demo.suaempresa.com e planejar SANs adicionais conforme necessário.
  2. Automatizar emissão ACME por DNS‑01 antes de cada ciclo de demos.
  3. Exportar PFX com cadeia; guardar em C:\Certs com senha forte.
  4. No local da demo, prover DNS local que resolve demo.suaempresa.com para o IP do servidor.
  5. Importar o PFX, vincular no IIS, testar SNI e realizar smoke tests do site, API e SQL.

Plano para laboratório interno controlado

  1. Implantar AC privada com raiz e emissora.
  2. Emitir certificados de servidor com SAN para todos os hosts do laboratório.
  3. Distribuir e confiar a raiz nos dispositivos do time por GPO, MDM ou instalação assistida.
  4. Padronizar cadeia e nomes DNS em todos os serviços, incluindo SQL Server.

Erros comuns e como evitar

  • Usar apenas CN e esquecer SAN. Resultado: aviso de nome inválido. Sempre inclua SANs.
  • Não incluir intermediários no PFX. Resultado: alguns clientes falham na validação da cadeia.
  • Vincular https sem SNI quando há mais de um host no mesmo IP. Resultado: certificado “troca” conforme o site.
  • Emitir para um nome e acessar por outro (ex.: emitir para demo.suaempresa.com e acessar por srv01). Mantenha consistência.
  • Chave privada inacessível ao serviço. Confira permissões e reimporte o PFX se necessário.

Resumo executivo

Para demos em qualquer ambiente, a rota mais confiável é certificado público para um FQDN sob seu domínio, com split‑DNS no local. Em ambientes controlados, uma AC privada resolve, desde que você instale a raiz nos dispositivos participantes. Em todos os casos, cuide dos SANs, da cadeia completa e dos bindings no IIS. Assim você elimina os avisos, demonstra profissionalismo e mantém a segurança em dia.

Índice