加密的Web服务连接和pk12证书

时间:2008-12-08 03:20:21

标签: cocoa soap encryption

我需要制作一些代码来与SOAP Web服务进行通信。不幸的是,我无法获得与服务的连接,因为它需要使用特殊证书加密的SSL连接。我已经获得了一个pk12证书,当安装到我的钥匙串中时,我可以通过Safari手动访问SOAP服务,但是我无法从Cocoa Web服务中获得连接:( 有没有人对我可能需要做些什么才能让它发挥作用?

3 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。这是一张自签名证书吗?如果是这样,您可能会发现您需要做的就是更改此证书上的信任设置。

还有另一种解决方法,您可以说此网站应忽略信任设置,但这会让您对中间人攻击持开放态度。 SO上还有另一个关于这个主题的帖子:

Objective-C/Cocoa How do I accept a bad server certificate?

答案 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)