我基于以下github示例创建了一个配置服务器:https://github.com/spring-cloud-samples/configserver
我更改了它以指向本地git存储库,还安装了在我的环境中安装的全功能JCE。
使用非对称密钥和密钥库jks文件,加密和解密功能可以按预期工作:使用/encrypt
端点创建加密值;将其包含在我的git repo(test
属性)中;从/{app}-{env}.yml
端点解密密钥。
Spring云配置文档说,可以在encrypt.key
中将非对称密钥设置为PEM编码的文本值:
http://cloud.spring.io/spring-cloud-config/1.4.x/single/spring-cloud-config.html#_key_management
我使用以下命令将keystore.jks文件转换为PEM文件:
keytool -importkeystore -srckeystore keystore.jks -destkeystore key.p12 -srcalias test -srcstoretype jks -deststoretype pkcs12
openssl pkcs12 -in key.p12 -out key.pem
我更改了bootstrap.yml
文件,并包含了key.pem
文件的内容:
encrypt:
failOnError: false
key: |
Bag Attributes
friendlyName: test
localKeyID: 54 69 6D 65 20 31 35 33 37 32 31 39 34 35 38 32 30 31
Key Attributes: <No Attributes>
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIFxcOg3aNibsCAggA
(...)
0m6f+FvV3glvSE4C86VeNwKUdiEMKtzf5A/Ie9B0jhjIP/R0n4tSuQNNNRfetJxB
3mk=
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
friendlyName: test
localKeyID: 54 69 6D 65 20 31 35 33 37 32 31 39 34 35 38 32 30 31
subject=/C=Unknown/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=Unknown
issuer=/C=Unknown/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=Unknown
-----BEGIN CERTIFICATE-----
MIIDdzCC
(...)
aMgI8QW+kQ
-----END CERTIFICATE-----
现在它无法解密test
属性,并显示错误:
Cannot decrypt key: sftp.privateKeyPassphrase (class java.lang.IllegalArgumentException: Non-hex character in input: ..)