ssl是必需的密钥库和信任库吗?
我有以下的客户端和服务器,它使用SSL:ssl是必需的密钥库和信任库吗?
客户端代码(桌面):
SSLSocket socket= (SSLSocket)sslsf.createSocket(ip,Constants.CHAT_SERVER_PORT);
final String[] enabledCipherSuites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(enabledCipherSuites);
服务器代码(安卓):
SSLServerSocket ss=(SSLServerSocket)sslssf.createServerSocket(Constants.CHAT_SERVER_PORT);
final String[] enabledCipherSuites = ss.getSupportedCipherSuites();
ss.setEnabledCipherSuites(enabledCipherSuites);
while(true){
Socket s=ss.accept();
}
我使用他们不信任和密钥库。他们是强制性的?
如果您将被要求提供证书,即您是服务器还是服务器需要客户端身份验证,则只需要密钥存储库。
默认信任库随Java一起提供。如果您不指定另一个,则使用它。
请勿启用已禁用的密码套件。他们不安全。你只是避免了这个问题。解决这个问题。
如果我写的只是“SSLServerSocket ss =(SSLServerSocket)sslssf.createServerSocket( Constants.CHAT_SERVER_PORT); \t“它显示一条错误消息。该消息是“javax.net.ssl.SSLException:找不到任何密钥库条目以支持启用的密码套件。”在桌面系统(Oracle VM)上,它不会发生。 – 2013-05-13 03:11:33
正是我所说的。你是服务器,所以你需要一个密钥库。 – EJP 2013-05-13 06:25:53
好吧,我明白了。谢谢。 – 2013-05-14 04:00:44
最后用下面的代码我已经解决了Android的服务器密钥库问题: -
try{
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(Dummy.class.getResourceAsStream("IPMessengerServerKeystore"), "dhar9654".toCharArray());
String keyalg=KeyManagerFactory.getDefaultAlgorithm();
KeyManagerFactory kmf=KeyManagerFactory.getInstance(keyalg);
kmf.init(keyStore, "dhar9654".toCharArray());
SSLContext context = SSLContext.getInstance("TLS");
context.init(MainActivity.kmf.getKeyManagers(), null, null);
SSLServerSocket ss=(SSLServerSocket)context.getServerSocketFactory().createServerSocket(Constants.CHAT_SERVER_PORT);
}catch(Exception e){
e.printStackTrace();
}
看到这个职位,我只是举了一个例子,以建立一个没有任何HTTPS连接(使用默认值) :http://*.com/questions/16504527/android-https-post-how-to-do/16507195?noredirect=1#comment23697931_16507195 – tbkn23 2013-05-12 14:06:31