0

我有一个运行 spring 总线的 spring 云配置服务器。我想让对该服务器的调用安全:

  1. 当客户要求配置时。
  2. 调用 /monitor 时 - 由 webhook 使用。

这样做的最佳做法是什么?基本的?加密?有人可以提供一个工作示例吗?

谢谢!

4

2 回答 2

2

此外,您可以使用Spring Cloud Vault控制对配置中机密的访问。

这个解决方案比加密应用程序和配置服务器之间的所有通信更简单,但也许这不是你想要的。

我希望它有所帮助。

于 2018-12-10T11:26:14.407 回答
2

您可以通过添加加密和解密属性来保护它

您需要提供 jks 以安全地加密和解密它们

Spring Cloud 配置服务器支持对称和非对称密钥

要配置对称密钥,您需要设置encrypt.key为秘密字符串(或使用ENCRYPT_KEY环境变量将其排除在纯文本配置文件之外)。

对于非对称,您需要在 bootsrap.yml 中提供这样的属性:

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: your git url or your local repository on file system 
          username: username for git or bitbucket if needed
          password: password
          clone-on-start: true this property will clone all repo localy on starttup
          force-pull: true
  application:
     name: config-server
encrypt:
  key-store:
    location: jks location
    password: letmein
    alias: mytestkey
    secret: changeme

要生成 jks,您需要执行此命令

keytool -genkeypair -alias mytestkey -keyalg RSA \
  -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
  -keypass changeme -keystore server.jks -storepass letmein

实际上 java 默认情况下对某些密钥长度参数有限制。默认为 128 位。

要使用密钥更多的密钥长度,您只需替换现有的local_policy.jarUS_export_policy.jar<java-home>/lib/security

这是下载链接:

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

您还可以通过这些端点加密和解密您的属性:

curl config_server_host:port/encrypt-d your data to be encrypted

curl config_server_host:port/decrypt -d your data to be decrypted // this will automatically use this endpoint to decrypt values
//Both are http post requests

要通过配置服务器使用加密,您需要在配置中为您的应用程序提供这样的前缀,该前缀将从配置服务器获取配置:

'{cipher}your_encrypted_data'
于 2018-12-10T10:24:59.530 回答