SSL 对等方无法协商一组可接受的安全参数

问题描述

我正在尝试将 Swish Payment 与移动商务 Api 集成。

请求步骤。

  1. 从 Swish Portal 创建一个 .pem 文件
  2. 使用 .p12 文件创建私钥文件
  3. 使用此命令将其转换为 private.key

openssl pkcs12 -in out.p12 -nodes -out private.key -nocerts

  1. 从 Swish 下载 Swish_TLS_RootCA.pem 文件

这是我提出请求的方法。我还尝试了 api 的 v2 和 v1 版本,如您所见。 V2 已注释。 v2 也返回相同的响应。

    function createPaymentRequest()
{
    // $ch = curl_init('https://cpc.getswish.net/swish-cpcapi/api/v2/paymentrequests/11A86BE70EA346E4B1C39C874173F088');
    // curl_setopt($ch,CURLOPT_PUT,true);

    $ch = curl_init('https://cpc.getswish.net/swish-cpcapi/api/v1/paymentrequests');
    curl_setopt($ch,CURLOPT_POST,true);

    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,'2');
    curl_setopt($ch,CURLOPT_VERBOSE,true);
    curl_setopt($ch,CURLOPT_STDERR,fopen('PHP://output','w'));
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_FAILONERROR,CURLOPT_RETURNTRANSFER,true);
    // curl_setopt($ch,CURLOPT_PROXY_SSLCERTTYPE,"PKCS12");
    curl_setopt($ch,CURLOPT_CAINFO,getcwd()."/public/Getswish_Test_Certificates/Swish_TLS_RootCA.pem");
    curl_setopt($ch,CURLOPT_SSLCERT,getcwd() . "/public/Getswish_Test_Certificates/swish_certificate_202103261346.pem");
    curl_setopt($ch,CURLOPT_SSLKEY,getcwd() . "/public/Getswish_Test_Certificates/private.key");
    curl_setopt($ch,CURLOPT_SSLKEYPASSWD,"password");
    // curl_setopt($ch,CURLOPT_SSLCERTPASSWD,"password");



    curl_setopt(
        $ch,CURLOPT_HEADERFUNCTION,function ($curl,$header) use (&$headers) {
            // this function is called by curl for each header received
            $len = strlen($header);
            $header = explode(':',$header,2);
            if (count($header) < 2) {
                // ignore invalid headers
                return $len;
            }

            $name = strtolower(trim($header[0]));
            echo "[" . $name . "] => " . $header[1];

            return $len;
        }
    );

    $data = array(
        // "payeePaymentReference" => "0123456789","callbackUrl" => "https://www.kvkkolay.com/kiosk/auth",// "payerAlias" => "4671234768","payeeAlias" => "swishNumber","amount" => "100","currency" => "SEK","message" => "Kingston USB Flash Drive 8 GB"
    );
    $data_string = json_encode($data);

    curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        'Content-Type: application/json','Content-Length: ' . strlen($data_string)
    ));
    // $response = curl_exec($ch);

    // if (curl_errno($ch)) {
    //  echo 'Request Error:' . curl_error($ch);
    // }else{
    //  echo $response;
    // }
    $info = curl_getinfo($ch);
    print_r($info);

    if (!$response = curl_exec($ch)) {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    // $this->getPaymentRequest();
}

这里的连接有问题是日志消息。我搜索了所有 swish 和 ssl 相关的问题,但没有任何帮助。有人可以帮忙吗?

* 即将 connect() 到 cpc.getswish.net 端口 443 (#0) * 尝试 213.132.115.86... * 连接到 cpc.getswish.net (213.132.115.86) 端口 443 (#0) * 使用 certpath 初始化 NSS:sql:/etc/pki/nssdb * CA文件:/home/kvkkolay/public_html/public/Getswish_Test_Certificates/Swish_TLS_RootCA.pem CApath:无 * NSS:来自文件的客户端证书 * 主题:C=SE,O=9697326040,CN=1232900561 * 开始日期:格林威治标准时间 2021 年 3 月 26 日 10:46:36 * 到期日期:格林威治标准时间 2026 年 3 月 26 日 10:46:26 * 通用名称:1232900561 * 发行人:CN=Swedbank Customer CA1 v2 for Swish,serialNumber=SWEDSESS,O=Swedbank AB (publ),C=SE * NSS 错误 -12227 (SSL_ERROR_HANDSHAKE_FAILURE_ALERT) * SSL 对等方无法协商可接受的安全参数集。 * 关闭连接 0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...