问题描述

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 中的 证书信息是否完整,如果不完整,则表示缺少部分证书。

【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?_App

 

问题二:如何来检查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*"}


【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?_Azure_02


 如果需要查看多数的证书,可以修改如下的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

执行效果如下:

【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?_App_03

 

(PS: 在linux中查看证书的方法还在寻找中......... 2023-03-16)

(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&)

 

参考资料

在 Azure 应用服务中添加和管理 TLS/SSL 证书 : ​​https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate​



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!