java - 使用自签名证书时 Tomcat 服务器未发生 SSL/TLS 通信

标签 java rest tomcat https ssl-certificate

我已使用自签名证书配置 Tomcat 服务器 (apache-tomcat-9.0.1)。在 server.xml 上添加了所需的配置,并在 conf 文件夹中复制了 .jks 文件。

Create Self Signed Certificate Configure Tomcat with SSL Stuff

HTTPS 按预期在浏览器上运行。

在进行 HttpsURLConnection 调用以获取 REST API 时禁用 SSL 验证

Certificate Exception Stuff Disable Certificate Exception

有效! -

在 Server.xml 上 -= 仅配置了 8443 端口。 在配置的 Web 应用程序安全约束上:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>OVS</web-resource-name>
        <!-- all URLs are protected -->
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <!-- redirect all requests to HTTPS -->
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Tomcat 服务器启动时在任何地方都没有显示任何异常。

但是 Tomcat 服务器在使用自签名证书时没有发生 SSL/TLS 通信?。 Wireshark 捕获了数据包,预计会看到 TLS 数据包或 SSL 握手但什么也没有,只有 TCP 数据包。

为什么 SSL 握手没有发生?,好像是因为它只验证 SSL 服务器证书? (因为客户端身份验证是假的)

   <Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="150"
    port="8443" keyAlias="london" keystoreFile="conf/londonkey.jks" keystorePass="sumit123"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" /> 

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

您是否曾在配置自签名证书等内容后测试过是否进行了 SSL/TLS 通信?

编辑

AS 据我所知,要在两个网络实体之间进行 SSL 通信,比如 A 和 B,两者都必须有自己的私钥和公共(public)证书,但在上面我们只配置了带有证书和私钥的服务器,与客户端无关, 请更正 ?

我检查了各种 example : posts ,但都在谈论生成 key 和只配置 Tomcat 服务器。对于测试,它的对话就像浏览器一样会显示证书异常,接受该异常并且所有设置都将被设置,没有我在哪里找到关于我们实际配置 Tomcat 服务器的实际 TLS/SSL 握手的讨论。

最佳答案

不,如果非浏览器,tomcat 中的 ssl 证书是不够的 客户 做两种方式的SSL: 在客户端导入tomcat的证书并导入 tomcat中的客户端证书 这样你就可以实现2way ssl 您只需要创建适当的 ssl 上下文 或覆盖 javax.ssl.* 其中包括 keystore keystore 密码和 key 密码(如果有) 就这样

关于java - 使用自签名证书时 Tomcat 服务器未发生 SSL/TLS 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625183/

相关文章:

java - JQuery 验证 - 如何在 "remote"方法中正确检索表单字段值?

java - 使用 Servlet 重定向 REST 请求

java - 如何在 Apache 中禁用来自 mod_jk 代理应用程序服务器的某些响应 header 的压缩

Java - 单击鼠标时,tick() 循环会导致多个操作

java - 从html访问WEB-INF/jsp

rest - 无法使用 REST API 和curl 从 Azure 文件存储检索文件列表

java - 正确的交互式网站系统设计理念/方法?

java - 在ubuntu中重新启动java应用程序

shell - 在shell脚本中静默安装JDK1.6

java - apache tomcat 服务器的问题总是运行一个程序,它显示端口 8080 已被使用..?