我正在尝试使用服务器端的自签名证书通过本地主机中的https访问Netty上运行的Spring Boot应用程序。
我的application.properties
如下:
server.ssl.enabled=true
server.ssl.key-store-type=JKS
server.ssl.key-store=test.jks
server.ssl.key-store-password=password
server.ssl.key-alias=testkey
我已经通过以下方式生成了密钥库:
keytool -genkeypair -alias testkey -keyalg RSA -keysize 4096 -keystore test.jks -validity 36500
我遇到以下错误:
io.netty.handler.codec.DecoderException:javax.net.ssl.SSLHandshakeException:收到致命警报:certificate_unknown 在io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472) 在io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
我试图将证书导入JDK信任库,甚至导入到OS,但仍然相同。一位消息人士建议将密钥别名命名为“ testkey”以使其正常工作,但该方法也不起作用。由于Google中没有其他提及此错误的信息,希望您能提供帮助。
答案 0 :(得分:1)
扩展@Peter答案-
从https://github.com/FiloSottile/mkcert/releases下载mkcert版本或直接从源代码构建。
在Windows上以p12格式生成自签名证书-
mkcert-v1.4.1-windows-amd64.exe -pkcs12 -p12-file self-signed-cert.p12 localhost 127.0.0.1 ::1
并将以下配置添加到Spring Boots属性文件-
server.ssl.key-store=classpath:self-signed-cert.p12
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit
注意-classpath
,如果要在self-signed-cert.p12
文件夹中添加resources
。如果要从特定位置运行server.ssl.key-store=./self-signed-cert.p12
答案 1 :(得分:0)
此server.ssl.key-store=test.jks
指定您的test.jks
位于项目的根文件夹中,因此请检查它是否确实存在。
如果此文件在类路径中的其他位置,则可以使用classpath
方案来指定文件的位置,即server.ssl.key-store=classpath:<path-to-the-file>/test.jks
答案 2 :(得分:0)
我设法通过使用https://github.com/FiloSottile/mkcert生成本地有效证书来解决