首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BankID和卷曲误差77或卷曲误差60

BankID和卷曲误差77或卷曲误差60
EN

Stack Overflow用户
提问于 2022-03-31 09:49:02
回答 1查看 110关注 0票数 0

我花了几个小时试图让cURL (在PHP中)使用瑞典BankID服务,并遇到以下两个证书错误:

代码语言:javascript
复制
CURL ERROR 60: SSL certificate problem: unable to get local issuer certificate

CURL ERROR 77: error setting certificate verify locations:
  CAfile: C:\test\bankid\bankid_test_server.pem
  CApath: C:\test\bankid\bankid_test_server.pem

我用来初始化cURL的代码如下:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);        
curl_setopt($ch, CURLOPT_CAINFO, getcwd().DIRECTORY_SEPARATOR.$bankidServerCertFile);
curl_setopt($ch, CURLOPT_CAPATH, getcwd().DIRECTORY_SEPARATOR.$bankidServerCertFile);
        
curl_setopt($ch, CURLOPT_SSLCERT, $clientCertFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $clientCertPass);
curl_setopt($ch, CURLOPT_SSLKEY, $clientCertKeyFile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $clientCertKeyPass);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

我尝试过各种不同的CURLOPT_CAINFOCURLOPT_CAPATH选项,但是我仍然得到了这两个错误中的任何一个(当我尝试一些选项的变化时,我得到了一个选项,当我尝试其他一些变化时,我得到了另一个错误)。

我按照建议使用Firefox导出服务器证书,如这个问题所述。证书文件位于正确的位置并可读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-31 09:49:02

结果发现问题是证书文件本身的内容。

首先,使用Firefox导出它并不能给出正确的证书。它应该从BankID集成指南下载。在Production environmentTest environment部分中的展开头Test environment下面查看,然后复制实际的证书字符串

-----BEGIN CERTIFICATE-----

并以

-----END CERTIFICATE-----

(包括起始行和结束行)。

第二,如果您只将cURL粘贴到文本文件中,那么它仍然不能正常工作。它似乎需要以某种方式格式化,更精确地细分为64个字符的长行。

您可以使用在线工具(如samltool.com -格式化X.509证书 )来执行此操作。将复制的文本粘贴到字段X.509 cert中,按Format X.509 certificate,然后从字段X.509 cert with header复制文本。将其粘贴到服务器上的证书文件中(在我的例子中是C:\test\bankid\bankid_test_server.pem)。该文件现在应该从

-----BEGIN CERTIFICATE-----

后面跟着一串64个字符的长行,最后以

-----END CERTIFICATE-----

如果它仍然不起作用,请确保证书文件的路径是正确的,它是PHP可读的,并且根据您是否调用测试或产品URL复制了正确的(生产/测试)证书。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71690412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档