Website SSL Expiry script with automatic e-mail
Want to check the expiry date of your SSL certification? Create a .txt file with all your domainnames and create a .ps1 script containing the code below. Script without e-mail function, will just check and show a message in the console:
$minimumCertAgeDays = 14
$timeoutMilliseconds = 10000
$urls = get-content "C:\Users\%username%\Desktop\SSL\check-urls.txt"
#disabling the cert validation check. This is what makes this whole thing work with invalid certs...
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
foreach ($url in $urls)
{
# Write-Host Checking $url -f Green
$req = [Net.HttpWebRequest]::Create($url)
$req.Timeout = $timeoutMilliseconds
$req.AllowAutoRedirect = $false
try {$req.GetResponse() |Out-Null} catch {Write-Host Exception while checking URL $url`: $_ -f Blue}
$certExpiresOnString = $req.ServicePoint.Certificate.GetExpirationDateString()
[datetime]$expiration = [System.DateTime]::Parse($req.ServicePoint.Certificate.GetExpirationDateString())
[int]$certExpiresIn = ($expiration - $(get-date)).Days
if ($certExpiresIn -gt $minimumCertAgeDays)
{
Write-Host $url expires in $certExpiresIn days / Expires on $expiration -f Green
} else {
Write-Host Warning: Cert for site $url expires in $certExpiresIn days [on $expiration] -f Red
}
}
Start-Sleep -s 45Script including e-mail function, don't forgot to change to your own server/credentials. Keep in mind the password is saved in plaintext
Last updated
Was this helpful?