android、android 和 ios 浏览器中的 nanohttpd https 服务器连接失败
nanohttpd https server in android , android and ios browser connect fail
我尝试在android建立一个https服务器供其他手机连接,但是
只有iphone6有时可以连接,ipod,android浏览器都无法获取网络服务器内容。
(浏览器消息是无法建立安全连接)
我使用nanohttpd的simpleServerClass来建立它。
我的 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());
}
谁能帮帮我?
谢谢。
我找到了答案
启动 nanohttpd 服务器时,需要为每个连接套接字设置超时毫秒数,特别是 https 请求。
我尝试在android建立一个https服务器供其他手机连接,但是 只有iphone6有时可以连接,ipod,android浏览器都无法获取网络服务器内容。 (浏览器消息是无法建立安全连接) 我使用nanohttpd的simpleServerClass来建立它。
我的 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());
}
谁能帮帮我? 谢谢。
我找到了答案 启动 nanohttpd 服务器时,需要为每个连接套接字设置超时毫秒数,特别是 https 请求。