各位高手,小弟问个问题。项目决定在rmi远程操作时,传输的数据必须为密文形式发送。怎么建立rmi,生成证书不说了,只是我自定义了sslsocket,服务端代码大致如下(我稍作了修改):
public class RMISSLServerSocketFactory implements RMIServerSocketFactory { private SSLServerSocketFactory ssf = null; public RMISSLServerSocketFactory(String server_crt, String client_crt,
String password) throws Exception {
try {
SSLContext ctx = SSLContext.getInstance("TLS"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory tmf = TrustManagerFactory
.getInstance("SunX509"); KeyStore ks = KeyStore.getInstance("JKS");
KeyStore tks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(server_crt), password.toCharArray());
tks.load(new FileInputStream(client_crt), password.toCharArray()); kmf.init(ks, password.toCharArray());
tmf.init(tks); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); ssf = ctx.getServerSocketFactory();
} catch (Exception err) {
err.printStackTrace();
}
} public ServerSocket createServerSocket(int port) throws IOException {
SSLServerSocket mysslsocket = (SSLServerSocket)ssf.createServerSocket(port);
return mysslsocket;
}客户端简单:
ppublic class RMISSLClientSocketFactory implements RMIClientSocketFactory,
Serializable {
public Socket createSocket(String host, int port) {
try {
SSLSocketFactory factory=(SSLSocketFactory)SSLSocketFactory.getDefault(); Socket s=factory.createSocket("localhost",port); return s;
} catch (Exception err) {
err.printStackTrace();
}
return null;
}
可是我用抓包工具查看还是属于明文传输,这是为什么呢,难道有哪里设置不对吗
public class RMISSLServerSocketFactory implements RMIServerSocketFactory { private SSLServerSocketFactory ssf = null; public RMISSLServerSocketFactory(String server_crt, String client_crt,
String password) throws Exception {
try {
SSLContext ctx = SSLContext.getInstance("TLS"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory tmf = TrustManagerFactory
.getInstance("SunX509"); KeyStore ks = KeyStore.getInstance("JKS");
KeyStore tks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(server_crt), password.toCharArray());
tks.load(new FileInputStream(client_crt), password.toCharArray()); kmf.init(ks, password.toCharArray());
tmf.init(tks); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); ssf = ctx.getServerSocketFactory();
} catch (Exception err) {
err.printStackTrace();
}
} public ServerSocket createServerSocket(int port) throws IOException {
SSLServerSocket mysslsocket = (SSLServerSocket)ssf.createServerSocket(port);
return mysslsocket;
}客户端简单:
ppublic class RMISSLClientSocketFactory implements RMIClientSocketFactory,
Serializable {
public Socket createSocket(String host, int port) {
try {
SSLSocketFactory factory=(SSLSocketFactory)SSLSocketFactory.getDefault(); Socket s=factory.createSocket("localhost",port); return s;
} catch (Exception err) {
err.printStackTrace();
}
return null;
}
可是我用抓包工具查看还是属于明文传输,这是为什么呢,难道有哪里设置不对吗
解决方案 »
- 计算器开发四则运算计算过程中得到最后操作符后,前一个操作符的值为null
- Java图片路径问题
- 键盘读取字符
- 百思不得其解,如何判断两个长方形是否有部分重叠呢?
- 关于写文件的问题(星期一结帖)
- java怎么将网页通过javamail发送到别人的邮箱,在邮件正文显示网页内容,而不是他的网页源代码
- 一个关于文件上传的问题
- 来来来,编程累了的兄弟们,来欣赏一下alienbat(亡灵法师)这个跳梁小丑和它那一堆马甲的精彩表演吧,放松一下
- 我在EditPlus里配置了两个用户工具,怎么都不能用啊?
- 有谁知道Editplus2的注册码?
- 用户界面线程中光标位置总是重置问题
- 子类调用父类static方法怎么获得子类类名?
应该sslsocket都是属于明文传输的吧?