问题描述
1:如何来检查App Service上证书的完整性呢?
2:如何来检查App Service的实例上是否包含这个证书呢? Windows 环境 or Linux 环境?
问题解答
问题一:如何来检查App Service上证书的完整性呢?
可以使用OpenSSL工具来访问目标域名,根据输出来检查证书情况。比如目标域名为:www.cnblogs.com , 使用指令为:
openssl s_client -connect www.cnblogs.com:443
输出结果如下图,主要查看Certificate China 中的 证书信息是否完整,如果不完整,则表示缺少部分证书。
问题二:如何来检查App Service的实例上是否包含这个证书呢? Windows 环境 or Linux 环境?
Windows系统
进入Kudu站点( https://<your app service name>.scm.chinacloudsites.cn/DebugConsole/?shell=powershell )的Powershell Console页面,使用 dir cert:\ 命令可以列举出机器中证书目录,然后一级一级查看。
如查看 LocalMachine\My 中的证书:
dir cert:\localmachine\My
如在 LocalMachine\My中查找 subject以 CN=ma.appservice 开头的证书:
dir cert:\localmachine\My | ?{$_.subject -like "CN=ma.appservice*"}
如果需要查看多数的证书,可以修改如下的Powershell 脚本来实现目的:
$certs = () $certs += dir cert:\localmachine\my | ?{$_.FriendlyName -like "App Service*"} $certs += dir cert:\localmachine\CA | ?{$_.subject -like "CN=ma.appservice*"} "";"== Certificates found: " + $certs.Count $certs | FL ThumbPrint,FriendlyName,Subject If (($certs.Count) -gt 0) { ForEach ($Cert in $certs) {RD -LiteralPath ($Cert.Pspath) }}
Linux系统中
进入Kudu页面( https://<your app service name>.scm.chinacloudsites.cn/DebugConsole ),进入Bash 窗口,可以通过 find 查询是否有证书文件。
find / -name *.pem or find / -name *.crt or find / -name *.key
执行效果如下:
(PS: 在linux中查看证书的方法还在寻找中......... 2023-03-16)
(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&)
参考资料
在 Azure 应用服务中添加和管理 TLS/SSL 证书 : https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate