我试图通过 SSL 使用 Java RMI 来做到这一点,但后来我发现 SSL 证书将提供主机级别的身份验证,而不是进程级别的身份验证。
另外,我将密钥库的密码存储在配置中;因此证书可以被另一个攻击者进程使用,并且可以通过身份验证。
我试图通过 SSL 使用 Java RMI 来做到这一点,但后来我发现 SSL 证书将提供主机级别的身份验证,而不是进程级别的身份验证。
另外,我将密钥库的密码存储在配置中;因此证书可以被另一个攻击者进程使用,并且可以通过身份验证。
用于 SSL/TLS 的 X.509 证书可能用于识别主机名以外的其他内容(这通常已用于客户端证书)。
与服务器建立 SSL/TLS 连接时涉及两种类型的验证:
默认情况下,JavaSSLSocket
不会执行第二步,除非您添加一些内容来执行此操作。(在 Java 7 中,一些新的 SSL 参数允许您在信任管理器中这样做,但仅限于特定协议。)
您需要找到一种方法来定义您希望如何识别您的其他应用程序和进程,使用主机名以外的其他内容,使用这些命名约定颁发证书,并让您的客户端应用程序检查这一点。
您应该能够在一个中实现您自己的身份验证机制SSLSocketFactory
,在每个方法中返回套接字之前,将该工厂用于您的 RMI 应用程序,如下所述:https ://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based1