在Spring Cloud配置服务器上使用非对称密钥作为PEM编码的文本

时间:2018-09-17 21:47:49

标签: keystore spring-cloud-config

我基于以下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文件:

  1. keytool -importkeystore -srckeystore keystore.jks -destkeystore key.p12 -srcalias test -srcstoretype jks -deststoretype pkcs12

  2. 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: ..)

  1. 这应该能按预期工作还是需要重新生成加密值?
  2. 如果后者为真,不是我的密钥被用作对称密钥吗?
  3. 我想避免使用配置文件,而是全部使用环境变量进行设置。还有其他可能性吗?

0 个答案:

没有答案