我需要制作一些代码来与SOAP Web服务进行通信。不幸的是,我无法获得与服务的连接,因为它需要使用特殊证书加密的SSL连接。我已经获得了一个pk12证书,当安装到我的钥匙串中时,我可以通过Safari手动访问SOAP服务,但是我无法从Cocoa Web服务中获得连接:( 有没有人对我可能需要做些什么才能让它发挥作用?
答案 0 :(得分:0)
我遇到了类似的问题。这是一张自签名证书吗?如果是这样,您可能会发现您需要做的就是更改此证书上的信任设置。
还有另一种解决方法,您可以说此网站应忽略信任设置,但这会让您对中间人攻击持开放态度。 SO上还有另一个关于这个主题的帖子:
答案 1 :(得分:0)
通常,您必须将证书作为代码的一部分提供。例如,在C#中,您需要指定如下证书:
using System.Security.Cryptography.X509Certificates;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//some code creating your soap client
string cert_file = "C:\\prf_res.pem"; //You'll probably use the PEM format here, not the .p12 format
X509Certificate cert = new X509Certificate(cert_file);
soap_client.ClientCertificates.Add(cert);
//now you're set!
在PHP中,它将是:
$cert = "myCert.pem"; //notice it's in PEM format.
$client = new SoapClient($wsdl, array('local_cert' => $cert));
要从.p12制作PEM文件,您可以使用:
的OpenSSL> pkcs12 -in myCert.p12 -out myCert.pem -nodes -clcerts
答案 2 :(得分:-1)