1. 程式人生 > >Tomcat配置SSL

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修改結果如下:

  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  2.                maxThreads="150" scheme="https" secure="true"  
  3.                clientAuth="false" sslProtocol="TLS"   
  4.            keystoreFile="D:/keys/wsriakey"  
  5.            keystorePass="wsria.com"  
  6. />   
引數說明:
    • keystoreFile:在第一步建立的key存放位置
    • keystorePass:建立證書時的密碼

       好了,到此Tomcat的SSL啟用完成,現在你可以啟動tomcat試一下了,

       如果啟動報錯:

       java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR

       需要修改conf/server.xml註釋掉下面一段,關閉APR

  1. <!--APR library loader. Documentation at /docs/apr.html -->  
  2. <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/還是會提示證書不安全。