设为首页 收藏本站
查看: 954|回复: 0

[经验分享] CloudStack密码加密和解密

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-6-16 13:53:20 | 显示全部楼层 |阅读模式
一、关于加密和解密
CloudStack存储一些敏感密码和密钥用于提供安全保障。这些值被自动加密。

  • 数据库密钥
  • 数据库密码
  • SSH密钥
  • 计算节点root密码
  • VPN密码
  • 用户API密钥
  • VNC密码

CloudStack使用简单的java加密库(JASYPT)。使用数据库密钥加密和解密数据值,随着数据库密码一起存储在CloudStack内部属性文件中。 上面列出的其他加密值, 例如 SSH 密钥, 也被记录在CloudStack数据库中。
当然,数据库密钥本身不可以公开存储-必须被加密存储。那么,CloudStack如何阅读它呢?从外部源启动管理服务器期间必须提供另一个密钥。有2种方法提供该密钥:从文件加载或者由CloudStack的管理员提供。CloudStack数据库中有个配置项,将会告知使用了哪种方法。如果加密类型设置为 “file,” 密钥必须存在于位置已知的文件中。如果加密类型设置为 “web,” 管理员则会运行
1
com.cloud.utils.crypt.EncryptionSecretKeySender



工具,关键在于连接至管理服务器中一个已知的端口。

在CloudStack初始化的过程中设置加密类型,数据库密钥和管理服务器密钥。这些都是CloudStack数据库设置脚本的参数(cloud-setup-databases)。默认值是file,password和password。当然,强烈建议你修改这些密钥值。
好了,更多信息查看CloudStack官方文档。
直接上干货。

二、解密虚拟机VNC密码
新版本CS中默认启用虚拟机的VNC密码,保证安全性。但,CPVM的性能,呵呵。
所以当不想通过CPVM时,需要解密VNC密码才能连接直接通过vnc工具连接。
以KVM为例:
(其实kvm虚拟机有另外一个办法可以修改vnc密码,就是使用virt-manager修改该虚拟机vnc端口,但不会永久生效)。
1.在CloudStack UI中查找该虚拟机的内部名称。例如:i-2-15-VM
2.在CloudStack数据库中查找该虚拟机加密后的vnc密码

1
2
3
4
5
6
7
mysql> select vnc_password from cloud.vm_instance where instance_name = 'i-2-15-VM' or name = 'InstanceName';
+----------------------------------------------+
| vnc_password                                 |
+----------------------------------------------+
| mmwJnTulUgSWyd/NdiXAkRtI+y+33h5dbuk4+OGpkck= |
+----------------------------------------------+
1 row in set (0.00 sec)




3.使用jasypt库解密
jasypt库路径为:
1
[iyunv@localhost ~]# /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar



使用如下命令解密:

1
2
3
[iyunv@localhost ~]# java -cp /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="上步骤中得到的vnc密码"
password="数据库密钥"



例如:

1
2
3
4
5
6
7
8
9
10
11
[iyunv@localhost ~]# java -cp
/usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
input="mmwJnTulUgSWyd/NdiXAkRtI+y+33h5dbuk4+OGpkck=" password="password"
----ENVIRONMENT-----------------
Runtime: Sun Microsystems Inc. OpenJDK 64-Bit Server VM 20.0-b12
----ARGUMENTS-------------------
input: mmwJnTulUgSWyd/NdiXAkRtI+y+33h5dbuk4+OGpkck=
password: password
----OUTPUT----------------------
f7d7ae4bac54cfa2




其中,OUTPUT即为解密后的vnc密码,使用该密码连接VNC控制台。


三、解密计算节点root密码
还是以kvm为例,该密码为添加主机时使用的root密码。
1.在数据库host_details表中查出加密后的主机密码字段

1
2
3
4
5
6
7
8
9
10
mysql> select * from cloud.host_details where name="password";
+----+---------+----------+----------------------------------+
| id | host_id | name     | value                            |
+----+---------+----------+----------------------------------+
| 10 |       1 | password | jQ5GklnC7FEShUJUo0uZs4p9LYclP8ng |
| 20 |       4 | password | f8qWuceOf6AzeN+AJ82OYQN7mSqiqYPU |
| 30 |       5 | password | 6icHGY6p5O+fq+hrJ/CRv9u+SaVPvvmj |
| 40 |       6 | password | OcU/tzEcZXzKhjaxQA8n48usagBXCpPm |
+----+---------+----------+----------------------------------+
4 rows in set (0.00 sec)




2.复制value值,进行解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[iyunv@localhost ~]# java -cp /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
input="jQ5GklnC7FEShUJUo0uZs4p9LYclP8ng" password="password"
[iyunv@localhost ~]# java -cp
/usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
input="f8qWuceOf6AzeN+AJ82OYQN7mSqiqYPU" password="password"
[iyunv@localhost ~]# java -cp
/usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
input="6icHGY6p5O+fq+hrJ/CRv9u+SaVPvvmj" password="password"
[iyunv@localhost ~]# java -cp
/usr/share/cloudstack-common/lib/jasypt-1.9.0.jar
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
input="OcU/tzEcZXzKhjaxQA8n48usagBXCpPm" password="password"




其中,OUTPUT即为解密后的密码。

其他类型密码解密不再演示,自行测试。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-20612-1-1.html 上篇帖子: SUSE在线安装软件指令zypper 下篇帖子: rsync+inotify实时备份 加密 密码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表