gpt4 book ai didi

java - 由于 Boxfuse Dev VM 上的 SSL 错误,Spring Boot 应用程序未启动

转载 作者:行者123 更新时间:2023-11-30 10:36:14 25 4
gpt4 key购买 nike

我有一个具有以下 SSL 配置的 Spring Boot 应用程序:

application.yml

server:
port: 443
ssl:
key-store: classpath:keys/${BOXFUSE_ENV}.p12
key-store-type: PKCS12
key-alias: mydomain.com
key-store-password: ${X_KEYSTORE_PASSWORD}

正确的特定于环境的 keystore 存在于类路径中并在启动后可访问,这已通过使用以下 PowerShell 脚本从控制台手动启动进行验证:

dev.ps1

$env:BOXFUSE_ENV="dev"
$env:X_KEYSTORE_PASSWORD="correctpassword"

java -jar target\myapp-1.0.0.12314.jar

手动启动后,应用程序在本地主机上成功启动,并且在生产和开发模式下都可以使用正确的证书。现在,我尝试使用以下命令在 PowerShell 中将其作为 Boxfuse 应用程序启动:

boxfuse run target\myapp-1.0.0.12314.jar -env=dev "-envvars.X_KEYSTORE_PASSWORD=correctpassword"

应用程序无法启动此堆栈跟踪:

vb-c2b995f3 -> 2016-11-17 15:31:56.659 ERROR 636 --- [           main] o.apache.catalina.core.StandardService   : Failed
to start connector [Connector[HTTP/1.1-443]]
vb-c2b995f3 ->
vb-c2b995f3 -> org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-443]]
vb-c2b995f3 -> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
vb-c2b995f3 -> at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225)
vb-c2b995f3 -> at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedC
onnectors(TomcatEmbeddedServletContainer.java:234)
...
vb-c2b995f3 -> Caused by: java.lang.IllegalArgumentException: java.io.IOException: DerInputStream.getLength(): lengthTag
=109, too big.
vb-c2b995f3 -> at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:103)
vb-c2b995f3 -> at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:81)
...
vb-c2b995f3 -> Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.
vb-c2b995f3 -> at sun.security.util.DerInputStream.getLength(DerInputStream.java:561)
vb-c2b995f3 -> at sun.security.util.DerValue.init(DerValue.java:365)
vb-c2b995f3 -> at sun.security.util.DerValue.<init>(DerValue.java:320)
vb-c2b995f3 -> at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1914)

是什么让这两种启动应用程序的方式有如此大的区别?我该如何解决?

UPD:通过将 keystore 转换为 JKS 格式并将 keystore 类型设置为 PKCS12 解决了该问题。

UPD2:问题的根本原因在这里: https://bz.apache.org/bugzilla/show_bug.cgi?id=60450

最佳答案

key 长度可能指向可能需要启用的 JDK 无限强度加密。参见 https://cloudcaptain.sh/docs/payloads/springboot#jce

关于java - 由于 Boxfuse Dev VM 上的 SSL 错误,Spring Boot 应用程序未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40659255/

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