Azure Web 作业无法与客户端证书建立 SSL/TLS 连接

费德里科·德格兰迪斯

嗨,我有一个 WebJob,它需要使用 HTTPS 和客户端证书与外部 Web 服务进行通信,但我收到(仅在 Azure 上)此错误:无法为具有权限“wstest.agenziadoganemonopoli.gov”的 SSL/TLS 建立安全通道.it'.请求被中止:无法创建 SSL/TLS 安全通道。

wstest.agenziadoganemonopoli.gov.it仅支持 TLS 1.2(SSLLabs 测试),我已经添加

ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;

wstest.agenziadoganemonopoli.gov.it要求每个用户使用不同的客户端证书,因此我从 blob 加载正确的证书。

我没有按照此处的建议使用WEBSITE_LOAD_CERTIFICATES在 WebJob 中使用客户端证书,主要是因为我从外部存储(Azure Blob 存储)加载证书,并且每个用户都有不同的证书(我有超过 1000 个证书需要管理)。

更新这是(或多或少)我用来从 Azure Blob 存储加载证书的代码

    public async Task<Result<X509Certificate2>> GetCertificate(Guid merchantId)
    {
        try
        {
            CloudBlobContainer container =
                _client.GetContainerReference($"{ContainerNamePrefix}-{merchantId.ToString().ToLower()}");

            CloudBlockBlob certificateBlobBlock = container.GetBlockBlobReference(CertificateBlobBlockName);

            CloudBlockBlob metadataBlobBlock = container.GetBlockBlobReference(MetadataBlobBlockName);

            AuthenticationCertificateMetadata metadata =
                JsonConvert.DeserializeObject<AuthenticationCertificateMetadata>(
                    await metadataBlobBlock.DownloadTextAsync().ConfigureAwait(false));

            X509Certificate2 certificate = null;

            using (MemoryStream stream = new MemoryStream())
            {
                await certificateBlobBlock.DownloadToStreamAsync(stream).ConfigureAwait(false);

                certificate = new X509Certificate2(stream.ToArray(), metadata.CertificatePassword);
            }

            return Result<X509Certificate2>.Successful(certificate);
        }
        catch (Exception ex)
        {

        }
    }

有什么建议吗?

谢谢!费德里科

蔡乔伊

我没有按照建议使用 WEBSITE_LOAD_CERTIFICATES

实际上,您需要在应用程序设置中设置 WEBSITE_LOAD_CERTIFICATES这是加载应用程序的客户端证书所必需的。在此处输入图片说明

我从外部存储(Azure Blob 存储)加载证书,并且每个用户都有不同的证书

您可以加载应用程序目录中证书文件,以便为每个用户获取不同的客户端证书。

例如:

 string certPath = Server.MapPath("~/certs/mycert.pfx");
 X509Certificate2 cert = GetCertificate(certPath, signatureBlob.Thumbprint);

更多细节,你可以参考这篇文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过混合连接从客户端连接到Azure Web作业

连接 Azure Web PubSub 客户端断开其他客户端

设置Azure Web App接受客户端证书

建立 TLS 连接时忽略分配的客户端证书

Web套接字:无法在Internet断开连接上检测到客户端连接

无法从Azure Web App连接到Redis的Azure缓存

无法将 Azure Web App - NodeJS 连接到 Azure Mysql

多个客户端未建立连接,无法同时通信

无法在SignalR与WPF客户端之间建立连接

两个Azure VM上的NFS服务器和客户端,客户端无法连接

Azure Web作业多个连接字符串

远程客户端无法连接到在Azure VM中运行的Redisai Docker容器

为什么Web服务和代理客户端无法连接?

无法通过C#客户端连接到其余Web服务

Azure IoT客户端未连接到IoT中心

Azure连接无法连接证书错误

无法连接到远程调试-Web App Azure

Apache Guacamole Web客户端未显示任何连接

Web套接字连接从Android客户端失败

web-socket 客户端不会连接到 API

使用 Java 客户端上传 Azure Web 作业

没有服务器上的Internet连接,Samba客户端无法建立新连接

Azure Web作业-如何连接到Azure MS SQL数据库?

Azure Web 应用和 Web 作业的不同连接字符串

客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

mysql命令行客户端说无法连接到MySQL的Azure数据库

laravel websocket客户端无法建立稳定的连接,但可以在site / laravel-websockets中建立连接;

如何使Azure点对站点客户端连接到Azure VM

无法在普通C#gRPC客户端和服务器之间建立连接