当前位置: 首页 > 知识库问答 >
问题:

我在tomcat中配置SSL的方式有什么问题?

胡承悦
2023-03-14

首先,我正在尝试将我的学校java Web项目配置为HTTPS,所以我正在尝试制作一个自签名证书并将其导入tomcat。我的tomcat版本是9.0.591,我使用的是java 17。

我基本上遵循了tomcat官方网站上的文档。

我首先创建了一个密钥库,方法是运行这个精确的命令%JAVA\u HOME%\bin\keytool“-genkey-alias tomcat-keyalg RSA

这是我进入的

然后我简单地将其添加到tomcatserver.xml文件中-

<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="${user.home}/.keystore" keystorePass="changeit"
       clientAuth="false" sslProtocol="TLS"/>

我把这个添加到了网上。xml文件-

<security-constraint>
    <web-resource-collection>
        <web-resource-name>DigitalLibrary</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

现在我不会撒谎,我真的不知道web.xml文件中的代码是什么意思,所以如果你能解释一下,我会很感激的。我只知道它会让服务器自动转发到https,而不是超文本传输协议。

最后我运行了服务器,windows当然无法识别证书,所以我直接从chrome下载了CER文件,并通过mmc将其添加到受信任的根证书颁发机构。

当我再次尝试运行服务器时,证书仍然无法识别。我做错了什么让windows无法识别它?当我运行服务器时,它显然会出现,但windows不会识别它。。。。我尝试过将密钥库文件放在可信的根证书颁发机构中,但仍然不起作用。

提前谢谢。

共有2个答案

郎玮
2023-03-14

要完全理解web.xml看看servlet规范:https://download.oracle.com/otndocs/jcp/servlet-4-final-eval-spec/index.html

基本上,通过声明安全约束,应用程序会指示容器确保机密通信,这实际上是通过加密完成的。因此,容器不会转发HTTP请求,而是通过HTTP响应3xx(重定向)通知客户端通过HTTPS进行连接。只要客户端遵循该重定向,容器就可以让应用程序处理请求。

对于HTTPS流量,服务器(=Tomcat)需要提供TLS证书,您可能通过以下方式创建了该证书https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html

不知何故,我相信Tomcat在第一次运行时提供的证书(您添加到浏览器的信任库中)与下次运行时提供的证书不同。这足以成为浏览器再次拒绝该站点的理由。

微生慈
2023-03-14

梅塔:这不是编程或开发,可能会被关闭或移动。这不适合作为评论,但我同意将其删除或移动。

HTTPS证书必须包含用于连接到服务器的域名,或者如果使用IP地址,则必须包含IP地址(在internet上很少见,但在测试环境中并不少见),或者包含与域名匹配的通配符(可选)。

对于Chrome或Edge,您必须使用服务器的域名(s)或IP地址(es)将Subject替代名称扩展名添加到证书中。请参阅keytools留档。对于其他浏览器,您可以这样做或(至少目前)将服务器的一个名称或地址作为'Common Name'放在主题中,这就是keytools不准确地描述为"First and Last Name"(但请注意确认显示为CN,这是Common Name的正确缩写)。

 类似资料:
  • 当我运行这个应用程序时,它抱怨说: org.xml.sax.saxParseException:schemaLocation:schemaLocation值=

  • 我正在尝试在eclipse中为java配置带有Tomcat 7的SSL。我已经配置了server.xml: 我正在做一个应用程序客户机/服务器,服务器工作正常,但当我执行客户机时,我出现以下错误: 线程"main"中的异常process_recordClientHandlerException: javjavax.net.ssl.SSLHandshakeException:sun.security

  • 我使用selenium网格来实现功能测试,我将其与testNG结合起来,以同时运行多个测试。当我运行testNG时,firefox开始执行selenium脚本,但问题是我不能同时拥有超过5个浏览器,我不知道为什么。这是我启动中心和节点的方式。 中心: 启动java-jar%seleniumPath%-端口4444-角色集线器-nodeTimeout 1000 节点: 启动java-jar%sele

  • 第2步。在server.xml中,增加以下内容: 启动时https://localhost:8443错误为加载资源失败:::ERR_FAILED。我错过的任何设置。请帮忙。

  • 主要内容:1 Tomcat生成SSL证书,2 使用SSL证书1 Tomcat生成SSL证书 运行以下命令以生成证书: 在Windows上: 在Linux上: 该工具将询问一些问题以提供证书。证书将位于文件夹中,证书名称为"tomcat"。您可以使用以下方法检查证书: 在Windows上: 在Linux上: 2 使用SSL证书 编辑文件: 在Windows上: 在Linux上: 并添加一个SSL连接器。 重新启动Tomcat,您就完成了。现在,您可以在Tom

  • 我对在本地计算机上为Tomcat配置SSL有点困惑。首先,我应该需要用keytool创建一个新的keystore吗?然后,我是否应该将现有. pfx证书文件导入到新创建的java密钥库(。jks文件)?最后,导出一个新的blabla.pfx文件,并添加一个在443端口上运行的新连接器,如下所示: 什么是卡塞特?我是否也应该创建一个新的 cacerts 文件并将其添加到本地服务器?我是否需要做一些事