Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring security SpringCloudConfig在客户端解密期间是否使用带强RSA的AES密钥 设置_Spring Security_Aes_Rsa_Spring Cloud_Spring Cloud Config - Fatal编程技术网

Spring security SpringCloudConfig在客户端解密期间是否使用带强RSA的AES密钥 设置

Spring security SpringCloudConfig在客户端解密期间是否使用带强RSA的AES密钥 设置,spring-security,aes,rsa,spring-cloud,spring-cloud-config,Spring Security,Aes,Rsa,Spring Cloud,Spring Cloud Config,我配置了一个由本地Git repo支持的Spring云配置服务器,并创建了一个Spring引导应用程序来使用SCC的配置。Git中的配置文件scc client.yml有两个纯文本属性和一个加密属性,app.secret: app: name: client-app port: 8085 secret: '{cipher}AgCGh ... X3pTW' 解密在客户端完成:bootstrap.properties在SCC服务器上有spring.cloud.config.server

我配置了一个由本地Git repo支持的Spring云配置服务器,并创建了一个Spring引导应用程序来使用SCC的配置。Git中的配置文件
scc client.yml
有两个纯文本属性和一个加密属性,
app.secret

app:
  name: client-app
  port: 8085
  secret: '{cipher}AgCGh ... X3pTW'
解密在客户端完成:
bootstrap.properties
在SCC服务器上有
spring.cloud.config.server.encrypt.enabled=false
bootstrap.yml
我的spring Boot应用程序包含:

...
encrypt:
  keystore:
    location: classpath:keystore.p12
    password: kspass
    alias: client-key
    secret: kspass
  key: client-key
  rsa:
    strong: true
...
keystore.p12包含用于加密
app.secret
值的密钥。我使用keytool生成了密钥:

keytool -genkeypair -alias client-key -keyalg RSA -deststoretype pkcs12 -keystore src/main/resources/keystore.p12 -keysize 4096 -storepass kspass -keypass kspass

问题: 在上面的设置中,Spring在客户端解密值时是否使用混合RSA加密方法


根据代码判断,一些AES相关组件在
o.s.s.r.c.rsasecretincryptor.decrypt()
方法中被调用,但我不太确定这是否表示一个完整的过程中使用了自生成的AES密钥。

Spring Cloud确实采用了Wikipedia链接中描述的混合算法。服务器或命令行客户端对数据进行加密。服务器、命令行客户端或客户端应用程序可以对其进行解密。请注意,客户端解密通常是最脆弱的,因为您必须使用与encyptor相同的私钥对其进行配置。

我不能100%确定“完全混合解密”是什么意思。您是否有指向定义的链接
RsaSecretEncryptor
生成用于加密的随机密钥。显然,当你解密时,它需要再次使用该密钥,因此此时它不会生成任何内容。@DaveSyer添加了“混合加密”概念的链接,但看起来你对它很熟悉:有RSA公钥-私钥对;在加密过程中,生成AES对称密钥来加密数据,然后该密钥由RSA公钥加密,加密数据和加密AES密钥都被发送到客户端;解密时,客户端使用RSA私钥获取AES密钥,然后使用该密钥解密数据。@DaveSyer您是说Spring Cloud Config server生成一个随机AES密钥,对其进行加密并将加密数据发送给客户端?如果我只使用RSA公钥(比方说使用第三方工具)加密数据并将加密值存储到存储库中会怎么样。Spring Boot客户端是否会尝试从加密字符串中获取AES密钥?客户端只知道如何使用与服务器相同的算法进行解密。你可能很幸运有了第三方工具,但我不知道有什么。如果你找到了,请告诉我。不过你真的不需要,是吗?