nacos2.2启动报错The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA

1. 问题描述

这几天搭建了一个微服务项目,使用nacos2.2来做注册和配置中心,但是启动nacos的时候发现报错,查看log后发现报的是,

Caused by: io.jsonwebtoken.security.WeakKeyException: The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA algorithm.  The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HMAC-SHA algorithms MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size).  Consider using the io.jsonwebtoken.security.Keys#secretKeyFor(SignatureAlgorithm) method to create a key guaranteed to be secure enough for your preferred HMAC-SHA algorithm.  See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
    at io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:96)
    at com.alibaba.nacos.plugin.auth.impl.JwtTokenManager.processProperties(JwtTokenManager.java:75)
    ... 47 common frames omitted

 

2. 解决方案

废了半天劲终于在nacos官网上找到了答案,nacos2.2是默认开启鉴权的,所以需要在application.properties中的配置信息。在nacos2.2的application.properties找到nacos.core.auth.default.token.secret.key,默认情况下nacos.core.auth.default.token.secret.key是没有值得,所以导致启动nacos后报上面的错,根据官网说的,需要在启动nacos前给nacos.core.auth.default.token.secret.key填个256bit的token值,也可以复制官网上给的默认token值 SecretKey012345678901234567890123456789012345678901234567890123456789,这样问题就解决了。

下面的是官网给出的解决方案。

自定义密钥

开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为:

注意:

  1. 文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。
  2. 在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。
  3. 密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。
### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

### 2.1.0 版本后
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。例如下面的的例子:

### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

### 2.1.0 版本后
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

注意:鉴权开关是修改之后立马生效的,不需要重启服务端。

根据你提供的引用内容,出现 "The driver has not received any packets from the server." 错误是由于MySQL连接超时导致的。MySQL服务器有一个默认的"wait_timeout"参数,它规定了一个连接的空闲时间超过该时间后会自动断开连接。连接池在判断连接是否有效时,并没有校验连接的有效性,因此当应用申请使用已经超时的连接时,就会导致该错误的出现。 为了解决这个问题,你可以尝试以下方法: 1. 修改MySQL的"wait_timeout"参数:在my.cnf文件中,将"wait_timeout"的值增大到适当的时间,例如设置为1年(31536000秒)。 2. 检查my.cnf文件的位置:在Ubuntu系统中,默认的my.cnf文件路径可能会有所不同。你可以尝试在/etc/mysql/或/etc/mysql/mysql.conf.d/目录下查找my.cnf文件。如果仍然找不到该文件,你可以创建一个新的my.cnf文件并添加需要修改的参数。 3. 检查MySQL的端口号:如果你重新安装了MySQL,并且遇到了端口号为0的情况,你可以确保端口号被正确设置为3306。 总结一下,你在nacos启动时遇到的报错"The driver has not received any packets from the server."是由于MySQL连接超时导致的。你可以通过修改MySQL的"wait_timeout"参数、确认my.cnf文件的位置以及检查MySQL的端口号来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [今天遇到一个错误The driver has not received any packets from the server.](https://blog.csdn.net/ShiningSilver/article/details/108473659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值