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的主要内容,如果未能解决你的问题,请参考以下文章