使用cURL和Laravel登录到soap API



我遇到了一些问题。我正在尝试使用SSL登录到Soap API我已经生成了.pem文件,可以通过执行以下来验证它是否良好

curl -v --cert mycertfile.pem --pass mypassword https://someurl.com:9443/login/

下面给我HTTP/1.1 202已接受

现在,当我本质上试图在laravel控制器中用以下内容做同样的事情时,我会得到以下错误";curl错误:错误:14094412:SSL例程:ssl3_read_bytes:sslv3警报坏证书">

这是我的控制器中的代码

$apiKey = 'mypassword';
$file = File::get(storage_path('app/certs/mycertfile.pem'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://someurl:9443/login/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('AUTH-KEY: ' . $apiKey));
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'mypassword');
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEY, $file);
$rawBody = curl_exec($ch);
if($rawBody === false)
{
$err = 'curl error: ' . curl_error($ch);
curl_close($ch);
echo $err;
return $err;
}
else
{
echo "response ==";
echo $rawBody;
echo "execu";
curl_close($ch);
return 'Operation completed without any errors';
}

有什么想法吗?为什么使用相同的键、相同的计算机、URL和.pem文件在命令行中使用curl是可以的,而在laravel中使用curl会出现这个错误?有趣的是,我确信这曾经是有效的,但后来升级到了PHP8和我认为的其他一些东西。也许这就是为什么,但我看不到任何关于PHP8的问题。

经过一点研究,我能够通过使用以下内容来实现上述功能。

$client = new SoapClient('location of wsdl file.wsdl', array(
'local_cert' => 'mycertfile.pem',
'passphrase' => 'mypassword',
// 'location' => 'https://webserviceurl/login/' 
)
);

最新更新