带有自签名证书错误的Spring WebFlux Netty SSL

时间:2019-05-31 21:07:01

标签: ssl netty spring-webflux reactor-netty

我正在尝试使用服务器端的自签名证书通过本地主机中的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中没有其他提及此错误的信息,希望您能提供帮助。

3 个答案:

答案 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

Check this for more info

答案 2 :(得分:0)

我设法通过使用https://github.com/FiloSottile/mkcert生成本地有效证书来解决