Tomcat配置SSL
用JDK自帶的keytool工具生成證書:
keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey
無圖不給力,有圖有真相:
二、修改hosts
具體的輸入項圖片中都有說明,有一點我要解釋一下;在輸入完密碼後提示輸入域名是我輸入的是sso.wsria.com,其實這個域名是不存在的,但是我為了演示所以虛擬了這個域名,技巧在於修改
C:\Windows\System32\drivers\etc\hosts
新增內容如下:
127.0.0.1 sso.wsria.com
這樣在訪問sso.wsria.com的時候其實是訪問的127.0.0.1也就是本機
嚴重提醒:提示輸入域名的時候不能輸入IP地址
如果你想立馬看到效果,現在可以直接跳轉到第五步了。
三、匯出證書
keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey
特別提示:如果提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
那麼請輸入密碼:changeit
來點顏色:
至此匯出證書完成,可以分發給應用的JDK使用了,接下來講解客戶端的JVM怎麼匯入證書。
四、為客戶端的JVM匯入證書
keytool -import -keystore "C:\Program Files\Java\jdk1.7.0_71\jre\lib\security\cacerts" -file D:/keys/wsria.crt -alias wsria
keytool -import -keystore "C:\Program Files\Java\jre7\lib\security\cacerts" -file D:/keys/wsria.crt -alias wsria
特別提示:如果提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
那麼請輸入密碼:changeit
來點顏色瞧瞧:
特別說明
C:\Program Files\Java\jdk1.7.0_71\jre\lib\security\cacerts -- 是jre的目錄;密碼還是剛剛輸入的密碼。至此證書的建立、匯出、匯入到客戶端JVM都已完成,下面開始使用證書到Web伺服器中,本教程使用tomcat。
如果你想刪除,使用命令如下:
keytool -delete -alias wsria -keystore "C:\Program Files\Java\jdk1.7.0_71\jre\lib\security\cacerts" -storepass changeit keytool -delete -alias wsria -keystore "C:\Program Files\Java\jre7\lib\security\cacerts" -storepass changeit
五、應用證書到Web伺服器-Tomcat
啟用Web伺服器(Tomcat)的SSL,也就是HTTPS加密協議,準備好一個乾淨的tomcat,本教程使用的apache-tomcat-6.0.29 開啟tomcat目錄的conf/server.xml檔案,開啟83和87行的註釋程式碼,並設定keystoreFile、keystorePass修改結果如下:
- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="D:/keys/wsriakey"
- keystorePass="wsria.com"
- />
- keystoreFile:在第一步建立的key存放位置
- keystorePass:建立證書時的密碼
好了,到此Tomcat的SSL啟用完成,現在你可以啟動tomcat試一下了,
如果啟動報錯:
java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
需要修改conf/server.xml註釋掉下面一段,關閉APR
- <!--APR library loader. Documentation at /docs/apr.html -->
- <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
重啟正常。網上還有另一種解決方案,暫時未實驗,就是用openssl來匯入證書。
現在如果訪問https://sso.wsria.com:8443/的話,ie會提示你“此網站的安全證書有問題”,chrome提示“您的連線不是私密連線”。
這時,需要安裝證書,直接雙擊d:/keys/wsria.crt檔案,把證書安裝在“受信任的根證書頒發機構”即可。然後重新開啟網址就會看到變成綠色小鎖了。如果不行的話,就重啟瀏覽器。
注意:在建立證書時,證書的姓名寫的是域名,即證書的頒發者是域名,當前訪問地址也是域名。所以才證書才被信任。如果使用https://127.0.0.1:8443/還是會提示證書不安全。