我正在将我的应用程序与Xero集成,后者需要两个证书.我上传他们从帮助到Azure 此文章,但我仍然无法连接到Xero的API.我希望有人有将Xero合作伙伴应用程序与Azure Web App集成的经验.
我上传了两个pfx文件; 一个是自签名证书,另一个是Xero颁发的合作伙伴证书.后一个pfx文件包含两个证书; 一个Entrust商业私人子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 Partner SSL配置(使用云服务而非Web应用程序,因此我无法按照最后的步骤操作)
403从文件加载X509Certificate2时禁止使用(在Xero论坛上发布有关同一问题的线程,发现该解决方案仅适用于一次;云服务)
Xero合作伙伴连接和Azure网站(已发布的解决方案建议使用VM)
我还没有尝试过:
将我的Web应用程序转换为云服务; 试图避免这样做,但我不确定涉及哪些步骤.
使用VM; 我没有找到关于如何做到这一点的任何详细步骤,但似乎是一个比上面更好的选择.
错误的屏幕截图: