禁用自签名证书的使用者备用名称 (SAN) 验证

Red*_*gle 5 java rest ssl jboss wildfly

我有一个 WildFly 实例(让我们称之为实例 1),并将自签名证书添加到密钥库中。该证书是使用KeyStore Explorer 5.2.1创建的创建的。

\n\n

生成的证书仅指定 CN,即服务器名称\\主机名,其中实例 1生成的证书仅指定 CN,即安装我没有\xe2\x80\x99t 指定任何 SAN,因为我希望可以在本地(通过“127.0.0.1”或“localhost”)或远程(通过主机名或 LAN IP)访问安装在实例 1 上的应用程序。

\n\n

实例 1上仅安装了一个应用程序(我们称之为应用程序 A,它提供了多个 REST Web 服务

\n\n

我在另一台服务器上有另一个 WildFly 实例(让我们称之为实例 2)。使用密钥库资源管理器 5.2.1我将之前生成的证书导入到该实例的信任库中。

\n\n

实例 2只有 1 个应用程序(我们称之为应用程序 B)访问应用程序 A提供的 REST Web 服务

\n\n

如果应用程序 B指定了应用程序 A所在服务器的 IP 而不是主机名则会出现以下异常:

\n\n
    \n
  • javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:不存在主题备用名称
  • \n
\n\n

我不想\xe2\x80\x99 不想在 SAN 证书上指定 IP,因为如果实例 1所在服务器的 IP的服务器的 IP发生更改,那么在使用 LAN IP 调用 REST 服务的情况下,证书将变得无效。

\n\n

根据我\xe2\x80\x99所见,一个可能的解决方案是设置以下属性:

\n\n
<property name="org.jboss.security.ignoreHttpsHost" value="true"/>\n<property name="cxf.tls-client.disableCNCheck" value="true"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

他们都没有工作。

\n\n

任何有关此事的帮助将不胜感激。

\n