TOMCAT HTTPS訪問配置應用
TOMCAT HTTPS訪問設定
1. 首先確定已經安裝了JDK 或JRE,並配置java執行環境。
On Windows:
C:\> set JAVA_HOME=C:\Program Files\Java\jdk 1.6.0_16
C:\> set PATH=%JAVA_HOME%\bin;%PATH%
On Linux:
# export JAVA_HOME=/usr/java/latest
# export PATH=$JAVA_HOME/bin:$PATH
2. 使用java 自帶的keytool生成證書
開啟命令列視窗,執行:
Keytool
應該能看到相關的幫助文字,否則檢查你的
鍵入以下命令來生成一個自簽名的伺服器證書
keytool -genkeypair -alias tomcat -keyalg
RSA -keysize 1024 -dname "CN=localhost, OU=Organization, O=Company
Name, L=City, S=State, C=US" -validity 365 -keystore keystore
<eg: D:\tomcat.keystore>
Enter keystore password:
<eg:tomcat>
這樣就生成了證書,將證書放到合適的地方
Keytool –genkey –alias (證書名 eg: tomcat) –keyalg RSA –keystore (證書存放路徑 eg: D:\tomcat.keystore)
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 1024 -dname "CN=localhost, OU=Organization, O=Company Name, L=City, S=State, C=US" -validity 365 -keystore e:/tomcat.keystore
keytool -genkey -alias tomcat -keyalg RSA -keystore
keytool -genkey -alias lenny -keyalg RSA -keystore C:\lenny -validity 36500 -keysize 512
其中lenny是別名,可以隨便取;-keyalg RSA是加密演算法;-keystore C:\lenny 是生成的檔案(在C盤下); -validity 36500是有效期為10年;-keysize 512生成的金鑰是512位的。
( 注意: 填寫具體資訊時,"名字和姓氏"一定是你的域名或IP地址,比如我在實驗室沒有域名,IP地址為192.168.2.101,所以我的"名字和姓氏"填寫的是192.168.2.101,所以實驗室的其他電腦也可以使用https訪問我的Web應用程式 )
3. 修改tomcat目錄下的server.xml檔案並找到關於SSL的相關段
<!--
<Connector port="8443" protocol="HTTP/1.1"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS"
/>
-->
去掉ssl 相關段的註釋。
新增keystorePass = “tomcat”
4. 重啟TOMCAT 就可使用HTTPS訪問專案了。
5. 如何配置tomcat 總是使用HTTPS 訪問
6. 在WEB-INF/web.xml中的</welcome-file-list>後面加上這樣一段:
<!—
Require HTTPS for everything except /img (favicon) and /css.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOrHTTP</web-resource-name>
<url-pattern>*.ico</url-pattern>
<url-pattern>/img/*</url-pattern>
<url-pattern>/css/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
配置指定內容訪問需要HTTPS
<!-- 定義哪些頁面需要使用https,只需要後臺使用即可。 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/admin_index.jsp</url-pattern>
<url-pattern>/login.jsp</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
7. 生成伺服器證書請求
keytool -certreq -keyalg RSA -alias tomcat -file server.csr
-keystore <your_keystore_filename>
keytool -certreq -keyalg RSA -alias tomcat -file server.csr -keystore e:/tomcat.keystore
8. CSR檔案必須有CA的簽名才可形成證書.可將此檔案傳送到verisign等地方由它驗證,要交一大筆錢,測試時建立CA 其效果一樣的。
openssl req -new -x509 -keyout ca.key -out ca.crt
*這一步可能提示什麼無法簽證什麼的,忽略不計。
9. 使用生成的CA來給剛才的csr 檔案簽名。
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key .
10. 匯入CA根證書
keytool -import -alias root -keystore <your_keystore_filename>
-trustcacerts -file <filename_of_the_chain_certificate>
keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file ca.crt
11. 匯入新的證書
keytool -import -alias tomcat -keystore <your_keystore_filename>
-file <your_certificate_filename>
匯入證書時,可能會報der 錯誤,需要將server.crt 轉換成 server.der檔案
openssl x509 -in G:\SSL\server.crt -out G:\SSL\server.der - outform DER
12. openssl.cfg 檔案需要修改的地方。
1. [ policy_match ] 部分,前三個都是match,需要把stateOrProvinceName,organizationName都修改成optional。
2. [ CA_default ] 部分,dir 修改成./PEM/demoCA
13. 將根證書匯入java的cacerts 證書庫中。
進入$JAVA_HOME \jre6\lib\security中,執行:
keytool -import -alias jhkj -keystore cacerts -file <filename_of_the_chain_certificate> -trustcacerts
cacerts證書庫的預設密碼是:changeit
1. 檢視證書列表
keytool -list -keystore cacerts
2. 刪除證書
keytool -delete -alias jhkj -keystore cacerts
14. 11
15. 2
16. 3
17. 4
18. 5
New add 11 和 12 以後忽略,生成證書的時候要和openssl Bin路徑 結合起來,路徑要靈活應用。(將tomcat.keystore 和 server.csr檔案 copy到 openssl Bin下,執行openssl的命令)
如果啟動tomcate 無法載入或識別證書,刪除 tomcate bin下tcnative-1.dll檔案。
上述紅色部分是必須按順序執行的。
刪除證書:
keytool -delete -alias tomcat -keystore e:\tomcat.keystore -storepass tomcat
刪除其它也是 把import等更改為delete即可。