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