Spring Cloud Config 加密和解密

news/2024/7/7 19:50:49

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

要使用加密和解密功能,您需要在JVM中安装全面的JCE(默认情况下不存在)。您可以从Oracle下载“Java加密扩展(JCE)无限强度管理策略文件”,并按照安装说明(实际上将JRE lib / security目录中的2个策略文件替换为您下载的文件)。

如果远程属性源包含加密内容(以{cipher}开头的值),则在通过HTTP发送到客户端之前,它们将被解密。这种设置的主要优点是,当它们“静止”时,属性值不必是纯文本(例如在git仓库中)。如果值无法解密,则从属性源中删除该值,并添加具有相同键的附加属性,但以“无效”作为前缀。和“不适用”的值(通常为“<n / a>”)。这主要是为了防止密码被用作密码并意外泄漏。

如果要为config客户端应用程序设置远程配置存储库,可能会包含一个application.yml,例如:

application.yml

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

properties文件中的加密值不能用引号括起来,否则不会解密该值:

application.properties

spring.datasource.username: dbuser
spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ

您可以安全地将此纯文本推送到共享git存储库,并且保密密码。

服务器还暴露了/encrypt/decrypt端点(假设这些端点将被保护,并且只能由授权代理访问)。如果您正在编辑远程配置文件,可以使用Config Server通过POST到/encrypt端点来加密值,例如

$ curl localhost:8888/encrypt -d mysecret
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

逆向操作也可通过/decrypt获得(如果服务器配置了对称密钥或全密钥对):

注意 如果要加密的值具有需要进行URL编码的字符,则应使用--data-urlencode选项curl来确保它们已正确编码。

$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

如果您使用curl进行测试,则使用--data-urlencode(而不是-d)或设置显式Content-Type: text/plain,以确保在有特殊字符时正确地对数据进行编码('+'特别是棘手)。

将加密的值添加到{cipher}前缀,然后再将其放入YAML或属性文件中,然后再提交并将其推送到远程可能不安全的存储区。

/encrypt/decrypt端点也都接受/*/{name}/{profiles}形式的路径,当客户端调用到主环境资源时,可以用于每个应用程序(名称)和配置文件控制密码。

注意 为了以这种细微的方式控制密码,您还必须提供一种TextEncryptorLocator类型的@Bean,可以为每个名称和配置文件创建不同的加密器。默认提供的不会这样做(所有加密使用相同的密钥)。

spring命令行客户端(安装了Spring Cloud CLI扩展)也可以用于加密和解密,例如

$ spring encrypt mysecret --key foo
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

要在文件中使用密钥(例如用于加密的RSA公钥),使用“@”键入键值,并提供文件路径,例如

$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub
AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...

关键参数是强制性的(尽管有一个--前缀)。

转载于:https://my.oschina.net/u/3873725/blog/1839189


http://www.niftyadmin.cn/n/4261560.html

相关文章

串口 发送 接收 高位_浅谈串口通讯的起始、数据、停止位是怎么分配的?

浅谈串口通讯的起始、数据、停止位是怎么分配的?串口是串行接口(serial port)的简称&#xff0c;也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划…

表单引擎 开源php,Tpfd 表单设计 1.0 正式发布

使用简要流程图DROP TABLE IF EXISTS leipi_form;CREATE TABLE leipi_form (id int(11) NOT NULL AUTO_INCREMENT,title varchar(255) DEFAULT NULL COMMENT 表单名称,name varchar(255) DEFAULT NULL COMMENT 表名,file varchar(255) DEFAULT NULL COMMENT 生成文件,menu int(…

matlab求princomp,matlabprincomp用法

利用Matlab中的princomp命令实现。具体程序如下 X [0.7883...利用Matlab中的princomp命令实现。具体程序如下 X [0.7883...Matlab 程序:[coeff,score,latent]princomp(X) 注:该函数使用协方差阵作主成分分析。 主成分分析程序 a[]; bcorrcoef(zscore(a))%计算相关系数矩阵 D...…

ros自带到期通知_韩网曝YG计划,BLACKPINK成员Rosé即将solo

熟悉BLACKPINK都知道组合已经出道四年多了&#xff0c;如今在临近2023年合约到期也仅剩两年多了&#xff0c;关于Jennie、jisoo、Lisa、Ros的未来发展问题一直备受粉丝们关注&#xff0c;毕竟组合都是一代一代更新的&#xff0c;未来个人发展也是需要考虑的&#xff0c;除了Jen…

我的网站和我的名字

在YAHOO中国&#xff0c;BAIDU上搜索“何直群”&#xff0c;居然可以发现我的网站&#xff1a;我摘([url]http://www.wozhai.com[/url])。我记得在这个网站上&#xff0c;我从来没有放过我的名字的。不知道这是不是现在的搜索引擎的一个新功能。转载于:https://blog.51cto.com/…

Unity LOD-Level of Detail(多层次细节)用法教程

Unity LOD 多层次细节本文提供全流程&#xff0c;中文翻译。 Chinar 坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09; Chinar —— 心分享、心创新&#xff01;助力快速理解 U…

小牛485通讯原理_485通讯原理

RS485接口组成的半双工网络&#xff0c;一般是两线制&#xff0c;多采用屏蔽双绞线传输&#xff0c;这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。我们知道&#xff0c;最初数据是模拟信号输出简单过程量&#xff0c;后来仪表接口是RS232接口&#xff0c;这…

PHP中数据库MySQL连接不上,如何解决php mysql连接不上数据库的问题

如何解决php mysql连接不上数据库的问题php mysql连接不上数据库的解决办法&#xff1a;首先获取当前“mysql.default_socket”等信息&#xff1b;然后获取MySQL socket路径&#xff1b;最后打开“php.ini”修改“mysql.default_socket”等值即可。推荐&#xff1a;《PHP视频教…