nanohttpd https服务器在android,android和ios浏览器连接失败

时间:2015-07-16 07:46:29

标签: android https webserver nanohttpd

我尝试在Android中建立一个https服务器,供其他手机连接,但是 只有iphone6有时可以连接,ipod,android浏览器都无法获取webserver内容。 (浏览器消息无法建立安全连接) 我使用nanohttpd的simpleServer类来建立它。

我的CA就在这里

http://www.mediafire.com/download/53f6e9uveb47kqv/ca.cer //供客户下载

http://www.mediafire.com/download/v9i58n38yb85co5/server.p12 //用于加载密钥库的服务器

CA密码都是单一的。

这是我的sslServerSocket代码

    char[]kspass = KEYSTOREPASS.toCharArray();
    char[]ctpass = KEYSTOREPASS.toCharArray();
    try {


        KeyStore ks = KeyStore.getInstance("PKCS12");
        //ks.load(new FileInputStream("file:///android_asset/singuler.keystore"),kspass);
        ks.load(getResources().getAssets().open("server.p12"),kspass);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(ks, ctpass);
        TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("X509");
        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(kmf.getKeyManagers(), null, null);

        //webServer.makeSecure(NanoHTTPD.makeSSLSocketFactory(ks, kmf.getKeyManagers()));
        webServerSSL.makeSecure(sc.getServerSocketFactory());

    } catch (Exception e) {
        // TODO: handle exceptionser
        Log.i("test", e.toString());
    }



    try {
        webServer.start(15);
        webServerSSL.start(15);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        webServer = null;
        webServerSSL=null;
        Log.i("test", e.toString());
    }

任何人都可以帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案 启动nanohttpd服务器时,需要为每个连接套接字设置超时毫秒,特别是https请求。