nacos2.2启动报错The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA
Posted 天空上尉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的配置信息为:
注意:
- 文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。
- 在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。
- 密钥需要保持节点间一致,长时间不一致可能导致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=
注意:鉴权开关是修改之后立马生效的,不需要重启服务端。
安装VisualSVN Server 报错The specified TCP port is occupied
安装过程中报错,如下图所示。
The specified TCP port is occupied by another service.Please stop that service or use another port.(指定tcp端口已被占用,请停止那个服务或是换一个端口使用)
开始看到这个错的时候,关于建议——请停止那个服务或是换一个端口使用,脑袋里只有停止服务,而忽略了换一个端口使用,于是,便去查是哪个服务使用了80端口,并决定停止那个服务——查看端口占用情况命令:netstat -oan
查看PID为4的家伙是谁命令:tasklist /FI "PID eq 4"
度娘给出的解决方法:修改注册表
然而我按照以上方法去做并没有起作用,因为System进程绝对不能结束,它是系统运行最基本的依靠,度娘是这样说的。于是才意识到应该去换端口,换成了http协议中的81端口,之后便安装成功了~
其实第一幅图下面的Server Port 还有第二个选择,不要选默认的我的是8082 选择这个之后就安装成功了。
以上是关于nacos2.2启动报错The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA的主要内容,如果未能解决你的问题,请参考以下文章
EasyCVR启动失败并报错LibEasySnap.dll:The specified module could not be found
MySQL5.7报错–initialize specified but the data directory has files
MySQL5.7报错–initialize specified but the data directory has files
struts 报错 No action config found for the specified url
webpack报错处理:The extension in the request is mandatory for it to be fully specified.