tomcat安全配置之证书密码加密存储
最近项目组要完成一个新Web Servicer接口的开发,其中有项要求是支持外部客户程序以https方式访问这些SOAP接口。项目组当前基于tomcat6.0.29开发,axis版本为1.4。拿到这个需求时不明所以,后来发现网上的资料非常多,但据观察,基本步骤和apache官网的上操作步骤基本一致,少有特别之处。于是参照资料,这个特性顺利完成。客户拿到之后非常满意,但看到tomcat配置文件中证书的密码以明文保存时,客户不满意了,要求修改为密文。
根据官网的资料以及实地验证,tomcat的Connector配置默认只支持明文。但客户就是上帝,客户的要求即是圣旨。
于是新一轮的资料检索开始了,但让人非常失望的是网上资料大多都是在讲如何基于tomcat配置https的单向认证或者双向认证,证书密码加密存储相关的资料却怎么也找不到。客户那边又催的特别紧,没有办法,只好硬着头皮啃tomcat的源码,配合eclipse的远程调试功能,终于摸索出了办法。下面的文字tomcat版本为6.0.29,其它版本的处理方法应当近似,同时假定基于tomcat的https认证已经配置好,tomcat可以正常启动。
修改前的Connector配置,可以看到证书的口令配置成了明文,这样安全性是没有保证的。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="./conf/keystore" keystorePass="jackie.123"
clientAuth="false" sslProtocol="TLS" />
解决问题的步骤如下:
步骤一、创建一个协议处理类,替换掉当前的org.apache.coyote.http11.Http11Protocol。代码非常简单,样例如下:
package demo;
import org.apache.coyote.http11.Http11Protocol;
public class MyHttp11Protocol extends Http11Protocol {
@Override
public void init() throws Exception {
final String password = getKeypass();
final String realpassword = decipher(password);
setAttribute("keypass", realpassword);
super.init();
}
private String decipher(final String password) {
// 这里执行密码的解码操作;
}
}
注意点是这个类里如果需要记日志,可以直接使用父类定义的log对象,但有一点,明文口令不要记录到日志里,否则失去了加密存储的意义。
步骤二、修改Connector的配置,使用定制后的协议处理器,同时把证书的密码修改为密文,样例如下:
<Connector port="8443" protocol="demo.MyHttp11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="./conf/keystore" keystorePass="ADFADLJYNGHYVM=="
clientAuth="false" sslProtocol="TLS" />
步骤三、重新启动tomcat,检查上述配置是否生效。
Anyway,经过上述处理,我本地的配置是成功的。
tomcat安全配置之证书密码加密存储的更多相关文章
- [转载]JavaEE学习篇之——网络传输数据中的密码学知识以及Tomcat中配置数字证书EE
原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557 今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一 ...
- RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识
情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...
- JavaWeb学习篇之----Tomcat中配置数字证书以及网络传输数据中的密码学知识
今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些 ...
- glassfish配置中数据库密码加密方法
glassfish配置中数据库密码加密方法 Glassfish中的数据库连接池需要使用密文保存数据库密码.如果不是,则可按如下方法可配置 通过Glassfish中的Alias实现,配置方法如下: 1. ...
- 阿里druid数据源配置及数据库密码加密
注意: 1.阿里默认只对用户密码解密 2.druid 1.0.16版本及以上的解密时需要同时配置publicKey 一.生成密文密码 1 前提:已经配置了jdk环境 1.生成密文密码需要准备druid ...
- Spring 数据库配置用户名和密码加密
单个数据库配置 : 一般spring容器启动时,通过PropertyPlaceholderConfigurer类读取jdbc.properties文件里的数据库配置信息.通过这个原理,我们把加密后的数 ...
- tomcat 配置域名证书
tomcat 配置域名证书 示例: <!--" protocol="HTTP/1.1" connectionTimeout=" redirectPort= ...
- tomcat 配置客户端证书认证
在完成配置客户端证书认证后,浏览器以https访问服务器的时候,会提示选择证书,之后,服务器端会验证证书.也就意味着只有拥有有效证书的客户端才能打开该网站. 以下是具体的配置过程. 1. 在服务器端生 ...
- tomcat配置SSL证书(使用startSSL申请到的证书)
1. 生成p12证书 生成完成后,下载保存. 2. 将p12文件上传至服务器上的tomcat/keystore/上,此处取名为test.com.p12 3. 修改tomcat/conf/server. ...
随机推荐
- 微信JSSDK与录音相关的坑
欢迎各位转载, 以让微信团队重视这些恼人的BUG. 请注明出处微信JSSDK与录音相关的坑 by lzl124631x 最近一直在做微信JSSDK与录音相关的功能开发, 遇到了各种奇尺大坑, 时不时冷 ...
- 协议(porotocol)
fly.h: #import <Foundation/Foundation.h> @protocol Fly -(void) go; -(void) stop; @optional -(v ...
- hdu4649Professor Tian
http://acm.hdu.edu.cn/showproblem.php?pid=4649 枚举当前状态是0或者是1的概率 其实就枚举1的概率 最后概率乘这个数 位运算用得不熟 老出错 #incl ...
- [Tommas] 如何创建自动化功能测试的基本原则
每个实行持续交付的项目,都有生产流水线的元素,如持续集成和自动化测试.这些测试是在不同层面进行的,从单元测试到冒烟测试再到功能测试.自动化功能测试的优点之一是可重复性和可预测的执行时间.出于这个原因, ...
- ThinkPadTablet如何恢复出厂状态
ThinkPad Tablet恢复出厂操作教程: 第一步:开机看到“LENOVO”图标后不停按机器侧面音量增大键,直到出现“Booting recovery kernel image”字样. 第二步: ...
- MongoDB(索引及C#如何操作MongoDB)(转载)
MongoDB(索引及C如何操作MongoDB) 索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureInd ...
- P.V操作【转】
阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家 E.W.Dijkstra.如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了. ...
- 三种情形容易引起Azure虚拟机重新启动
与虚拟机或云服务角色中运行的代码有关的问题可能会导致重新启动.但是,Microsoft 在以下情况下也会重新启动您的角色: 来宾操作系统更新 – 仅影响云服务 Web 和辅助角色.有关如何限制这些 ...
- Esper系列(四)Output
功能 控制Esper事件流计算结果的输入形式.时间点及频率: 格式 1 ";
- Eclipse创建Maven Web项目 + 测试覆盖率 + 常见问题(2015.07.14——湛耀)
Eclipse创建Maven web项目: 到此,并没有创建好,接下来一步步解决问题: 问题:无法创建src/main/java目录 解决: 右键项目选择[properties] 点击[OK] 问题: ...