gpt4 book ai didi

azure - Azure 中的客户端证书身份验证和 CA 证书

转载 作者:行者123 更新时间:2023-12-04 15:01:04 27 4
gpt4 key购买 nike

我需要使用客户端证书对 Azure 云服务Web 角色的请求进行身份验证。如何将证书颁发机构 (CA) 根证书放入正确的受信任存储区?

我尝试将其上传到管理门户中,然后使用 AuthRoot 商店名称在服务定义文件中定义它:

<Certificate name="RootCA" storeLocation="LocalMachine" storeName="AuthRoot" />

真正奇怪的是它确实有效……但只是有时有效。它可能在实例重新启动后工作,但在服务更新或另一个实例重新启动后可能无法工作。这似乎是 Azure 中的一个错误。

当我说“有效”时,我的意思是服务器成功接受客户端证书并处理请求。当我说“不起作用”时,我的意思是服务器在证书检查后不协商连接,并且“请求已中止:无法创建 SSL/TLS 安全通道”。客户端抛出异常。

如何使其工作稳定?

更新:

在系统Windows事件日志中找到此记录(来源为Schannel):

When asking for client authentication, this server sends a list of trusted certificate authorities to the client. The client uses this list to choose a client certificate that is trusted by the server. Currently, this server trusts so many certificate authorities that the list has grown too long. This list has thus been truncated. The administrator of this machine should review the certificate authorities trusted for client authentication and remove those that do not really need to be trusted.

最佳答案

具体问题描述如下:http://support.microsoft.com/kb/2801679 .

2012 年 12 月 Windows 更新后,AuthRoot 存储中添加了大量证书。所以我们必须删除它们才能解决问题。

为此,我使用 PowerShell 启动任务:

Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates | Where-Object {$_.Name -notlike "*\<YOUR_CERTIFICATE_THUMBPRINT>"} | Remove-Item

要从 CMD 启动任务运行它:

PowerShell -ExecutionPolicy Unrestricted .\Startup.ps1
exit /b %errorlevel%

在 ServiceDefinition.csdef 中:

<WebRole name="Web">
<Startup>
<Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple" />
</Startup>
<!-- ... ->
</WebRole>

关于azure - Azure 中的客户端证书身份验证和 CA 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com