tomcat安全配置之证书密码加密存储
2013-08-30 19:05
375 查看
最近项目组要完成一个新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配置,可以看到证书的口令配置成了明文,这样安全性是没有保证的。
解决问题的步骤如下:
步骤一、创建一个协议处理类,替换掉当前的org.apache.coyote.http11.Http11Protocol。代码非常简单,样例如下:
注意点是这个类里如果需要记日志,可以直接使用父类定义的log对象,但有一点,明文口令不要记录到日志里,否则失去了加密存储的意义。
步骤二、修改Connector的配置,使用定制后的协议处理器,同时把证书的密码修改为密文,样例如下:
步骤三、重新启动tomcat,检查上述配置是否生效。
Anyway,经过上述处理,我本地的配置是成功的。
根据官网的资料以及实地验证,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安全配置之证书密码加密存储
- Tomcat配置HTTPS方式生成安全证书
- 用户密码加密存储十问十答,一文说透密码安全存储
- Tomcat配置HTTPS方式生成安全证书
- Tomcat配置HTTPS方式生成安全证书
- JavaWeb学习篇之----Tomcat中配置数字证书以及网络传输数据中的密码学知识
- CA加密,网络安全-CA(证书颁发机构)配置概述
- IHS配置安全漏洞: 支持不推荐使用的 SSL 版本、在降级的旧加密上填充 Oracle、检测到 RC4 密码套件、支持弱 SSL 密码套件、 重构 RSA 导出键(又称为 FREAK)
- Tomcat配置HTTPS方式生成安全证书
- 远离密码泄露:安全存储密码的加密哈希
- Tomcat配置HTTPS方式生成安全证书
- Web安全--使用Salt + Hash将密码加密后再存储进数据库
- proxool配置文件中用户名和密码使用加密后的密文(安全测评)
- 如何安全的存储用户密码?(下)代码实现pbkdf2算法加密
- 配置Tomcat安全证书-PFX格式证书
- 用户密码加密存储十问十答,一文说透密码安全存储
- https\SSL安全证书配置,Tomcat、nodejs、Nginx服务器安全证书配置
- 关于加密:本地用户名与密码安全的存储方案
- 数字证书-Tomcat加密配置
- [★] 本地配置文件中存储密码 之 加密解密