Tomcat的server.xml中的证书密码加密

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_18607183/article/details/83096368

现在网络安全越来越重要,但是开发过程中还会出现明文密码的问题。

我们使用Tomcat配置https,以为很安全了,但是证书密码配置的是明文,如果是RSA的加密套件,

则使用wireshark是可以直接解密的,前提是如果能拿到证书的密码。

所以需要对证书的密码进行加密存储。

配置方式为自定义一个类,继承Tomcat的Http11Protocol类,在init方法执行前,把证书的密码设置进去。

另外需要单独写一个jar包,并且放到Tomcat\lib这个目录下,这样会优先加载。

关于Tomcat的加载顺序,可以看下其它文章。

1、自定义一个类

package com.mine;

import org.apache.coyote.http1.Http11NioProtocol;

public class MyHttp11NioProtocol extends Http11NioProtocol{

@override

public void init() throw Exception{

super.setKeystorePass("加密后 的密码");//这里可以直接把密文写在这里或者从Tomcat的配置文件中读取。

super.init();

}

}

打包成一个myprotocol.jar文件

2、把myprotocol.jar文件放到Tomcat\lib目录下

放到这里保证用之前先加载。

3、修改Tomcat\conf\server.xml文件的配置

这里可以直接省去证书密码配置,密码写在代码里,或者放到下面的配置文件里,密码是密文,在

代码里读取这里面配置的,并进行解密。

 <Connector port="8443" protocol="com.mine.MyHttp11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               keystoreFile="./conf/keystore"
               clientAuth="false" sslProtocol="TLS" />

参考了以下文章,感谢提供的思路。

https://blog.csdn.net/baidu_18607183/article/details/83068827

猜你喜欢

转载自blog.csdn.net/baidu_18607183/article/details/83096368