我有一个运行Spring总线的Spring Cloud配置服务器。我想确保对该服务器的调用安全:
最佳做法是什么?基本的?加密? 有人可以提供一个有效的例子吗?
谢谢!
答案 0 :(得分:1)
您可以通过添加加密和解密属性来保护它
您需要提供jks来对其进行安全加密和解密
Spring云配置服务器支持对称和非对称密钥
要配置对称密钥,您需要将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'
答案 1 :(得分:0)