SSL證書安裝 ----------------各版本tomcat安裝安全證書
首先,不知道你有沒有發現,有時你在瀏覽器訪問一個網址時,例如(www.hzelin.top),你會發現網址左邊是個 X不安全(表示該連結不安全,使用的是http未加密協議),而有時你訪問一個網址的時候發現地址左邊是 (表示該連結是安全的,使用https加密協議,特別是做小程式的,一定需要https訪問的),那這個是怎麼實現的呢?下面告訴你一種方法:
宣告:此處說的都是使用pfx方式對tomcat版本安裝SSL證書,別的方式自己百度,個人覺得這種方式更簡單點:
一、首先你的去申請SSL證書,阿里雲上有免費一年的,可以自己去申請,怎麼申請這裡就不講了,百度很多;只要最後的結果你有如下圖兩個檔案就行了;
第一個檔案,一般是xxx_你的域名.pfx,這個就是安全證書,別以為證書是那種要你去影印提交的那種!!!!
第二個檔案,是使用該證書的密碼,是一個純文字檔案,裡邊就一串字串,兩者配套使用,別亂搭!!!!
申請的證書與你使用哪種伺服器有關,但是與你使用同一種伺服器的各個版本無關,例如(tomcat7或tomcat8,這是沒影響的,也就是說通用)
二、配置tomcat伺服器,注意:安裝SSL證書隻影響web伺服器,並不影響你的專案,所以不需要修改自己的專案
1、將下載的兩個檔案上傳到自己tomcat伺服器下(sftp可以實現),新建一個cert資料夾(mkdir cert),最好修改一下許可權(chmod 777 cert),如下圖:
2、下面開始配置tomcat(首先在沒配置之前,請保證tomcat是能正常訪問的,無論你是否修改的8080埠,這是前提)
下面tomcat7.0及以下版本 和tomcat8以上版本配置存在點下差異,下面有區別,前面都是一樣的:
首先進入遠端伺服器,定位到tomcat安裝目錄下conf檔案內的server.xml,通過vim命令開啟該檔案:
找到如下標籤進行修改:將port修改為80,目的是後面訪問專案就不用加埠號8080了,修改redirectPort為443,目的是後面通過http訪問的時候能重定向到通過https訪問
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
================================================================================================================
從這裡開始,tomcat7.0及以下版本按下面配置方式進行:
然後繼續往下找,找到如下圖類似的標籤內容(下圖是已經修改過的),你能找到的應該是被<!--xxx-->這個註釋掉的,只要釋放出來自己修改就行了:
其中port屬性修改為上面redirectPort相同,都是443;protocol不做修改;maxThreads不做修改;SSLEnabled預設,沒有自己新增上;scheme預設;secure預設;
重點來了:keystoreFile屬性自己新增上,值為之前上傳到伺服器cert目錄下的pfx檔案,建議使用絕對路徑,可以參考上圖做修改;
keystoreType="PKCS12",自己新增上;
keystorePass屬性自己新增上,值為之前上傳到伺服器cert目錄下的txt檔案內的那串字串;
後面的clientAuth="false"與sslProtocol="TLS"自己新增上,是否有這個必要,我也不清楚;
=================================tomcat8.0及以上版本按下面配置================================================
從這裡開始,tomcat8.0及以上版本按下面配置方式進行:
找到如下圖模組,釋放註釋,做必要修改,修改內容如下面程式碼
1)、將Tomcat中預設的HTTPS埠Connector port 8443修改為443。8443埠不可通過域名直接訪問、需要在域名後加上埠號;443埠是HTTPS的預設埠,可通過域名直接訪問,無需在域名後加埠號。
2)、server.xml檔案中Connector port有兩種執行模式(NIO和APR),請選擇NIO模式(也就是protocol="org.apache.coyote.http11.Http11NioProtocol")這一段進行配置。
3)、certificateKeystoreFile代表證書檔案的路徑,請用您證書的路徑+檔名替換證書域名.pfx,例如:certificateKeystoreFile="/usr/local/tomcat/cert/abc.com.pfx"
4)、certificateKeystorePassword為SSL證書的密碼,請用您證書密碼檔案pfx-password.txt中的密碼替換,例如:certificateKeystorePassword="bMNML1Df"
5)、證書型別為PFX格式時,certificateKeystoreType修改為PKCS12。
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/usr/local/tomcat/cert/證書域名.pfx" certificateKeystorePassword="證書密碼" certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>
==============================tomcat8.0以上到此結束,後面是共同的=================================================
然後繼續往下找,找到如下圖,將redirectPort修改成與上面相同的443就行了:
到此處就算修改完成了,按esc鍵退出編輯模式,然後使用:wq儲存並退出即可;
(接下來這一步,可做可不做,做了的好處是使用http訪問會被強制轉換為https訪問)
通過vim命令開啟conf目錄下的web.xml檔案,通過shift+g定位到該檔案最後,找到</welcome-file-list>該結束標籤,並在後面追加如下程式碼
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
到這一步整個配置過程已經算是完成了,現在重啟tomcat伺服器(./shutdowm.sh ./startup.sh),啟動成功後,使用瀏覽器訪問一下,看是否成功;
1、我遇到的坑:tomcat啟動成功,但就是死活訪問不到,原因是防火牆443埠沒有開放,使用firewall-cmd --zone=public --add-port=443/tcp --permanent命令開放443埠,然後重新訪問試一下,這下是否可以訪問了。。。。。。。
2、可能的坑:tomcat正常啟動,防火牆埠也開放了,但還是訪問不到,那你最好看一個上阿里雲平臺看一個你的安全組是否設定為允許開放該埠了!!!!有時候你剛裝tomcat伺服器,發現正常啟動,8080埠也開了,但還是訪問不到,最可能的原因就是安全組沒開了,這一點切記切記。。。。。。。
3、一切都沒問題,但還是訪問不了,別急,等15分鐘後重新訪問試一下,可能tomcat表面上給你顯示啟動成功了,實際上是還在啟動中。。。。。。。。。
&n