nacos2.2.3版本安装
前情
威胁情报组收到事件情报,部分单位发现Nacos存在权限认证绕过的Nday漏洞(CVE-2021-29441),据在野验证,该漏洞在Nacos版本2.0.4及之前可复现。
nacos2.2.3升级安装
最新版本下载地址:https://github.com/alibaba/nacos/releases
参考来源:https://nacos.io/zh-cn/docs/auth.html
-
下载安装包
-
主要配置项(application.properties)
nacos.core.auth.enabled=true #key和value对应的值可以随意指定,但在集群中需要保持一致 nacos.core.auth.server.identity.key=nacos nacos.core.auth.server.identity.value=nacos #secret.key的value长度需要大于32位,且是Base64加密串 nacos.core.auth.plugin.nacos.token.secret.key=bmFjb3MhQ0NIaGFtQDIwMTYwOTA5QDEyMzQ1Njc4OQ=
-
nacos.core.auth.plugin.nacos.token.secret.key的生成(Base64加密)
@Test public void encode(){ String src ="nacos.core.auth.plugin.nacos.token.secret.key对应的自定义的密钥值"; sun.misc.BASE64Encoder en = new sun.misc.BASE64Encoder(); String encodeStr = en.encode(src.getBytes()); System.out.println(encodeStr);//密钥值 System.out.println(encodeStr.length());//查看密钥值的长度,必须大于32 }
//密钥值的解密 @Test public void decode() throws IOException { sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder(); String decodeStr = "bmFjb3MhQ0NIaGFtQDIwMTYwOTA5QDEyMzQ1Njc4OQ="; byte[] data = dec.decodeBuffer(decodeStr); System.out.println(new String(data)); }
-
修改nacos登录密码
通过以上配置,成功启动nacos后,登录密码如果报错,使用以下方式修改密码
可以正常登录忽略以下操作
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> <scope>test</scope> </dependency>
@Test public void nacosPasswordGeneric(){ System.out.println(new BCryptPasswordEncoder().encode("自定义的nacos登录密码"));//比如这里密码是nacos }
-
将生成结果复制到mysql数据库中nacos对应的数据库中的users表中的password字段中
username password enabled nacos $2a 10 10 10k32AhqJm9iZ/JQTsZ71G/OFKwhspTrTPId/B9iwdxy9DnDAsc.HXa 1 -
完成以上步骤即可升级完成,正常登录,后续可导入旧版的配置文件