簡體   English   中英

BankID 和 CURL ERROR 77 或 CURL ERROR 60

[英]BankID and CURL ERROR 77 or CURL ERROR 60

我花了幾個小時試圖讓 cURL(在 PHP 中)與瑞典BankID 服務一起工作,並遇到以下兩個證書錯誤:

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 的代碼如下:

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 導出服務器證書的建議獲得了服務器證書,如SO 問題中所述。 證書文件位於正確的位置並且可讀。

結果證明問題出在證書文件本身的內容上。

首先,使用 Firefox 導出它不會為您提供正確的證書。 它應該從BankID 集成指南下載。 查看Production environmentTest environment部分中擴展的 header Issuer of server certificate ,並復制以開頭的實際證書字符串

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

並以

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

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

其次,如果您只是將它按原樣粘貼到文本文件中,那仍然不適用於 cURL。 它似乎需要以某種方式進行格式化,更精確地分解為 64 個字符的長行。

您可以使用在線工具,例如samltool.com - Format a X.509 certificate來執行此操作。 將您復制的文本粘貼到X.509 cert字段中,按Format X.509 certificate ,然后X.509 cert with header復制 X.509 證書字段中的文本。 將其粘貼到您服務器上的證書文件中(在我的例子中C:\test\bankid\bankid_test_server.pem )。 該文件現在應該以

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

接着是一堆 64 個字符的長行,並以

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

如果它仍然不起作用,請確保證書文件的路徑正確,PHP 可讀,並且您復制了正確的(生產/測試)證書,具體取決於您調用的是測試還是生產網址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM