我有一个运行 spring 总线的 spring 云配置服务器。我想让对该服务器的调用安全:
- 当客户要求配置时。
- 调用 /monitor 时 - 由 webhook 使用。
这样做的最佳做法是什么?基本的?加密?有人可以提供一个工作示例吗?
谢谢!
我有一个运行 spring 总线的 spring 云配置服务器。我想让对该服务器的调用安全:
这样做的最佳做法是什么?基本的?加密?有人可以提供一个工作示例吗?
谢谢!
您可以通过添加加密和解密属性来保护它
您需要提供 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.jar
和US_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'