具有公有和私有 IP 的自签名证书(Tomcat 7)

具有公有和私有 IP 的自签名证书(Tomcat 7)

我正在配置一台同时具有公有 IP 和私有 IP 的服务器。它没有任何关联的域名。

使用自签名证书访问以下URL可以正常工作:

    https://<PUBLIC IP>:8443

但是,当我尝试使用其私有 IP 访问该服务器时:

    wget https://<PRIVATE IP>:8443

我收到以下错误:

错误:无法验证由“/C=?/ST=?/L=?/O=?/OU=?/CN=Unknown”颁发的证书:遇到自签名证书。错误:证书通用名称“未知”与请求的主机名“”不匹配。要进行不安全的连接,请使用“--no-check-certificate”。

有没有办法在配置中指定应接受公共 IP 和私有 IP?

我还尝试在包含地址属性的 server.xml 中包含多个连接器,但它不起作用。

答案1

我认为您在这里遇到了两个根本问题。首先,虽然 Windows(据我所知)实现了中央证书存储和验证机制,应用程序通常会调用该机制来(例如)验证 SSL 证书,但 UNIX 应用程序都自行实现。因此,仅仅因为一个浏览器可以工作,并不意味着另一个浏览器或 也wget可以工作 - 而 PHP 脚本将做什么完全是个谜,并且完全取决于所讨论的库。

其次,您决定使用嵌入 IP 地址(而非主机名)的 SSL 证书,并且我们已经 问题在这些部分之前做过这些事情。

我个人认为,继续尝试使这一策略奏效并不是一个好的利用时间的方法。相反,注册一个域名 - 它们几乎不花钱,而且通常比 IP 地址更容易输入 - 并设置分割水平 DNS,以便内部客户端获得内部地址,外部客户端获得外部地址。这样可以消除两个都一次性解决您的问题。

答案2

看起来您正尝试从 Internet(使用 NAT)和内部 LAN(直接)访问服务器,这就是您使用两个 IP 地址的原因。如果是这种情况,请查看类似情况以及如何通过公共 IP 从 Internet 和 LAN 访问您的服务器:

Cisco 静态 NAT 在 LAN 端不起作用

从而避免证书混乱。(寻找具有辅助 IP 的解决方案。)

相关内容