前置:
开发某微信小程序,要求走https,因为后端框架采用SpringCloud,入口统一为SpringCloud Gateway,在某云上申请了证书,如下:
然后坑来了,因为SpringCloud Gateway采用webflux,netty形式,某度搜索,说使用IIS服务器类型,配置如下:
server:
port: 8082
ssl:
enabled: true
key-store: classpath:xxxx.pfx
key-password: xxxxx
key-store-type: PKCS12
?然后死活过不了,从头到尾报ERR_SSL_VERSION_OR_CIPHER_MISMATCH
排查过程:
- 看报错信息,首先排查CIPHER配置,某度说的最多就是加上CIPHER配置,如下:
ciphers:
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_RC4_128_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- SSL_RSA_WITH_RC4_128_SHA
结果:验证结果,不行,依然报此错
- 继续看报错信息,ERR_SSL_VERSION,看过去像是SSL版本不对?某度说,SSL版本太老,加上以下配置,去掉老旧SSL版本
enabled-protocols:
- TLSv1.2
结果:验证结果,不行,依然报此错
大招:
记录最后自己的解决方法:直接使用根证书或者JKS解决,抛弃某度上说的使用(IIS服务类型,是错的)
server:
port: 8082
ssl:
enabled: true
key-store: classpath:xxxx.jks
key-password: xxxx
key-store-type: JKS
简单配置,完美解决。
|