如何确认API站点的SSL证书过期日期及IIS中站点所选证书
如何确认API站点的SSL证书过期日期及IIS中站点所选证书
嗨,我来帮你搞定这两个头疼的问题~
一、查询无UI的API站点SSL证书过期日期
因为API没有前端界面,没法通过浏览器地址栏的SSL图标查看,我们可以用命令行工具轻松搞定:
方法1:用OpenSSL(跨平台通用)
如果你装了OpenSSL,直接在命令行里执行(替换成你的API域名):
openssl s_client -connect your-api-domain.com:443 </dev/null 2>/dev/null | openssl x509 -noout -dates
执行后会返回类似这样的内容,其中notAfter就是证书的过期日期:
notBefore=Mar 15 00:00:00 2024 GMT notAfter=Mar 14 23:59:59 2025 GMT
方法2:用Windows PowerShell(无需额外安装工具)
如果是Windows环境,直接打开PowerShell,运行以下脚本(记得替换成你的API域名):
# 替换成你的API域名和端口(默认443) $domain = "your-api-domain.com" $port = 443 $tcpClient = New-Object System.Net.Sockets.TcpClient($domain, $port) $sslStream = New-Object System.Net.Security.SslStream($tcpClient.GetStream(), $false) try { $sslStream.AuthenticateAsClient($domain) $cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]$sslStream.RemoteCertificate Write-Host "证书主题: $($cert.Subject)" Write-Host "过期日期: $($cert.NotAfter)" } finally { $sslStream.Close() $tcpClient.Close() }
执行后就能直接看到证书的过期时间啦。
二、确认IIS中站点所选的SSL证书
遇到同名证书确实容易搞混,不过我们可以通过证书的**唯一指纹(Thumbprint)**来精准区分:
方法1:通过IIS图形界面操作
- 打开IIS管理器,找到你的目标站点,右键点击「编辑绑定」
- 在绑定列表里选中HTTPS那条记录,点击「编辑」
- 弹出的窗口里会显示当前选中的证书友好名称,点击「查看」按钮
- 切换到「详细信息」标签,找到「指纹」字段,复制这个字符串(注意不要带空格)
- 打开服务器的证书管理器:可以通过运行
certlm.msc,或者在IIS管理器左侧点击服务器节点,选择「服务器证书」 - 在证书列表里找到同名的两个证书,逐个查看它们的「指纹」,和刚才复制的对比,匹配的就是当前站点在用的证书
方法2:用PowerShell快速查询
如果你喜欢用命令行,直接运行以下脚本(替换成你的站点名称):
# 替换成你的站点名称 $siteName = "你的API站点名称" # 获取站点HTTPS绑定的证书指纹 $bindingCertHash = (Get-IISSiteBinding -Name $siteName -Protocol https).CertificateHash $bindingCertHashStr = [BitConverter]::ToString($bindingCertHash).Replace("-", "") # 列出本地计算机存储里的证书,对比指纹 Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq $bindingCertHashStr } | Select-Object FriendlyName, Subject, NotAfter, Thumbprint
执行后会直接输出当前站点绑定的证书详细信息,包括过期日期,一目了然。
备注:内容来源于stack exchange,提问作者Jonathan Wood
相关产品推荐
相关产品推荐

