使用自签名 SSL 证书调用本地服务的 Azure Web 应用程序
Azure Web App calling on-prem service with Self-Signed SSL Cert
我们有一个 Azure 网络应用需要通过 VPN 调用内部网络服务
我们已经配置了所有内容,但由于我们非生产内部服务器上的 Web 服务使用自签名证书,调用失败:
The remote certificate is invalid according to the validation
procedure.
我们可以在本地将 .cer 导入 Trusted People。
如何在 Azure 上实现这一点?
您无法将 .cer 文件导入到 Azure Web 应用服务器。如果您可以修改您的代码,您可以实施变通方法,创建您自己的证书验证。一个例子:
ServicePointManager.ServerCertificateValidationCallback += (
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors) =>
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
else
{
var myGoodCert = X509Certificate.CreateFromCertFile(Server.MapPath("~/path/to/mycert.cer"));
return myGoodCert.Equals(certificate); // compares issuer and serial number
}
};
请记住将 .cer 文件与您的 Web 应用程序文件一起部署,或将其放置在可从您的 Web 应用程序访问的某个位置(Azure Blob 存储、sql 上的 Blob 等...)
我们有一个 Azure 网络应用需要通过 VPN 调用内部网络服务
我们已经配置了所有内容,但由于我们非生产内部服务器上的 Web 服务使用自签名证书,调用失败:
The remote certificate is invalid according to the validation procedure.
我们可以在本地将 .cer 导入 Trusted People。
如何在 Azure 上实现这一点?
您无法将 .cer 文件导入到 Azure Web 应用服务器。如果您可以修改您的代码,您可以实施变通方法,创建您自己的证书验证。一个例子:
ServicePointManager.ServerCertificateValidationCallback += (
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors) =>
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
else
{
var myGoodCert = X509Certificate.CreateFromCertFile(Server.MapPath("~/path/to/mycert.cer"));
return myGoodCert.Equals(certificate); // compares issuer and serial number
}
};
请记住将 .cer 文件与您的 Web 应用程序文件一起部署,或将其放置在可从您的 Web 应用程序访问的某个位置(Azure Blob 存储、sql 上的 Blob 等...)