spring cloud gateway 实现https

spring cloud gateway 实现https

一、windows安装openssl

http://slproweb.com/products/Win32OpenSSL.html

二、配置环境变量

在环境变量path中加入openssl的安装路径下的bin包

三、查看是否正确安装

进入命令行 输入openssl看有无输出即可

四、创建自签名证书

进入cmd命令行操作,生成文件路径默认为当前cmd命令路径(用户根目录)

0)格式说明

实际上自签名证书的所有格式都是pem格式,但是我们为它命名为不同的后缀是为了便于区分

  • .key 为密钥
  • .csr 为证书申请文件
  • .crt 为证书
1)生成私钥
openssl genrsa -out root_private.key 1024
# 下面这个是生成有密码的私钥
openssl genrsa -des3 -out CA/root.key 1024

1024为密钥长度

2)生成公钥
openss lrsa -in root_private.key -pubout -out root_public.key
3)使用密钥生成证书申请文件
openssl req -new -out root.csr -key root_private.key
4)生成自签名证书
openssl x509 -req -in root.csr -out root.crt -signkey root_private.key -days 3650

标记生成3650天

5)将证书格式改成浏览器常用的p12格式
openssl pkcs12 -export -clcerts -in root.crt -inkey root_private.key -out root.p12 -name "root"

-name为设置别名

五、配置spring cloud gateway

官网信息

server:
  ssl:
    enabled: true
    key-alias: scg # 别名
    key-store-password: scg1234 # 密码
    key-store: classpath:scg-keystore.p12 # 位置
    key-store-type: PKCS12 # 类型

六、问题排查

1)SSLHandshakeException: no cipher suites in common

没有共同的密码套件,这个时候需要考虑两种情况

  • 服务端和客户端的tls版本不对
  • 服务端压根就没放证书

对于第一种情况,在服务端可以查看自己的证书信息看一下tls版本是多少,在客户端(浏览器)可以进入开发者模式查看security,如果使用了https那里会显示tls的版本

对于第二种情况,则需要检查是否真正在服务端放置好了数字签名证书

我出现的情况是,我以为找到了,但是实际上并没有

我配置的签名没有设置别名,但是我在配置文件中设置它的别名为空,导致了错误,但是并没有报错

server:
  ssl:
    enabled: true
    key-alias: 
    key-store-password: ky_env
    key-store: classpath:ky_env.keystore
    key-store-type: PKCS12

所以如果没有设置别名的,把alias这一行删除掉即可

2)前端调用接口无反应

后端会收到如下消息,则表示,使用了https加密的方式,但是是用http来链接。

17:49:31.056 [reactor-http-nio-3] ERROR reactor.netty.tcp.TcpServer  - [id: 0x6991a8d2, L:0.0.0.0/0.0.0.0:8080 ! R:/0:0:0:0:0:0:0:1:62338] onUncaughtException(SimpleConnection{channel=[id: 0x6991a8d2, L:0.0.0.0/0.0.0.0:8080 ! R:/0:0:0:0:0:0:0:1:62338]})
io.netty.handler.codec.DecoderException: io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record: ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值