Monitoramento e Performance

Certificado SSL gratuito no PRTG: como instalar o Let's Encrypt e renovar sozinho

Por Global Data Solutions atualizado 05/11/2026

Certificado SSL gratuito no PRTG: como instalar o Let's Encrypt e renovar sozinho

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:

  1. Um nome DNS público apontando para o PRTG, como prtg.suaempresa.com.br ou noc.suaempresa.com.br. Não existe certificado público para prtg.local nem 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.
  2. 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.
  3. 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.

Diagrama da validação DNS-01: o servidor do PRTG cria um registro TXT pela API do provedor de DNS, o Let's Encrypt lê esse TXT no DNS público e devolve o certificado por uma conexão de saída iniciada pelo PRTG. Nenhuma porta de entrada é aberta.
Como o Let's Encrypt confirma que o domínio é seu sem alcançar o servidor do PRTG. Tudo que o servidor faz é conexão de saída.

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-PluginArgsPermissão mínima
CloudflareCloudflare@{ CFToken = (Read-Host 'Token' -AsSecureString) }Token de API com Zone:Read + DNS:Edit, restrito à zona
AWS Route 53Route53@{ R53AccessKey = 'AKIA...'; R53SecretKey = (Read-Host 'Secret' -AsSecureString) }Usuário IAM com route53:ListHostedZones, GetHostedZone, ListResourceRecordSets, ChangeResourceRecordSets
Azure DNSAzure@{ 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 DNSGCloud@{ GCKeyFile = 'C:\Scripts\sa.json' }Service account com dns.changes.*, dns.managedZones.get/list, dns.resourceRecordSets.*
GoDaddyGoDaddy@{ 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 APInenhum diretover 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 PRTGO que éDe onde vem no Posh-ACME
prtg.crtO certificado do servidor, em PEMCertFile
prtg.keyA chave privada, em PEM e sem senhaKeyFile
root.pemA cadeia de certificados intermediáriosChainFile

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.

Animação do ciclo de renovação: todo dia a tarefa agendada roda o Submit-Renewal; no dia 60 cria o TXT no DNS, o Let's Encrypt emite o certificado novo, os arquivos prtg.crt, prtg.key e root.pem são copiados para a pasta cert e o PRTG Core Server é reiniciado por cerca de um minuto.
O ciclo completo. Nos dias em que não há nada a renovar, o script sai sem tocar no PRTG; no dia da renovação, o último passo é um reinício do Core Server.

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

Posts relacionados

Fale com a gente no WhatsApp