[英]Is keystore and truststore mandatory for ssl?
我有以下使用SSL的客户端和服务器:
客户端代码(桌面):
SSLSocket socket= (SSLSocket)sslsf.createSocket(ip,Constants.CHAT_SERVER_PORT);
final String[] enabledCipherSuites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(enabledCipherSuites);
服务器代码(Android):
SSLServerSocket ss=(SSLServerSocket)sslssf.createServerSocket(Constants.CHAT_SERVER_PORT);
final String[] enabledCipherSuites = ss.getSupportedCipherSuites();
ss.setEnabledCipherSuites(enabledCipherSuites);
while(true){
Socket s=ss.accept();
}
我在没有信任库和密钥库的情况下使用它们。 他们是强制性的吗?
仅当要询问您的证书时才需要密钥库,即您是服务器还是服务器需要客户端身份验证。
Java附带了一个默认的信任库。 如果您不指定另一个,则使用它。
不要启用禁用的密码套件。 他们是不安全的。 您只是在避免问题。 解决这个问题。
最后,使用以下代码解决了Android Server的密钥库问题:-
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.