1. 程式人生 > >Tomcat的server.xml中的證書密碼加密

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" />

參考了以下文章,感謝提供的思路。