Visa certifikat

Hämtar servercertifikatet och visar subjekt, utfärdare och giltighetsperiod.

HTTPS (443)

PowerShell (Windows)

SslStream (.NET) Inbyggt

$h = "mail.example.com"; $p = 443
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$cert = [Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate
$cert | Format-List Subject, Issuer, NotBefore, NotAfter, Thumbprint
$ssl.Dispose(); $c.Close()

openssl Tilläggsverktyg

"" | openssl s_client -connect mail.example.com:443 -servername mail.example.com 2>$null | openssl x509 -noout -subject -issuer -dates

Unix-skal (bash)

openssl Inbyggt

openssl s_client -connect mail.example.com:443 -servername mail.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

gnutls-cli Tilläggsverktyg

gnutls-cli --print-cert mail.example.com:443 </dev/null

Outlook Web App

PowerShell (Windows)

SslStream (.NET) Inbyggt

$h = "webmail.example.com"; $p = 443
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$cert = [Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate
$cert | Format-List Subject, Issuer, NotBefore, NotAfter, Thumbprint
$ssl.Dispose(); $c.Close()

openssl Tilläggsverktyg

"" | openssl s_client -connect webmail.example.com:443 -servername webmail.example.com 2>$null | openssl x509 -noout -subject -issuer -dates

Unix-skal (bash)

openssl Inbyggt

openssl s_client -connect webmail.example.com:443 -servername webmail.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

gnutls-cli Tilläggsverktyg

gnutls-cli --print-cert webmail.example.com:443 </dev/null

Callbacken { $true } accepterar avsiktligt även utgångna eller självsignerade certifikat, så att de förblir synliga.

Utgångsdatum

Visar utgångsdatumet och om certifikatet fortfarande är giltigt om 30 dagar.

HTTPS (443)

PowerShell (Windows)

SslStream (.NET) Inbyggt

$h = "mail.example.com"; $p = 443
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$cert = [Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate
"NotAfter {0}  ({1} days left)" -f $cert.NotAfter, ($cert.NotAfter - (Get-Date)).Days
$ssl.Dispose(); $c.Close()

openssl Tilläggsverktyg

"" | openssl s_client -connect mail.example.com:443 -servername mail.example.com 2>$null | openssl x509 -noout -enddate

Unix-skal (bash)

openssl Inbyggt

echo | openssl s_client -connect mail.example.com:443 -servername mail.example.com 2>/dev/null | openssl x509 -noout -enddate
echo | openssl s_client -connect mail.example.com:443 -servername mail.example.com 2>/dev/null | openssl x509 -noout -checkend 2592000 && echo "valid >30d" || echo "expires <30d"

curl Tilläggsverktyg

curl -sSv "https://mail.example.com:443" 2>&1 | grep -E "expire|subject:|issuer:"

Certifikatkedja

Visar kedjan som servern levererar, för att upptäcka saknade mellanliggande certifikat.

PowerShell (Windows)

X509Chain (.NET) Inbyggt

$h = "mail.example.com"; $p = 443
$c = New-Object Net.Sockets.TcpClient($h, $p)
$ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
$cert = [Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate
$chain = New-Object Security.Cryptography.X509Certificates.X509Chain
$chain.ChainPolicy.RevocationMode = "NoCheck"
[void]$chain.Build($cert)
$chain.ChainElements | ForEach-Object { $_.Certificate.Subject }
$ssl.Dispose(); $c.Close()

openssl Tilläggsverktyg

"" | openssl s_client -connect mail.example.com:443 -servername mail.example.com -showcerts 2>$null

Unix-skal (bash)

openssl Inbyggt

openssl s_client -connect mail.example.com:443 -servername mail.example.com -showcerts </dev/null 2>/dev/null | grep -E "^ *(s:|i:)"

gnutls-cli Tilläggsverktyg

gnutls-cli --print-cert mail.example.com:443 </dev/null 2>/dev/null | grep -E "Subject:|Issuer:"

TLS-versioner

Testar vilka TLS-versioner servern accepterar.

HTTPS (443)

PowerShell (Windows)

SslStream (.NET) Inbyggt

foreach ($proto in "Tls12", "Tls13") {
  try {
    $c = New-Object Net.Sockets.TcpClient("mail.example.com", 443)
    $ssl = New-Object Net.Security.SslStream($c.GetStream(), $false, ({ $true }))
    $ssl.AuthenticateAsClient("mail.example.com", $null, [Security.Authentication.SslProtocols]$proto, $false)
    "$proto ok: $($ssl.SslProtocol) / $($ssl.CipherAlgorithm)"
    $ssl.Dispose(); $c.Close()
  } catch { "$proto not supported" }
}

openssl Tilläggsverktyg

"" | openssl s_client -connect mail.example.com:443 -servername mail.example.com -tls1_2 2>$null | Select-String "Protocol"

Unix-skal (bash)

openssl Inbyggt

for proto in -tls1 -tls1_1 -tls1_2 -tls1_3; do
  echo | openssl s_client -connect mail.example.com:443 -servername mail.example.com $proto >/dev/null 2>&1 \
    && echo "$proto supported" || echo "$proto not"
done

nmap Tilläggsverktyg

nmap --script ssl-enum-ciphers -p 443 mail.example.com

.NET testar här TLS 1.2 och 1.3; äldre versioner är oftast inaktiverade i ramverket. openssl kontrollerar även TLS 1.0/1.1.

SMTP-certifikat (STARTTLS)

Visar certifikatet som en e-postserver presenterar vid STARTTLS på port 25.

SMTP (25)

PowerShell (Windows)

SslStream (.NET) Inbyggt

$h = "mail.example.com"; $p = 25
$c = New-Object Net.Sockets.TcpClient($h, $p)
$s = $c.GetStream()
$r = New-Object IO.StreamReader($s)
$w = New-Object IO.StreamWriter($s); $w.NewLine = "`r`n"; $w.AutoFlush = $true
$r.ReadLine() | Out-Null
$w.WriteLine("EHLO test.example.com"); Start-Sleep -Milliseconds 200; while ($c.Available) { $r.ReadLine() | Out-Null }
$w.WriteLine("STARTTLS"); $r.ReadLine()
$ssl = New-Object Net.Security.SslStream($s, $false, ({ $true }))
$ssl.AuthenticateAsClient($h)
([Security.Cryptography.X509Certificates.X509Certificate2]$ssl.RemoteCertificate) | Format-List Subject, Issuer, NotBefore, NotAfter
$ssl.Dispose(); $c.Close()

openssl Tilläggsverktyg

openssl s_client -starttls smtp -connect mail.example.com:25 -servername mail.example.com

Unix-skal (bash)

openssl Inbyggt

openssl s_client -starttls smtp -connect mail.example.com:25 -servername mail.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

swaks Tilläggsverktyg

swaks --server mail.example.com:25 -tls --quit-after TLS

Granska certifikatfil

Läser en lokal certifikatfil (PEM/CER) och visar subjekt, utfärdare och SAN.

PowerShell (Windows)

X509Certificate2 (.NET) Inbyggt

$cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2 "cert.pem"
$cert | Format-List Subject, Issuer, NotBefore, NotAfter, DnsNameList, Thumbprint

openssl Tilläggsverktyg

openssl x509 -in cert.pem -noout -subject -issuer -dates -ext subjectAltName

Unix-skal (bash)

openssl Inbyggt

openssl x509 -in cert.pem -noout -subject -issuer -dates -ext subjectAltName

certtool Tilläggsverktyg

certtool --certificate-info --infile cert.pem

För lösenordsskyddade PFX-filer i PowerShell, använd i stället Get-PfxCertificate.

Andra områden