Tomcat的server.xml中的證書密碼加密
現在網路安全越來越重要,但是開發過程中還會出現明文密碼的問題。
我們使用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" />
參考了以下文章,感謝提供的思路。