1. 程式人生 > >TOMCAT HTTPS訪問配置應用

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

應該能看到相關的幫助文字,否則檢查你的

java執行環境是否正確。

鍵入以下命令來生成一個自簽名的伺服器證書

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

e:/tomcat.keystore -validity 36500

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,需要把stateOrProvinceNameorganizationName都修改成optional

2. [ CA_default ] 部分,dir 修改成./PEM/demoCA

13. 將根證書匯入javacacerts 證書庫中。

進入$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 bintcnative-1.dll檔案。

上述紅色部分是必須按順序執行的。

刪除證書:

keytool -delete -alias tomcat -keystore e:\tomcat.keystore -storepass tomcat

刪除其它也是 import等更改為delete即可。