我正在将我的应用程序与 Xero 集成,这需要两个证书。我在以下人员的帮助下将它们上传到 Azurethis https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/文章,但我仍然无法连接到Xero API https://github.com/XeroAPI/Xero-Net。我希望有人有将 Xero 合作伙伴应用程序与 Azure Web 应用程序集成的经验。
我上传了两个 pfx 文件;一种是自签名证书,另一种是Xero颁发的合作伙伴证书。后一个 pfx 文件包含两个证书;我的应用程序的 Entrust Commercial Private Sub CA1(无论何种方式)和唯一的 Entrust Id 证书。
我使用以下代码通过唯一的指纹加载证书:
static X509Certificate2 GetCertificateFromStore(string thumbprint)
{
var store = new X509Store(StoreLocation.CurrentUser);
try
{
thumbprint = Regex.Replace(thumbprint, @"[^\da-zA-z]", string.Empty).ToUpper();
store.Open(OpenFlags.ReadOnly);
var certCollection = store.Certificates;
var currentCerts = certCollection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
var signingCert = currentCerts.Find(X509FindType.FindByThumbprint, thumbprint, false);
if (signingCert.Count == 0)
{
throw new Exception($"Could not find Xero SSL certificate. cert_name={thumbprint}");
}
return signingCert[0];
}
finally
{
store.Close();
}
}
这在本地工作正常,但在我的天蓝色网站上我收到 403.7 错误:
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.
我还查看了以下参考文献来尝试解决该问题:
-
Azure 中的 Xero 合作伙伴 SSL 配置 http://blog.timestamphq.com/xero-partner-ssl-configuration-in-azure/(使用云服务而不是网络应用程序,所以我无法按照最后的步骤进行操作)
-
从文件加载 X509Certificate2 时禁止 403 https://community.xero.com/developer/discussion/626401#answer2056885(在 Xero 论坛上发布了关于同一问题的帖子,发现该解决方案仅适用于云服务)
-
Xero 合作伙伴连接和 Azure 网站 https://community.xero.com/developer/discussion/3471813/(发布的解决方案建议使用虚拟机)
我还没有尝试过:
- 将我的网络应用程序转换为云服务;试图避免这样做,但我不确定涉及哪些步骤。
- 使用虚拟机;我还没有找到任何关于如何执行此操作的详细步骤,但似乎是比上面更好的选择。
Screenshot of the error:
403 错误意味着我们在连接中没有看到 Xero Entrust 证书。
有关它的更多详细信息在这里 -http://blog.xero.com/developer/api-overview/http-response-codes/#403 http://blog.xero.com/developer/api-overview/http-response-codes/#403
基本上,它在您的本地 IIS 实例上运行,因为它是一个“单租户”计算机,您的应用程序不需要与其他应用程序隔离。
当您的应用程序被用于隔离网站的安全模型阻止时。
总之,您必须执行以下操作才能使证书在 Azure 上运行:
1) 将证书、私钥和所有中间证书导出到 PFX 文件中。
2) 使用 Azure 门户将证书上传到您正在运行的云服务(它应显示为多个条目)。
3)通过代码中的机器存储访问证书。
基于以下数据:https://community.xero.com/developer/discussion/626401 https://community.xero.com/developer/discussion/626401
https://social.msdn.microsoft.com/Forums/azure/en-US/29b30f25-eea9-4e8e-8292-5ac8085fd42e/access-to-certificates-in-azure-web-sites https://social.msdn.microsoft.com/Forums/azure/en-US/29b30f25-eea9-4e8e-8292-5ac8085fd42e/access-to-certificates-in-azure-web-sites
我希望它能解决你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)