【发布时间】:2016-04-03 19:27:35
【问题描述】:
我正在将我的应用与需要两个证书的 Xero 集成。我在 this 文章的帮助下将它们上传到 Azure,但我仍然无法连接到 Xero API。我希望有人有将 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();
}
}
这在本地运行良好,但在我的 azure 网站上出现 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.
我还查看了以下参考资料以尝试解决问题:
- Xero Partner SSL configuration in Azure(使用的是云服务而不是网络应用,所以我无法按照最后的步骤进行操作)
- 403 Forbidden when loading X509Certificate2 from a file(同一个问题在Xero论坛上发帖,发现只能再次解决;云服务)
- Xero partner connections and Azure Websites(发布的解决方案建议使用虚拟机)
我还没有尝试过的:
- 将我的 Web 应用程序转换为云服务;试图避免这样做,但我不确定涉及哪些步骤。
- 使用虚拟机;我还没有找到有关如何执行此操作的任何详细步骤,但似乎是比上述更好的选择。
【问题讨论】:
-
仅供参考,我们遇到了同样的问题,并且曾经在这里与 Microsoft 有过一个案例 - social.msdn.microsoft.com/Forums/azure/en-US/…。
标签: c# azure x509 http-status-code-403 xero-api