An expired SSL certificate in Exchange Server causes browsers to display security warnings, Outlook to disconnect, and mobile devices to fail sync. This guide shows you how to identify expiration, renew or replace the certificate, and restore secure HTTPS connections.
Our Exchange Certificate Management team handles certificate renewals with zero-downtime procedures.
Error Overview: What Happens When SSL Expires
SSL/TLS certificates have a validity period (typically 1-2 years). When a certificate expires, browsers and clients reject the connection because they cannot verify the server's identity.
# Browser shows:
"Your connection is not private"
"NET::ERR_CERT_DATE_INVALID"
"This site's security certificate has expired"
# Outlook shows:
"The security certificate has expired or is not yet valid"
"There is a problem with the proxy server's security certificate"
# Mobile devices:
"Cannot Verify Server Identity"
"SSL Error - Certificate expired"Symptoms & Business Impact
What Users Experience:
- OWA displays browser security warnings
- Outlook repeatedly prompts for credentials or shows certificate errors
- ActiveSync devices fail to sync with certificate errors
- Autodiscover fails, breaking new Outlook profile setup
What Admins See:
- Get-ExchangeCertificate shows NotAfter date in the past
- Event ID 12025 in Application log
- IIS certificate binding shows expired certificate
# Check all Exchange certificates
Get-ExchangeCertificate | Select-Object Subject, Thumbprint, NotAfter, Services,
@{N='Status';E={if($_.NotAfter -lt (Get-Date)){'EXPIRED'}elseif($_.NotAfter -lt (Get-Date).AddDays(30)){'EXPIRING SOON'}else{'Valid'}}} |
Format-Table -AutoSize
# Check specific certificate by thumbprint
Get-ExchangeCertificate -Thumbprint "ABC123..." | Format-List *Common Causes
1. Missed Renewal Deadline (60%)
Certificate renewal was not tracked, and the expiration date passed without renewal. Most certificates expire 1-2 years after issuance.
2. Auto-Renewal Failure (25%)
Internal CA auto-enrollment failed, or the certificate request was not completed after generating a CSR.
3. Server Migration (15%)
Certificate was not migrated to new server, or the old certificate was imported but not renewed.
Quick Diagnosis
# List all certificates with expiration status
Get-ExchangeCertificate | ForEach-Object {
$status = if ($_.NotAfter -lt (Get-Date)) { "EXPIRED" }
elseif ($_.NotAfter -lt (Get-Date).AddDays(30)) { "EXPIRING SOON" }
else { "Valid" }
[PSCustomObject]@{
Subject = $_.Subject
Thumbprint = $_.Thumbprint.Substring(0,8) + "..."
Expires = $_.NotAfter
Services = $_.Services
Status = $status
}
} | Format-Table -AutoSize# Check what certificate is bound to IIS
Import-Module WebAdministration
Get-WebBinding -Name "Default Web Site" -Protocol https |
Select-Object bindingInformation, certificateHash | Format-Table
# Verify the bound certificate
$binding = Get-WebBinding -Name "Default Web Site" -Protocol https
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq $binding.certificateHash }
$cert | Select-Object Subject, NotAfter, ThumbprintQuick Fix (If You Have a New Certificate)
# Import new certificate (if you have a PFX file)
$pfxPath = "C:\Certs\NewExchangeCert.pfx"
$pfxPassword = Read-Host "Enter PFX password" -AsSecureString
Import-ExchangeCertificate -FileName $pfxPath -Password $pfxPassword -PrivateKeyExportable:$true
# Get the new certificate thumbprint
$newCert = Get-ExchangeCertificate | Where-Object { $_.NotAfter -gt (Get-Date) } |
Sort-Object NotAfter -Descending | Select-Object -First 1
Write-Host "New certificate: $($newCert.Thumbprint)"
# Enable for Exchange services
Enable-ExchangeCertificate -Thumbprint $newCert.Thumbprint -Services IIS,SMTP,POP,IMAP
# Restart IIS
iisreset /noforceDetailed Solutions
Solution 1: Request New Certificate (Public CA)
# Generate new certificate request
$request = New-ExchangeCertificate -GenerateRequest -SubjectName "cn=mail.domain.com" -DomainName mail.domain.com,autodiscover.domain.com,webmail.domain.com -PrivateKeyExportable $true -KeySize 2048
# Save request to file
$request | Out-File "C:\Certs\ExchangeCSR.txt"
# Submit this CSR to your Certificate Authority (DigiCert, Comodo, etc.)
Write-Host "Submit C:\Certs\ExchangeCSR.txt to your CA"
# After receiving the certificate, import it:
# Import-ExchangeCertificate -FileName "C:\Certs\CertFromCA.cer"-FileName "C:\Certs\CertFromCA.cer"Solution 2: Use Internal CA (Enterprise)
# Request certificate from internal Enterprise CA
$template = "WebServer" # Your web server template name
$ca = "DC01.domain.local\Domain-CA" # Your CA server
# Create certificate request and submit to CA
$cert = Get-Certificate -Template $template -CertStoreLocation Cert:\LocalMachine\My -DnsName mail.domain.com,autodiscover.domain.com -SubjectName "CN=mail.domain.com"
# If auto-enrollment works, certificate is issued immediately
# Enable for Exchange
Enable-ExchangeCertificate -Thumbprint $cert.Certificate.Thumbprint -Services IIS,SMTP
iisreset /noforceSolution 3: Temporary Self-Signed (Emergency Only)
# WARNING: Self-signed causes client warnings - use only in emergencies
$selfSigned = New-ExchangeCertificate -Services IIS,SMTP -DomainName mail.domain.com,autodiscover.domain.com -FriendlyName "Exchange Temporary Certificate" -PrivateKeyExportable $true
Write-Host "Self-signed certificate created: $($selfSigned.Thumbprint)"$selfSigned.Thumbprint)"
Write-Host "WARNING: Clients will see certificate warnings until you install a proper CA-signed certificate"
iisreset /noforceVerify the Fix
# Check certificate is assigned correctly
Get-ExchangeCertificate | Where-Object { $_.Services -match "IIS" } |
Select-Object Subject, Thumbprint, NotAfter, Services | Format-List
# Test HTTPS connectivity
$urls = @(
"https://mail.domain.com/owa/healthcheck.htm",
"https://mail.domain.com/autodiscover/autodiscover.xml"
)
foreach ($url in $urls) {
try {
$response = Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 10
Write-Host "[OK] $url" -ForegroundColor Green
} catch {
Write-Host "[FAIL] $url" -ForegroundColor Red
}
}
# Verify certificate chain
$webRequest = [Net.HttpWebRequest]::Create("https://mail.domain.com")
$webRequest.GetResponse() | Out-Null
$cert = $webRequest.ServicePoint.Certificate
Write-Host "Certificate Subject: $($cert.Subject)"
Write-Host "Valid Until: $($cert.GetExpirationDateString())"Prevention Tips
Certificate Management Best Practices
- Set calendar reminders 90, 60, and 30 days before expiration
- Use certificate monitoring tools or scripts
- Document all certificate details in a runbook
- Consider longer validity periods (2-3 years where allowed)
- Keep backup copies of certificates with private keys
# Add to scheduled task for monitoring
$threshold = 30 # Days before expiration to alert
Get-ExchangeCertificate | Where-Object {
$_.Services -match "IIS" -and $_.NotAfter -lt (Get-Date).AddDays($threshold)
} | ForEach-Object {
$daysLeft = ($_.NotAfter - (Get-Date)).Days
Write-Host "WARNING: Certificate $($_.Subject) expires in $daysLeft days!"$daysLeft days!" -ForegroundColor Yellow
# Send-MailMessage alert here
}When to Escalate
Contact Exchange specialists if:
- Certificate import fails with errors
- Private key is missing or corrupted
- Complex SAN certificate requirements
- Hybrid configuration certificate issues
- Multiple Exchange servers need coordinated update
Need Expert Help?
Our Exchange Certificate Team handles certificate renewals with zero-downtime procedures. We can also help with complex wildcard and SAN certificate configurations.
Frequently Asked Questions
Related Exchange Server Errors
Event ID 12025: Certificate Expired - Fix Guide 2025
SSL/TLS certificate expiration disrupting Exchange services. Renew certificate, update bindings, restore security.
OAuth Certificate Expiration in Exchange - Fix Guide 2025
OAuth certificate about to expire. Proactively renew, prevent authentication failures, maintain hybrid.
Event ID 1003: OAuth Certificate Expired - Fix Guide 2025
OAuth certificate expiration preventing OWA authentication. Renew certificate, restore web access.
Still Stuck? We Can Help
Our Exchange Server experts have resolved thousands of issues just like yours.
- Remote troubleshooting in 95 minutes average
- No upfront commitment or diagnosis fees
- Fix-it-right guarantee with documentation
Medha Cloud Exchange Server Team
Microsoft Exchange Specialists
Our Exchange Server specialists have 15+ years of combined experience managing enterprise email environments. We provide 24/7 support, emergency troubleshooting, and ongoing administration for businesses worldwide.