【发布时间】:2020-09-05 01:49:24
【问题描述】:
我们有一个 Pivotal Cloud Foundry 服务器,它配置了一个带有加密密钥的 Spring 配置服务器。在相应的属性文件(通过 github)中,我们为一些简单的属性添加了 {cipher} 前缀,并且我们能够在应用程序中很好地获取这些值。但我们最近注意到的挑战是,当我们有一个 base64 数据需要加密时,spring 加密会截断 base64 数据末尾的尾随等号。当我们的应用程序读取此数据时,由于它不是有效的 base64,因为它在末尾的填充字符(等号)丢失,因此解析失败。我们尝试用反斜杠转义等号,但仍然没有运气。我们只是看到两个反斜杠,所以想知道是否有任何建议可以解决这个问题。谢谢!
【问题讨论】:
-
您如何尝试加密该值?能给我举个例子吗?仅供参考,如果您从命令行运行命令,您可能是 shell 转义的受害者。如果您使用的是 Linux/Unix shell,请尝试在值周围使用单引号。
-
谢谢,这是详细信息。
VGVzdC0=是Test-的 base64 等价物,这是我需要的字符串。我们使用命令curl -k -H "Authorization: $oauth" $config_url/encrypt -d "VGVzdC0="当应用程序从SprintConfigServer 获取值时,它获取的值是VGVzdC0。所以我的 base64 解析器会失败,因为它最后没有看到强制填充字符“=”。 -
我们在 windows 机器上使用 git bash shell。我们一直在使用这个 shell 成功地加密其他应用程序,并为生产环境生成我们所有的密钥,我们从未发现任何问题。再次感谢。
-
你能分享一些关于你在这里使用的版本的细节吗?您使用的是 OSS Spring Cloud Config Server 还是 Pivotal 的 Spring Cloud Config Server?在您的客户端应用程序中,哪些版本的 Spring Boot、Spring Cloud,以及如果使用 Pivotal SCS,Pivotal SCS 依赖项?谢谢
-
我们使用的是 Pivotal Sprint 云配置服务器,v-2.7(更低)和 v-2.4(产品)。我们有 TIBCO BusinessWorks Container Edition 以及 SprintBoot 服务。从直接属性的角度来看,我们没有看到任何问题,因为 base64 属性值被解释得很好(最后带有 = 符号),但唯一的故障是当这个值通过 Spring Cloud 被提供给我们的服务时配置服务器。所以我们看到 PCF Spring Cloud Config Server 是罪魁祸首。我也想知道是否有任何选择来逃避角色或其他东西。谢谢@DanielMikusa!
标签: cloud-foundry spring-cloud-config spring-cloud-config-server