Skip to content
Go back

Certificados SAML Expirados

Published:  at  10:00 AM

Importância do Monitoramento de Certificados SAML

Os certificados SAML sÀo essenciais para a autenticaçÀo federada entre o Microsoft Entra ID e aplicaçÀµes empresariais. Um certificado expirado pode:

VerificaçÀo via Microsoft Graph

Para identificar certificados SAML que estÀo próximos da expiraçÀo:

# Conectar ao Microsoft Graph
Connect-MgGraph -Scopes "Application.Read.All"

# Obter todos os service principals (aplicaçÀµes empresariais)
$servicePrincipals = Get-MgServicePrincipal -All

# Data atual para comparaçÀo
$currentDate = Get-Date

# Dias de aviso antes da expiraçÀo
$warningDays = 30

# Verificar certificados SAML
foreach ($sp in $servicePrincipals) {
    # Verificar se é uma aplicaçÀo SAML
    if ($sp.PreferredTokenSigningKeyThumbprint) {
        # Obter certificados de assinatura
        foreach ($key in $sp.KeyCredentials) {
            if ($key.Usage -eq "Verify") {
                $daysUntilExpiry = (($key.EndDateTime) - $currentDate).Days
                
                if ($daysUntilExpiry -lt $warningDays) {
                    Write-Output "AVISO: Certificado SAML expirando em $daysUntilExpiry dias"
                    Write-Output "AplicaçÀo: $($sp.DisplayName)"
                    Write-Output "Validade: $($key.EndDateTime)"
                    Write-Output "--------"
                }
            }
        }
    }
}

RenovaçÀo de Certificados SAML

Para renovar um certificado SAML:

# ID do service principal
$servicePrincipalId = "00000000-0000-0000-0000-000000000000"

# Gerar novo certificado
$newCertificate = New-SelfSignedCertificate -Subject "CN=SAML App" -CertStoreLocation "cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 -NotAfter (Get-Date).AddYears(3)

# Converter para Base64
$certBase64 = [System.Convert]::ToBase64String($newCertificate.Export("Cert"))

# Criar novo objeto de credenciais
$keyCredential = @{
    Type = "AsymmetricX509Cert"
    Usage = "Verify"
    Key = $certBase64
}

# Atualizar o service principal
Update-MgServicePrincipal -ServicePrincipalId $servicePrincipalId -KeyCredentials @($keyCredential)

AutomaçÀo e Alertas

Considere implementar um script de automaçÀo para verificar regularmente os certificados SAML:

# Script para execuçÀo agendada via Azure Automation
$connectionName = "AzureRunAsConnection"
$runAsConnection = Get-AutomationConnection -Name $connectionName
Connect-MgGraph -CertificateThumbprint $runAsConnection.CertificateThumbprint -ApplicationId $runAsConnection.ApplicationId -TenantId $runAsConnection.TenantId

# Executa a verificaçÀo de certificados
# ... (código da seçÀo anterior)

# Envia alertas por email
$emailParams = @{
    To = "admin@contoso.com"
    Subject = "Alerta: Certificados SAML prestes a expirar"
    Body = $alertBody
    SMTPServer = "smtp.office365.com"
    Port = 587
    UseSsl = $true
    Credential = $emailCredential
}

Send-MailMessage @emailParams

Melhores PrÀ¡ticas


Suggest Changes

Previous Post
Proprietários de Grupos Microsoft 365
Next Post
Restrição de Acesso a Caixas de Correio