实施瑞典 Swish 支付 - C# - 无法创建 SSL/TLS 安全通道 - 证书签名请求

Implementing Swedish Swish payment - C# - Could not create SSL/TLS secure channel - Certificate signing request

如这个问题中所述,我可以使用他们的测试帐户和测试证书连接 Swish。

然而,当使用我自己生成的证书时,我仍然遇到一般性错误 Could not create SSL/TLS secure channel 使用 C# HttpClient。

我一直在遵循这些 Swish 证书管理指南:

https://www.getswish.se/content/uploads/2015/11/Guide-Certifikatsadministration_20151210.pdf

https://www.getswish.se/content/uploads/2015/06/Guide-Swish-API-170324-utan-%C3%A4ndringsmarkering.pdf

由于我们使用的是 IIS,因此我使用以下方法创建了证书签名请求:IIS -> Server Certificates -> Create Certificate Request…。我选择位长度为 2048 的 Microsoft RSA Schannel Cryptographic Provider,因为文档说它应该是 PKCS#10 with 2048-bit RSA key。我的理论是我在这里做错了什么。因为我们现在正在开发这个应用程序不是 运行 在域名上,所以我将 Common Name 设置为 localhost。这可能是问题所在吗?如果是的话,我应该为它在我们的环境中工作赋予什么价值?正如我之前提到的,测试证书没有问题。

在此之后,我粘贴了在服务 https://getswishcert.bankgirot.se/ 上创建的文件中的值,并取回了 PKCS#7 文件(.p7b,也尝试过使用 .pem)。

然后我就没有去IIS -> Server Certificates -> Complete Certificate Request…导入文件了。

当导入 Certification Path 时,据我所知,其他一切看起来都不错。

我还尝试通过 MMC -> Select certificate -> right click -> All Tasks -> Export 将证书导出到 .pfx。选择使用私钥和密码保护导出它。然后在 Certificates - Current User 下导入它。然后我可以在 Chrome 中选择证书,但我收到错误 `ERR_SSL_PROTOCOL_ERROR。测试证书也适用于 Chrome。

原来证书没问题。问题是应用程序试图使用实时证书而不是 https://swicpc.bankgirot.se/(实时)连接到 https://mss.swicpc.bankgirot.se/(测试环境)。

通过 here 的日志记录找到。