进程如何在同一主机上与另一个进程进行安全身份验证和通信

时间:2012-09-24 07:40:06

标签: authentication ssl process ipc rmi

我尝试使用基于SSL的Java RMI执行此操作,但后来我发现SSL证书将提供主机级别身份验证而不是进程级别身份验证。

另外,我在配置中存储密钥库的密码;所以证书可以被其他攻击者进程使用,并且可以进行身份​​验证。

1 个答案:

答案 0 :(得分:1)

用于SSL / TLS的X.509证书可能用于识别除主机名之外的其他内容(这通常已经用于客户端证书)。

建立与服务器的SSL / TLS连接时涉及两种类型的验证:

  • 证书验证本身:验证证书在使用时是否可信并且是否符合所需目的,通常使用RFC 3280 / RFC 5280中描述的PKI。
  • 主机名验证:一旦它信任证书是真的,客户端就会检查它是否是它正在寻找的服务器。这是特定于协议的(例如RFC 2818,HTTPS第3.1节),但已针对RFC 6125中的大多数协议进行了推广。(这类似于检查护照上的图片是否与您面前的名称相匹配,而不仅仅是接受任何有效的护照。)

默认情况下,Java的SSLSocket不执行第二步,除非您添加一些内容。 (在Java 7中,一些新的SSL参数允许您在信任管理器中执行此操作,但仅适用于特定协议。)

您需要的是找到一种方法来定义您希望如何识别其他应用程序和进程,使用除主机名之外的其他内容,使用这些命名约定颁发证书,并让您的客户端应用程序对此进行检查。< / p>

您应该能够在SSLSocketFactory内实现自己的身份验证机制,然后在每个方法中返回套接字,使用RMI应用程序的工厂,如下所述:https://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based1