Certificado SSL gratuito no PRTG: como instalar o Let's Encrypt e renovar sozinho
Por Global Data Solutions atualizado 05/11/2026
Resumo: O PRTG aceita certificado Let's Encrypt sem custo: emita com o Posh-ACME validando pelo DNS, copie prtg.crt, prtg.key e root.pem para a pasta cert\ e reinicie o Core Server. A renovação roda sozinha por uma tarefa agendada como SYSTEM, e o próprio PRTG vigia o log do script e a validade do certificado.
O PRTG sai da instalação com um certificado autoassinado. Funciona, criptografa, mas todo navegador avisa que o site não é confiável, e quem acessa o painel aprende a clicar em “avançar mesmo assim” sem ler. Em uma ferramenta que existe para alertar, treinar a equipe a ignorar aviso é um problema. Comprar certificado resolve, mas desde 2026 os certificados públicos valem no máximo 200 dias, e o prazo vai continuar caindo. Pagar todo ano, ou todo semestre, por um certificado que precisa ser trocado à mão deixou de fazer sentido.
A Global Data, Gold Partner Paessler em São Paulo, usa Let’s Encrypt no próprio PRTG: certificado público, reconhecido por qualquer navegador, sem custo, e renovado por um script que roda sozinho. Este artigo mostra o procedimento que aplicamos no nosso ambiente, incluindo o erro que cometemos no primeiro teste.
Por que o certificado gratuito serve para o PRTG
Um certificado DV (validação de domínio) do Let’s Encrypt usa a mesma criptografia de um DV pago. A diferença dos pagos está em validação de empresa (OV/EV), garantia contratual e suporte, e nada disso muda a segurança da conexão com o painel do PRTG. O que o navegador exige é que o certificado seja emitido por uma autoridade que ele conhece e que o nome bata com a URL, e o Let’s Encrypt atende aos dois.
O prazo de validade também deixou de ser argumento contra o gratuito. O CA/Browser Forum, fórum das autoridades certificadoras e dos navegadores, aprovou a redução progressiva da validade máxima: 200 dias a partir de março de 2026, 100 dias em 2027 e 47 dias em 2029. Ou seja, o certificado pago de um ano não existe mais, e em pouco tempo todo certificado público vai exigir renovação automatizada, pago ou não. O Let’s Encrypt, com validade de 90 dias e renovação por script, já funciona do jeito que todos vão funcionar.
O que você precisa antes de começar
Três coisas, nessa ordem:
- Um nome DNS público apontando para o PRTG, como
prtg.suaempresa.com.brounoc.suaempresa.com.br. Não existe certificado público paraprtg.localnem para endereço IP. O nome precisa existir no DNS da internet, mesmo que o servidor só seja acessado por VPN: o registro pode apontar para um IP interno, o que importa é a autoridade certificadora conseguir consultar a zona. - O DNS do domínio em um provedor com API. O método deste artigo valida o domínio criando um registro TXT automaticamente (validação DNS-01). Isso evita abrir a porta 80 do servidor para a internet só para emitir certificado. A tabela mais abaixo mostra os provedores mais comuns e o que fazer quando o seu não tem API.
- PowerShell 5.1 ou superior no servidor do PRTG, que todo Windows Server já tem.
A ferramenta é o Posh-ACME, módulo PowerShell de código aberto que fala com o Let’s Encrypt e com a API do DNS. Escolhemos ele em vez de utilitários gráficos porque o PRTG não lê certificado da store do Windows: ele quer três arquivos em uma pasta específica, e um script faz isso de forma mais previsível do que uma interface.
Qual plugin usar para o seu DNS
O Posh-ACME tem mais de cem plugins de DNS. Os que aparecem com mais frequência nos clientes que atendemos:
| Onde está o DNS | -Plugin | -PluginArgs | Permissão mínima |
|---|---|---|---|
| Cloudflare | Cloudflare | @{ CFToken = (Read-Host 'Token' -AsSecureString) } | Token de API com Zone:Read + DNS:Edit, restrito à zona |
| AWS Route 53 | Route53 | @{ R53AccessKey = 'AKIA...'; R53SecretKey = (Read-Host 'Secret' -AsSecureString) } | Usuário IAM com route53:ListHostedZones, GetHostedZone, ListResourceRecordSets, ChangeResourceRecordSets |
| Azure DNS | Azure | @{ AZSubscriptionId = '...'; AZTenantId = '...'; AZAppCred = (Get-Credential) } (usuário = Application ID, senha = client secret) | App registration com função limitada a registros TXT da zona (Microsoft.Network/dnsZones/TXT/*) |
| Google Cloud DNS | GCloud | @{ GCKeyFile = 'C:\Scripts\sa.json' } | Service account com dns.changes.*, dns.managedZones.get/list, dns.resourceRecordSets.* |
| GoDaddy | GoDaddy | @{ GDKey = '...'; GDSecretSecure = (Read-Host 'Secret' -AsSecureString) } | Chave de API de produção; desligar o Domain Protection, que bloqueia TXT via API |
| Registro.br, Locaweb, HostGator, UOL Host e painéis sem API | nenhum direto | ver abaixo | — |
Para a última linha, que é o caso de boa parte das PMEs brasileiras, não é preciso transferir o domínio. Crie na zona atual um CNAME _acme-challenge.prtg apontando para um nome em uma zona que tenha API, por exemplo acme.suaempresa.net em uma conta gratuita da Cloudflare, e passe esse nome em -DnsAlias:
New-PACertificate prtg.suaempresa.com.br -AcceptTOS -Contact ti@suaempresa.com.br -Plugin Cloudflare -PluginArgs $cf -DnsAlias acme.suaempresa.net
O Posh-ACME grava o TXT na zona da Cloudflare, o Let’s Encrypt segue o CNAME e valida. O domínio principal continua onde está.
Passo 1: emitir o certificado
No servidor do PRTG, em um PowerShell como administrador. O exemplo usa Cloudflare; crie antes um token de API com permissão Zone:Read e DNS:Edit restrito à zona do domínio (nunca use a Global API Key).
Install-Module Posh-ACME -Scope AllUsers
Set-PAServer LE_PROD
$cf = @{ CFToken = (ConvertTo-SecureString 'SEU_TOKEN' -AsPlainText -Force) }
New-PACertificate prtg.suaempresa.com.br -AcceptTOS -Contact ti@suaempresa.com.br -Plugin Cloudflare -PluginArgs $cf
Em menos de um minuto o comando devolve o certificado emitido, com validade de 90 dias. Se o seu DNS não é Cloudflare, troque -Plugin e -PluginArgs pela linha correspondente da tabela acima. Os arquivos ficam na pasta de estado do Posh-ACME; para ver onde:
Get-PACertificate prtg.suaempresa.com.br | Select CertFile, KeyFile, ChainFile
Um detalhe que economiza dor de cabeça: na primeira tentativa, use Set-PAServer LE_STAGE em vez de LE_PROD. O ambiente de testes do Let’s Encrypt emite certificados que o navegador não aceita, mas valida todo o fluxo de DNS sem consumir o limite de emissões do ambiente real. Deu certo, troca para LE_PROD e repete.
Passo 2: instalar no PRTG
O PRTG lê o certificado de C:\Program Files (x86)\PRTG Network Monitor\cert\, e espera três arquivos com nomes fixos:
| Arquivo do PRTG | O que é | De onde vem no Posh-ACME |
|---|---|---|
prtg.crt | O certificado do servidor, em PEM | CertFile |
prtg.key | A chave privada, em PEM e sem senha | KeyFile |
root.pem | A cadeia de certificados intermediários | ChainFile |
Há dois caminhos. O PRTG Certificate Importer, utilitário gráfico da Paessler, recebe um PFX, converte, grava os três arquivos e reinicia o serviço. Serve para a primeira instalação, mas não serve para a renovação, porque é interface gráfica. Por isso preferimos fazer direto em PowerShell, que é o mesmo bloco que o script de renovação vai executar depois:
$c = Get-PACertificate prtg.suaempresa.com.br
$dst = 'C:\Program Files (x86)\PRTG Network Monitor\cert'
Copy-Item $dst "$dst.bak-$(Get-Date -f yyyyMMdd-HHmm)" -Recurse
Copy-Item $c.CertFile "$dst\prtg.crt" -Force
Copy-Item $c.KeyFile "$dst\prtg.key" -Force
Copy-Item $c.ChainFile "$dst\root.pem" -Force
Restart-Service PRTGCoreService
O reinício do PRTG Core Server derruba a interface web por cerca de um minuto e pausa a coleta nesse intervalo. Depois, abra o painel pelo nome DNS e confira o cadeado: a cadeia deve mostrar o Let’s Encrypt e a raiz ISRG Root X1. Se o PRTG não subir, o backup da pasta cert\ volta tudo ao estado anterior.
Aproveite para conferir, em Setup → System Administration → User Interface, se a URL do servidor está com o nome DNS novo. Senão, os links que chegam nas notificações continuam apontando para o nome antigo, e o certificado válido não aparece para quem clica no alerta.
Passo 3: renovação automática
É o passo que diferencia uma instalação que dura de uma que gera chamado a cada 60 dias. Antes do script, o que ele vai fazer, e um aviso.
O PRTG vai reiniciar quando renovar. O Core Server só carrega o certificado novo ao subir, então toda renovação termina com um Restart-Service PRTGCoreService. Durante cerca de um minuto o painel fica fora e a coleta pausa; os sensores retomam sozinhos depois. Isso acontece uma vez a cada 60 dias, de madrugada, no horário que você escolher na tarefa. Se o ambiente tem janela de manutenção definida, é ali que a tarefa deve rodar. Dois cuidados antes do script.
O Posh-ACME guarda conta, chaves e certificados no perfil do usuário que rodou a emissão. Uma tarefa agendada que rode como SYSTEM não enxerga esse perfil, e uma que rode com o usuário do administrador quebra na próxima troca de senha. A solução é mover o estado para uma pasta fixa com a variável de ambiente POSHACME_HOME e rodar a tarefa como SYSTEM:
[Environment]::SetEnvironmentVariable('POSHACME_HOME', 'C:\Scripts\posh-acme', 'Machine')
New-Item C:\Scripts\posh-acme -ItemType Directory -Force
Copy-Item "$env:LOCALAPPDATA\Posh-ACME\*" C:\Scripts\posh-acme -Recurse -Force
Essa pasta contém o token da Cloudflare e a chave privada do certificado. Restrinja o acesso a Administrators e SYSTEM.
O script de renovação, salvo em C:\Scripts\renova-prtg.ps1:
$ErrorActionPreference = 'Stop'
$fqdn = 'prtg.suaempresa.com.br'
$prtgDir = 'C:\Program Files (x86)\PRTG Network Monitor\cert'
$log = Join-Path $PSScriptRoot 'renova-prtg.log'
function Log($msg) { "$(Get-Date -f 'yyyy-MM-dd HH:mm:ss') $msg" | Tee-Object -FilePath $log -Append }
try {
Import-Module Posh-ACME
$renewed = Submit-Renewal $fqdn -WarningAction SilentlyContinue
if (-not $renewed) { Log "Sem renovacao necessaria."; exit 0 }
Log "Certificado renovado. Thumbprint: $($renewed.Thumbprint)"
$c = Get-PACertificate $fqdn
Copy-Item $prtgDir "$prtgDir.bak-$(Get-Date -f yyyyMMdd-HHmm)" -Recurse
Copy-Item $c.CertFile (Join-Path $prtgDir 'prtg.crt') -Force
Copy-Item $c.KeyFile (Join-Path $prtgDir 'prtg.key') -Force
Copy-Item $c.ChainFile (Join-Path $prtgDir 'root.pem') -Force
Restart-Service PRTGCoreService
Log "PRTG Core Server reiniciado com o certificado novo."
}
catch {
Log "ERRO: $($_.Exception.Message)"
exit 1
}
A linha if (-not $renewed) é a que importa. O Submit-Renewal só devolve algo quando faltam menos de 30 dias para o vencimento; nos outros dias ele não faz nada, o script registra uma linha no log e sai sem tocar no PRTG. No nosso primeiro teste, o script em produção era uma versão sem essa verificação, e cada execução copiava os arquivos e reiniciava o PRTG, mesmo sem certificado novo. O log foi o que denunciou: não existia. Vale conferir que o log aparece na primeira execução antes de dar o trabalho por concluído.
A tarefa agendada, criada uma vez em PowerShell como administrador:
$a = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\renova-prtg.ps1'
$t = New-ScheduledTaskTrigger -Daily -At 03:30
$s = New-ScheduledTaskSettingsSet -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Hours 1)
$p = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName 'LetsEncrypt-PRTG' -Action $a -Trigger $t -Settings $s -Principal $p
O horário importa pelo reinício descrito acima: escolha a madrugada ou a janela de manutenção, e saiba que naquele dia o log do PRTG vai registrar o reinício do Core Server. Para testar sem esperar 60 dias, force uma renovação com Submit-Renewal prtg.suaempresa.com.br -Force e rode a tarefa com Start-ScheduledTask -TaskName 'LetsEncrypt-PRTG'. O log deve mostrar a sequência completa, do “Certificado renovado” ao reinício.
Feche o ciclo: o PRTG vigiando a própria renovação
Um script que renova em silêncio também falha em silêncio. Como o PRTG já está ali, use-o: crie um sensor File Content apontando para C:\Scripts\renova-prtg.log procurando a palavra ERRO. Se a API do DNS mudar, o token expirar ou o Let’s Encrypt recusar a emissão, o alerta chega com 30 dias de folga, bem antes de o certificado vencer. E um sensor SSL Certificate Sensor apontando para o próprio painel confirma, do lado de fora, que o certificado em uso é o novo. Explicamos a configuração desse sensor em como monitorar a validade de certificados SSL com o PRTG.
Quando o certificado gratuito não resolve
Em três situações o caminho é outro. Se o PRTG não tem nome DNS público e a empresa não quer criar um, resta o certificado da CA interna do Active Directory, que os navegadores da rede confiam e os de fora não. Se a política de segurança exige certificado OV ou EV com validação da empresa, o Let’s Encrypt não emite esse tipo. E se ninguém na empresa vai acompanhar o log nem o sensor, a automação sem dono acaba virando aviso de certificado vencido numa segunda-feira, que é o cenário que este procedimento existe para evitar.
É esse último ponto que costuma pesar. O certificado é uma das dezenas de tarefas de manutenção que um PRTG bem operado exige: atualização de versão, limpeza de sensores órfãos, revisão de limiares, renovação da licença de manutenção da Paessler, que é o que garante acesso às versões novas. A Global Data assume a operação e o suporte do PRTG de empresas que têm a ferramenta instalada mas não têm quem cuide dela, incluindo a renovação da licença com condições de parceiro Gold. Se o seu PRTG está com certificado vencido, versão antiga ou licença para renovar, essa conversa começa por uma avaliação do ambiente.
Perguntas frequentes
O Let’s Encrypt é seguro para uma ferramenta de monitoramento corporativa?
Sim. É uma autoridade certificadora pública, sem fins lucrativos, reconhecida por todos os navegadores e sistemas operacionais atuais. O certificado DV que ela emite tem a mesma criptografia de um DV pago. O que ele não oferece é validação da identidade da empresa (OV/EV), que raramente é exigida para um painel interno de monitoramento.
Posso usar o mesmo certificado wildcard que já tenho em outros servidores?
Pode, se exportar a chave e o certificado em PEM e copiar para a pasta cert\ do PRTG. Mas cada renovação do wildcard vai exigir repetir a cópia em todos os servidores que o usam. Um certificado próprio para o nome do PRTG, emitido e renovado no próprio servidor, elimina essa dependência e evita a chave privada do wildcard espalhada em várias máquinas.
Preciso abrir a porta 80 do PRTG para a internet?
Não, se usar a validação por DNS como neste artigo. A validação HTTP-01 exige a porta 80 acessível de fora; a DNS-01 só precisa de um registro TXT criado pela API do provedor de DNS, e o servidor do PRTG continua fechado.
O que acontece se a renovação falhar e eu não perceber?
O certificado vence após 90 dias e o navegador volta a mostrar o aviso de site inseguro. O PRTG continua monitorando normalmente; o que muda é o acesso ao painel. Por isso o artigo recomenda o sensor de File Content no log do script e o SSL Certificate Sensor no próprio painel, que alertam com semanas de antecedência.
Serviço relacionado: conheça o serviço de monitoramento de redes e NOC 24x7 da Global Data.
Quer ajuda especializada com a TI da sua empresa?
Fale com um especialista