Tomcat Vault的使用方法

标签: tomcat vault 方法 | 发表时间:2015-10-25 01:33 | 作者:阿男bluedash
出处:http://www.iteye.com
在tomcat的配置文件中,用户名和密码是明文保存的:

从上图中可以看到,tomcat的配置文件中的password是明文保存的:





<user username="tomcat" password="tomcat" roles="tomcat"/>



为了解决这个问题,JBoss社区推出了tomcat-vault[1],通过Java的KeyStore机制来保存秘钥,并通过秘钥对Tomcat配置文件中明文的密码进行加密。本文简单介绍tomcat-vault的使用方法。

下载tomcat-vault

首先从tomcat-vault的网站下载最新版本:https://github.com/picketbox/tomcat-vault/releases

我在写这篇文章的时候,最新版本是1.0.8。下载完成后将压缩包解压:

cute:Downloads weli$ unzip tomcat-vault-1.0.8.Final.zip
Archive:  tomcat-vault-1.0.8.Final.zip
5d8b74bb5e8e8fe636194bb6ab4633db9e09ba7a
   creating: tomcat-vault-1.0.8.Final/
  inflating: tomcat-vault-1.0.8.Final/INSTALL
  inflating: tomcat-vault-1.0.8.Final/LICENSE
  inflating: tomcat-vault-1.0.8.Final/README.md
...


然后使用maven将项目编译:

cute:tomcat-vault-1.0.8.Final weli$ mvn install
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tomcat Vault extension 1.0.8.Final
[INFO] ------------------------------------------------------------------------
Downloading: http://maven.repository.redhat.com/earlyaccess/all/org/apache/tomcat/tomcat-util/8.0.15/tomcat-util-8.0.15.pom
Downloading: http://maven.repository.redhat.com/techpreview/all/org/apache/tomcat/tomcat-util/8.0.15/tomcat-util-8.0.15.pom
Downloading: https://repository.jboss.org/nexus/content/repositories/releases/org/apache/tomcat/tomcat-util/8.0.15/tomcat-util-8.0.15.pom
...
[INFO] Installing /Users/weli/Downloads/tomcat-vault-1.0.8.Final/target/vault-tomcat-1.0.8.Final-jar-with-dependencies.jar to /Users/weli/.m2/repository/org/apache/tomcat/vault-tomcat/1.0.8.Final/vault-tomcat-1.0.8.Final-jar-with-dependencies.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:16 min
[INFO] Finished at: 2015-10-24T11:33:30+08:00
[INFO] Final Memory: 22M/198M
[INFO] ------------------------------------------------------------------------


编译完成后,可以看到项目中多了一个modules目录:





这个目录是为了匹配bin目录中的vault.sh的:





我们现在可以运行一下vault.sh玩玩看:





如上图所示,如果编译成功,vault.sh就可以正确运行了。我们之后会用到vault.sh,先按CTRL-C退出程序,然后看一下target目录中的内容:




如上图所示,可以看到target目录中有vault-tomcat-1.0.8.Final-jar-with-dependencies.jar,我们之后要用到这个jar,把它copy到tomcat的lib目录中。在此之前,我们先下载tomcat。

下载tomcat

我们等下要把vault-tomcat-1.0.8.Final-jar-with-dependencies.jar放进tomcat的目录。接下来我们要下载tomcat[2],我下载的时候最新版本是tomcat 8.0.28。下载完成后将其解压:





试着启动一下tomcat看看:








没什么问题的话,关掉tomcat:





接下来是把编译好的,包含了所有依赖库的tomcat-vault拷贝到tomcat:





然后就是配置tomcat-vault的阶段了。

配置tomcat-vault

tomcat-vault使用java提供的keystore来管理秘钥,所以需要用keystore来生成一个keystore,并往里面加入一个加解密用的秘钥。为了方便管理,我把keystore保存在tomcat的conf目录当中,因此在conf目录中生成keystore:





从上图中可以看到,我们在tomcat的conf目录中用JDK提供的keytool命令生成了keystore,文件名为vault.keystore。在这个keystore当中,我们保存了一个磨人的秘钥,名为my_vault。可以用keytool命令来查看:





从上面的图中可以看到,在keystore中保存了一个名为my_vault的秘钥,它的类型是SecrectKeyEntry,是一个对称加密的秘钥。稍后我们会配置tomcat-vault使用这个秘钥来对tomcat配置文件中的用户密码进行加解密。

接下来我们要做的是使用tomcat-vault.sh生成配置文件,全过程如下:





上图所示的是一个tomcat-vault.sh的完整运行过程,这里面的配置说明如下:

Enter directory to store encrypted files:/Users/weli/projs/apache-tomcat-8.0.28/conf


这行配置保存tomcat的密码的加密文件的位置,我给配置到了tomcat的conf目录中。

Enter Keystore URL:/Users/weli/projs/apache-tomcat-8.0.28/conf/vault.keystore



这行是指定keystore的所在地,我们之前把vault.keystore生成在tomcat的conf目录中,因此指定相应路径即可。

Enter Keystore password: my_password123
Enter Keystore password again: my_password123


这两行是输入keystore的密码,我们之前用keytool生成时,使用的是my_password123。因为tomcat需要这个密码来访问keystore中的秘钥,所以需要知道这个密码。

Enter 8 character salt:1234abcd
Enter iteration count as a number (Eg: 44):120


这两行配置用于加密上面keystore的密码,因为我们不能在tomcat的配置文件中使用明文保存keystore的密码,否则就毫无意义了。

Enter Keystore Alias:my_vault


这行配置是告诉tomcat在keystore中可以使用的秘钥名称。通过以上内容,tomcat-vault.sh最后帮我们生成了给tomcat使用的配置文件内容:

KEYSTORE_URL=/Users/weli/projs/apache-tomcat-8.0.28/conf/vault.keystore
KEYSTORE_PASSWORD=MASK-3CuP21KMHn7G6iH/A3YpM/
KEYSTORE_ALIAS=my_vault
SALT=1234abcd
ITERATION_COUNT=120
ENC_FILE_DIR=/Users/weli/projs/apache-tomcat-8.0.28/conf/



把上面的配置保存在tomcat的conf目录中,把文件名命名为vault.properties:





接下来我们还要在conf目录中的catalina.properties这个配置文件中添加一行:

org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.vault.util.PropertySourceVault






这样,tomcat这边的配置工作就算完成了。我们接下来用tomcat-vault.sh来生成一个密码:





从上图中使用的命令里面,我们可以看到我们要加密的密码是P@SSW0#D,把它命名为manager_password:

--attribute manager_password --sec-attr P@SSW0#D



从输出的结果中我们可以看到vault使用keystore中的秘钥对密码进行了加密病保存在了配置的目录当中:

KEYSTORE_URL=/Users/weli/projs/apache-tomcat-8.0.28/conf/vault.keystore
KEYSTORE_PASSWORD=MASK-3CuP21KMHn7G6iH/A3YpM/
KEYSTORE_ALIAS=my_vault
SALT=1234abcd
ITERATION_COUNT=120
ENC_FILE_DIR=/Users/weli/projs/apache-tomcat-8.0.28/conf/


我们查看tomcat的目录可以看到加密文件:





接下来是在tomcat的配置文件中使用manager_password这个密码:





可以从上图中看到,在tomcat-users.xml中,我们没有使用明文的密码P@SSW0#D,而是引用加密后的:

${VAULT::my_block::manager_password::}



为了测试配置是否工作,我们启动tomcat:





接下来访问tomcat的管理端:





根据tomcat-users.xml中的配置,我们输入用户名为manager,密码为P@SSW0#D





如果tomcat-vault正常工作,那么会接受这个密码,用keystore中的秘钥解密tomcat-users.xml中的${VAULT::my_block::manager_password::},并且比对成功。从结果上来看,就是成功登录了管理端:





小结

本文简单介绍了tomcat-vault的使用方法。tomcat-vault通过JCE标准的keytool来生成keystore,并使用keystore来保存对称加解密秘钥,再通过秘钥来加解密tomcat配置中不想用明文保存的数据。

[1] https://github.com/picketbox/tomcat-vault
[2] https://tomcat.apache.org/download-80.cgi

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [tomcat vault 方法] 推荐:

Tomcat Vault的使用方法

- - 开源软件 - ITeye博客
在tomcat的配置文件中,用户名和密码是明文保存的:. 从上图中可以看到,tomcat的配置文件中的password是明文保存的:. 为了解决这个问题,JBoss社区推出了tomcat-vault[1],通过Java的KeyStore机制来保存秘钥,并通过秘钥对Tomcat配置文件中明文的密码进行加密.

[Oracle] 数据库安全之 - Vault

- - CSDN博客推荐文章
Oracle用了整整一本书来阐述Valut,有兴趣的童鞋可以参考http://docs.oracle.com/cd/E11882_01/server.112/e23090/toc.htm,我个人觉得并不需要对它进行太深入的了解,只有知道有这么一回事就好了. 从宏观方面看,Vault属于Oracle数据库安全领域中-访问控制的部分,可参考《 [Oracle] 数据安全概述》.

apache与tomcat负载集群的3种方法

- dongsheng - BlogJava-首页技术区
花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy. 本次测试是1个apache集成两个tomcat. 安装apache http server省略,访问地址为http://127.0.0.1:8081.

https单向/双向认证及tomcat配置https方法

- - 行业应用 - ITeye博客
https单向/双向认证及tomcat配置https方法. 1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源. 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址. 如果想要用系统的人没有证书就访问不了系统的话,就采用双向. 使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“C:\OctopusStoreKey\SP2014.keystore”,口令为“123456”,使用如下命令生成:.

apache与tomcat负载集群的3种方法 (转载)

- - 研发管理 - ITeye博客
集群tomcat主要是解决SESSION共享的问题. 花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy. 本次测试是1个apache集成两个tomcat. 安装apache http server省略,访问地址为http://127.0.0.1:8081.

在Tomcat 6.0下用JNDI连接IBM MQ 6.0的配置方法

- - 行业应用 - ITeye博客
假设在IBM MQ中定义的队列管理器的名为QueueManager, 端口1414,CCSID 437 ,创建名为LQ1,LQ2的队列分别用于发送和接收消息, 服务器连接通道名为SVRCONN. 确保在项目的Classpath中导入了以下的jar包:. 如果需使用spring的JmsTemplate方式来读写MQ,还需要导入.

SanDisk Memory Vault 存储设备,让照片永流传

- zhipeng - Engadget 中国版
有的东西是用金钱可以买得到的,但记忆和美好时刻是无形的,尤其是家人团聚,朋友聚会,新婚之夜,这些花钱是追不回的. 你可以在脑海中回想,但随着时间的流逝,记忆会渐渐模糊,SanDisk 则带来 SanDisk Memory Vault 来确保您的照片和视频能代代相传. 官方称该设备具有良好的防潮和防静电保护性能,能够在常规室温存储条件下将数据保存最多 100 年.

tomcat调优

- - 开源软件 - ITeye博客
1          概述. 本文档主要介绍了Tomcat的性能调优的原理和方法. 可作为公司技术人员为客户Tomcat系统调优的技术指南,也可以提供给客户的技术人员作为他们性能调优的指导手册. 2          调优分类. 由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优和自身调优两类来描述.

Tomcat 优化

- - 编程语言 - ITeye博客
tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入. windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入. 最大堆内存是1024m,对于现在的硬件还是偏低,实施时,还是按照机器具体硬件配置优化.

TOMCAT优化

- - 移动开发 - ITeye博客
        Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器. 而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化.         一、内存优化.         默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况.