gpt4 book ai didi

Tomcat HTTPS 启用自签名证书失败

转载 作者:行者123 更新时间:2023-11-28 23:58:45 24 4
gpt4 key购买 nike

我创建了一个自签名证书,如下所示:

Created self-signed cert as shown below

这是我使用的命令:

keytool -genkey -v 
-keystore C:\softwares\apache-tomcat\KeyStore\selfcert.keystore
-keyalg RSA -storepass XXXX -validity 360

我将 server.xml 更新为如下:

<Connector SSLEnabled="true" clientAuth="false"
compressableMimeType="text/html,text/xml,application/xml" compression="on"
keystoreFile="C:\softwares\apache-tomcat\KeyStore\selfcert.keystore"
keystorePass="XXXX" maxThreads="150" port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
proxyPort="443" scheme="https" secure="true" sslProtocol="TLS"/>

当我运行服务器时,出现以下错误:

Feb 06, 2018 12:29:06 PM org.apache.catalina.util.LifecycleBase handleSubClassException
SEVERE: Failed to initialize component [Connector[org.apache.coyote.http11.Http11Protocol-8443]]
org.apache.catalina.LifecycleException: Protocol handler instantiation failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:911)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:530)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.startup.Catalina.load(Catalina.java:606)
at org.apache.catalina.startup.Catalina.load(Catalina.java:629)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:311)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)

我引用了多个论坛并尝试了多种方法,评论了少数听众和其他一些东西,但没有任何效果。请指导我。

最佳答案

我看到更多有问题的地方

1) 您的命令 kyetool 应该包含以下参数:

 -alias my.domain.cn

另见: https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html

2) 在 server.xml 中你有 protocol="org.apache.coyote.http11.Http11Protocol"。 你没有写你使用的是哪个版本的 Tomcat。但最好使用非阻塞连接器或 APR(来自 config tomcat 8 文档)。也许 org.apache.coyote.http11.Http11Protocol 在您的系统上不可用?

org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector
org.apache.coyote.http11.Http11AprProtocol - the APR/native connector.

您可以省略协议(protocol)参数。 Tomcat 在 PATH 环境变量中搜索 native 库。 See https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

更新

1) key 工具选项 -alias 不是必需的(是的,你是对的 EJP)。它用作默认别名“mykey”。但是如果你想生成第二个证书,你必须使用不同的别名。然而,根据我的经验,如果未使用限定名称 = 主机名,自签名证书会被 Oracle Web 服务拒绝

2) IO因为我不知道你使用的是哪个操作系统(可能是 Windows)和哪个版本的 Tomcat,Java,我假设是 Tomcat 8 或 9。从版本 8.5 开始,org.apache.coyote.http11.Http11Protocol 不再分发。解决方案是使用

`org.apache.coyote.http11.Http11NioProtocol`.
or
org.apache.coyote.http11.Http11Nio2Protocol

对于以前的版本:您还可以自行检查您的系统可以使用哪种协议(protocol)。在目录 $CATALINA_HOME/lib 调用

jar tvf tomcat-coyote.jar | grep org.apache.coyote.http11.Http11Nio

输出显示了您可以使用的 NIO 类。或者您可以避免定义协议(protocol):

then the implementation used by Tomcat is chosen automatically.

比如 Tomcat。

关于Tomcat HTTPS 启用自签名证书失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com