从 crt 和 key 创建 jks,然后配置 Tomcat

Create jks from crt and key and than configure Tomcat

提问人:Andrea P. 提问时间:10/18/2023 最后编辑:Andrea P. 更新时间:10/20/2023 访问量:59

问:

我从我的客户端收到了 *.crt、*.key 和 *.ca-bundle 文件,我的环境使用 jre7。

我需要创建 *.jks 文件来配置 Tomcat7。

我读到了这个从 .crt 和 .key 文件创建一个 .jks,这是可能的,但不幸的是,在这个命令之后的最后

C:\Program Files\Java\jre7\bin>keytool -importkeystore -srckeystore C:\keystore\mykey.pfx -srcstoretype pkcs12 -srcalias 1 -srcstorepass mypass -destkeystore C:\keystore\local.jks -deststoretype jks -deststorepass mypass -destalias myAlias

我收到错误

keytool error: java.io.IOException: parseAlgParameters failed: DER input not an octet string

如何生成jks文件并避免该错误?

生成 jks 文件后,我将它移动到 ${TOMCAT_HOME}\conf 文件夹中。

此 Tomcat 配置是否正确?

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
    maxThreads="200" SSLEnabled="true" scheme="https" secure="true" 
    clientAuth="false" sslProtocol="TLSv1.2" keystoreFile="conf\local.jks" keystorePass="mypass" sslEnabledProtocols="TLSv1.2" />

提前致谢

java tomcat https jks crt

评论

0赞 dave_thompson_085 10/18/2023
不是编程或开发,而是:您使用的是 OpenSSL >= 3.0.0 吗?如果是这样,它使用旧 Java 未处理的“现代”加密(特别是 PBES2/PBKDF2)创建 PKCS12;添加到命令中。(或者,如果您想要对证书进行强加密,这并不是真正需要的,但有些人喜欢,那就这样做吧。是的,即使它实际上是 3DES 而不是 DES,它也是拼写的。-legacyopenssl pkcs12 -export-legacy -descert-descert
0赞 Andrea P. 10/18/2023
是的,我使用了 3.1.3。如果我尝试添加 -legacy,我会收到以下消息:pkcs12:无法加载提供程序旧版 提示:使用 -provider-path 选项或OPENSSL_MODULES环境变量。F8210000:error:12800067:DSO support routines:win32_load:无法加载共享库:crypto\dso\dso_win32.c:108:filename(C:\Program Files\OpenSSL\lib\ossl-modules\legacy.dll) F8210000:error:12800067:DSO support routines:DSO_load:无法加载共享库:crypto\dso\dso_lib.c:152: F8210000:error:07880025:common libcrypto routines:provider_init:reason(524325):crypto\provider_core.c:904:name=旧版
0赞 dave_thompson_085 10/19/2023
好的,您的 openssl 构建或安装已损坏。如果您想追求这一点,我们将需要构建、安装和可能的配置的详细信息,我不确定 SO 是否是正确的地方。或者,它应该可以不调用遗留逻辑,而是显式指定(但不太方便)。-keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg SHA1

答:

0赞 Andrea P. 10/18/2023 #1

正如@dave_thompson_085所说,问题是openssl版本。 我安装了 1.1.1 版本,然后正确创建了 jks。

要使用在 Tomcat 中创建的 jks,请使用以下配置

<Connector SSLEnabled="true" clientAuth="false"  keyAlias="myalias" keystoreFile="conf\myalias.jks" 
    keystorePass="mypassword " keystoreType="JKS" maxThreads="200" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
    scheme="https" secure="true" sslProtocol="TLS"/> 

评论

0赞 Community 10/20/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。