Spring WebFlux Netty SSL 与自签名证书错误
Spring WebFlux Netty SSL with Self Signed Certificate error
我正在尝试通过本地主机中的 https 在 Netty 上访问我的 Spring 引导应用程序 运行,在服务器端使用自签名证书。
我的 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: Received fatal alert: certificate_unknown
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
我尝试将证书导入到 JDK 信任库,甚至导入到 OS,但还是一样。一位消息人士建议将密钥别名命名为 "testkey" 以使其工作,但这也没有工作。由于 Google 中没有提及此错误,希望您能提供帮助。
这个server.ssl.key-store=test.jks
指定你的test.jks
位于项目的根文件夹中,所以检查它是否真的存在。
如果您在 class 路径的其他地方有此文件,您可以使用 classpath
方案来指定文件的位置,即 server.ssl.key-store=classpath:<path-to-the-file>/test.jks
生成本地有效证书来解决
扩展@Peter 的回答 -
从 https://github.com/FiloSottile/mkcert/releases 下载 mkcert 版本或直接从源代码构建。
在 Windows 上以 p12 格式生成 self-signed 证书 -
mkcert-v1.4.1-windows-amd64.exe -pkcs12 -p12-file self-signed-cert.p12 localhost 127.0.0.1 ::1
并将以下配置添加到 Spring 引导属性文件 -
server.ssl.key-store=classpath:self-signed-cert.p12
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit
注意 - classpath
如果您要在 resources
文件夹中添加 self-signed-cert.p12
。如果你想 运行 它来自特定位置 server.ssl.key-store=./self-signed-cert.p12
我正在尝试通过本地主机中的 https 在 Netty 上访问我的 Spring 引导应用程序 运行,在服务器端使用自签名证书。
我的 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: Received fatal alert: certificate_unknown at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
我尝试将证书导入到 JDK 信任库,甚至导入到 OS,但还是一样。一位消息人士建议将密钥别名命名为 "testkey" 以使其工作,但这也没有工作。由于 Google 中没有提及此错误,希望您能提供帮助。
这个server.ssl.key-store=test.jks
指定你的test.jks
位于项目的根文件夹中,所以检查它是否真的存在。
如果您在 class 路径的其他地方有此文件,您可以使用 classpath
方案来指定文件的位置,即 server.ssl.key-store=classpath:<path-to-the-file>/test.jks
扩展@Peter 的回答 -
从 https://github.com/FiloSottile/mkcert/releases 下载 mkcert 版本或直接从源代码构建。
在 Windows 上以 p12 格式生成 self-signed 证书 -
mkcert-v1.4.1-windows-amd64.exe -pkcs12 -p12-file self-signed-cert.p12 localhost 127.0.0.1 ::1
并将以下配置添加到 Spring 引导属性文件 -
server.ssl.key-store=classpath:self-signed-cert.p12
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit
注意 - classpath
如果您要在 resources
文件夹中添加 self-signed-cert.p12
。如果你想 运行 它来自特定位置 server.ssl.key-store=./self-signed-cert.p12