首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自签名证书

自签名证书
EN

Stack Overflow用户
提问于 2013-02-21 22:58:30
回答 2查看 1.1K关注 0票数 1

我使用带有自签名证书的主机。因此,我从域https://www.marpel.cz/下载了证书,并使用http://portecle.sourceforge.net/创建了.bks文件。

我需要建立https连接并从我的the服务中检索数据。我使用的是ksoap2库。我复制并使用了ksoap2维基中声明的一个类ConnectionWithSelfSignedCertificate

这就是我创建keyStore的方法

代码语言:javascript
复制
    MainActivity.java
    // Get an instance of the Bouncy Castle KeyStore format
    try {
        this.keyStore = KeyStore.getInstance("BKS");
    } catch (KeyStoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    // Get the raw resource, which contains the keystore with
    // your trusted certificates (root and any intermediate certs)
    InputStream in = this.getApplicationContext().getResources().openRawResource(R.raw.myCer);
    try {
        // Initialize the keystore with the provided trusted certificates
        // Also provide the password of the keystore
        this.keyStore.load(in, "myPass".toCharArray());
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        try {
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    try {
        this.sslSocketFactory = new ConnectionWithSelfSignedCertificate(this.keyStore).getSSLSocketFactory();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这是来自AsyncTask的代码

代码语言:javascript
复制
background task
final HttpsTransportSE transportSE = new HttpsTransportSE(URL, PORT, SERVICE, TIMEOUT);

    try {
        ((HttpsServiceConnectionSE) transportSE.getServiceConnection()).setSSLSocketFactory(this.sslSocketFactory);
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

如果我调用transportSE.call(SOAP_ACTION,信封);我得到IOException,则主机名'www.marpel.cz‘未被验证。我做错了什么?

我有一台ICS 4.1.2设备。

EN

回答 2

Stack Overflow用户

发布于 2013-02-22 22:19:55

首先,您是否使用自签名证书?

如果是,请访问以下链接:android-webservices-via-ksoap2-https

您需要额外的类来创建https连接和接受证书。当一切准备就绪后,您可以调用您的transportSE

票数 0
EN

Stack Overflow用户

发布于 2013-02-22 23:14:33

我第一篇文章中的代码运行良好。我发现自签名证书是为不同的域颁发的。我修复了证书,一切正常。

固定证书在此处运行https://www.marpel.cz:445/

谢谢你马丁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15005360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档