Java 與 Tomcat 搭配的加密連線:HTTPS 雙向認證

今天遇到的任務是要讓Tomcat 7 支援ssl, schema 從 http 改走 https.

 

Step 1: 為伺服器產生簽章庫

keytool -genkey -v -alias tomcat -keyalg RSA -validity 10000 -keystore ./tomcat.keystore -dname "CN=localhost,OU=my,O=my,L=Taipei,ST=Taiwan,c=TW" -storepass changeit -keypass changeit

執行完會多一個檔案。

 

Step 2:修改 Tomcat 目錄下的 conf/server.xml:

找到 <Connector port=”8443″ … 這部份的設定應該是被註解掉了,把註解拿掉! 並且加上 keystoreFile 及 keystorePass 兩個屬性,內容值當然就依第一步驟產生的填入。

<Connector port=”8443″ protocol=”org.apache.coyote.http11.Http11Protocol”

               maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”

keystoreFile=“/Users/max/Documents/settings/tomcat.keystore” keystorePass=“changeit” keyAlias=“tomcat”

               clientAuth=”false” sslProtocol=”TLS” />


醬子就完成了,耶真的連上去了。

 

我之前試了其他篇文章,發現 keystorePass=“changeit” 的密碼不知道該用 -keypass 還是用 storepass,所以最佳解法就是這2組pass 都設成一樣的,不然會出現下面的Error.

SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-8443"]
java.io.IOException: Cannot recover key

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *