代码之家  ›  专栏  ›  技术社区  ›  Victor

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

  •  1
  • Victor  · 技术社区  · 6 年前

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

    app:
      name: client-app
      port: 8085
      secret: '{cipher}AgCGh ... X3pTW'
    

    解密在客户端完成: bootstrap.properties 在SCC服务器上 spring.cloud.config.server.encrypt.enabled=false bootstrap.yml

    ...
    encrypt:
      keystore:
        location: classpath:keystore.p12
        password: kspass
        alias: client-key
        secret: kspass
      key: client-key
      rsa:
        strong: true
    ...
    

    keystore.p12包含用于加密的密钥 应用程序机密

    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.RsaSecretEncryptor.decrypt() 方法,但我不太确定这是否表示 hybrid encryption 使用自生AES密钥。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dave Syer    6 年前

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