javax.net.ssl.SSLHandshakeException通过Cajo通过ssl连接时出现问题

javax.net.ssl.SSLHandshakeException通过Cajo通过ssl连接时出现问题,java,ssl,rmi,cajo,Java,Ssl,Rmi,Cajo,我正在开发一个Cajo实现,需要让它通过SSL运行。无论出于何种原因,都会引发javax.net.ssl.SSLHandshakeException。任何人都可以提供一些关于如何通过SSL让Cajo工作的帮助吗?我正在使用cajov1.175 我相信这是一个简单的问题,有一个简单的解决办法,但我是一个noob当谈到RMI 完整代码、证书和错误消息位于 非常感谢您的帮助 根据要求,这里是一些代码示例和错误消息。。。。 我从中获得的服务器套接字代码 Server.java Client.java 服

我正在开发一个Cajo实现,需要让它通过SSL运行。无论出于何种原因,都会引发javax.net.ssl.SSLHandshakeException。任何人都可以提供一些关于如何通过SSL让Cajo工作的帮助吗?我正在使用cajov1.175

我相信这是一个简单的问题,有一个简单的解决办法,但我是一个noob当谈到RMI

完整代码、证书和错误消息位于

非常感谢您的帮助

根据要求,这里是一些代码示例和错误消息。。。。 我从中获得的服务器套接字代码

Server.java Client.java 服务器输出 密钥库是:E:/tmp/keys/server.keyStore 密钥库类型为:jks 密钥库提供程序是: 初始化密钥库 SunX509类型的初始化密钥管理器

找到的密钥:mykey 链[0]=[ [ 版本:V3 主题:CN=Server,OU=Bar,O=Foo,L=Some,ST=Where,C=UN 签名算法:SHA256withRSA,OID=1.2.840.113549.1.1.11

密钥:Sun RSA公钥,2048位 模数:31434775225176154525188450095928359730439773654569875739006529498753775941836879335170711581341816270025050131366416621716655619068111128992563200107296330496960757120954961536110026288315112541900637725952135200671213302816918337984097464612976767550816989898982794412305446103091209963555696386835151485240210577795238128981652820232312019642106408583884850663783871435028385309369039684834482184818872915700300803897953631336567205645337828655696590723579859939321644377438059078563879623268616615009655624038507147063801873971704632278047739002847454047756775144357906262202283709 公众指数:65537 有效期:[自:2014年4月16日星期三08:53:44美国东部时间, 收件人:美国东部时间2014年7月15日星期二08:53:44] 发卡机构:CN=Server,OU=Bar,O=Foo,L=Some,ST=Where,C=UN 序列号:[4f991afd]

证书扩展:1 [1] :ObjectId:2.5.29.14临界性=错误 SubjectKeyIdentifier[ 键标识符[ 0000:FA 7D 37 D8 66 14 CC 5B A6高炉EA 53 74 63 91 8F..7.f。。 0010:EA 55 82 8F.U。。 ] ]

] 算法:[SHA256withRSA] 签名: 0000:54 67 10 1F 22 79 9F C1 39 02 B3 99 31 4E 4F B7 Tg..y..9..1编号。 0010:86 5B 6C B6 35 95 97 77 A0 49 80 EC 53 A4 7E C1.[l.5..w.I..S.]。。。 0020:3F B0 0F 20 7B 80 D3 6B 32 C2 4B E4 E2 53 C0 59?…k2.K..S.Y 0030:53 98 C3 4D 93 5E F7 10 E5 51 19 DF A5 B8 27 90 S..M..Q。 0040:58 AC 91 FA 5A 9A A0 73 CA C1 A0 08 A2 96 8E E2 X…Z…s。。。。。。。。
0050:DE C6 0D 63 9A 66 52 BD F4 22 3C 29 21 15 36 6F…c.fR..在客户端中,在执行查找后设置全局套接字工厂。否则它也适用于该工厂,并要求注册表使用SSL,但显然不是


您不应该使用RMISocketFactory。它在1998年被弃用,或者至少被RMIServerSocketFactory和RMIClientSocketFactory淘汰。

请在帖子中包含相关代码和错误。添加了代码和错误消息。谢谢。您应该将客户端上的系统属性javax.net.debug设置为ssl、握手、记录和分析调试Marcel:上面的消息来自javax.net.debug。。
private static int port = 61354;

@SuppressWarnings("javadoc")
public static void main(String args[]) throws Exception {
    String ip = InetAddress.getLocalHost().getHostAddress();
    Remote.config(ip, Constants.PORT, null, 0);

    java.rmi.server.RMISocketFactory.setSocketFactory(new cajotest.rmi.SecureRMISocketFactory());
    Cajo cajo = new Cajo();
    cajo.export(new ServiceImpl());

    System.out.println("Server running on " + InetAddress.getLocalHost() + ":" + Constants.PORT);
}
private static String host = "192.168.56.1";


public static void main(String args[]) throws Exception {
    System.out.println("Client using " + host + ":" + Constants.PORT);

    java.rmi.server.RMISocketFactory.setSocketFactory(new cajotest.rmi.SecureRMISocketFactory());

    Cajo cajo = new Cajo();
    cajo.register(host, Constants.PORT);

    Object refs[] = cajo.lookup(Service.class);
    if (refs.length > 0) {
        Service svc = (Service) cajo.proxy(refs[0], Service.class);
        String helloResponse = svc.sayHello("Mike");
        System.out.println(helloResponse);
    } else {
        System.out.println("No server objects found");
    }

    System.exit(0);
}