Tomcat 8.5——配置阿里云免费SSL证书(PFX格式证书)[启用HTTPS协议]
基本概念
SSL證書:SSL證書是數字證書的一種,類似于駕駛證、護照和營業執照的電子副本。因為配置在服務器上,也稱為SSL服務器證書。
SSL 證書就是遵守 SSL協議,由受信任的數字證書頒發機構CA,在驗證服務器身份后頒發,具有服務器身份驗證和數據傳輸加密功能。
SSL證書通過在客戶端瀏覽器和Web服務器之間建立一條SSL安全通道(Secure socket layer(SSL)安全協議是由Netscape Communication公司設計開發。該安全協議主要用來提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變,即數據的完整性,現已成為該領域中全球化的標準。由于SSL技術已建立到所有主要的瀏覽器和WEB服務器程序中,因此,僅需安裝服務器證書就可以激活該功能了),即通過它可以激活SSL協議,實現數據信息在客戶端和服務器之間的加密傳輸,可以防止數據信息的泄露,保證了雙方傳遞信息的安全性,而且用戶可以通過服務器證書驗證他所訪問的網站是否是真實可靠。數字簽名又名數字標識、簽章 (即 Digital Certificate,Digital ID ),提供了一種在網上進行身份驗證的方法,是用來標志和證明網絡通信雙方身份的數字信息文件,概念類似日常生活中的司機駕照或身份證。 數字簽名主要用于發送安全電子郵件、訪問安全站點、網上招標與投標、網上簽約、網上訂購、網上公文安全傳送、網上辦公、網上繳費、網上繳稅以及網上購物等安全的網上電子交易活動。
HTTPS協議:HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用于安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,并內置于其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用于萬維網上安全敏感的通訊,例如交易支付方面。
HTTP與HTTPS的區別:HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
官方文檔
官方文檔:?https://tomcat.apache.org/tomcat-8.5-doc/config/http.html?
操作步驟
獲取SSL證書
1、阿里云申請免費的SSL證書?
阿里云免費的SSL證書申請地址:https://common-buy.aliyun.com/?spm=5176.10695662.958455.3.58d37d544FnuYs&commodityCode=cas#/buy
下載SSL證書
?
Tomcat配置
阿里云SSL證書官方Tomcat配置說明:
Tomcat支持JKS格式證書,從Tomcat7開始也支持PFX格式證書,兩種證書格式任選其一。
文件說明:
1.證書文件xxxx.pem,包含兩段內容,請不要刪除任何一段內容。
2.如果是證書系統創建的CSR,還包含:證書私鑰文件xxxx.key、PFX格式證書文件xxxx.pfx、PFX格式證書密碼文件pfx-password.txt。
1、證書格式轉換
在Tomcat的安裝目錄下創建cert目錄,并且將下載的全部文件拷貝到cert目錄中。如果申請證書時是自己創建的CSR文件,附件中只包含xxxx.pem文件,還需要將私鑰文件拷貝到cert目錄,命名為xxxx.key;如果是系統創建的CSR,請直接到第2步。
到cert目錄下執行如下命令完成PFX格式轉換命令,此處要設置PFX證書密碼,請牢記:
2、PFX證書安裝
找到安裝Tomcat目錄下該文件server.xml,一般默認路徑都是在 conf 文件夾中。找到 <Connection port="8443" 標簽,增加如下屬性:
keystoreFile="cert/xxxx.pfx" keystoreType="PKCS12"打開server.xml,找到如下代碼,去掉注釋?
?
注:找不到直接添加也可以?
修改為?
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"certificateKeystoreType="PKCS12" certificateKeystorePassword="xxx" /></SSLHostConfig></Connector>參數信息:??
| certificateRevocationListFile | 包含證書頒發機構的級聯證書吊銷列表的文件名。格式是PEM編碼的。如果未定義,則不會根據證書吊銷列表檢查客戶端證書(除非使用了基于OpenSSL的連接器并且?定義了certificateRevocationListPath)。相對路徑將針對解析$CATALINA_BASE。基于JSSE的連接器也可以為此屬性指定一個URL。 |
| certificateRevocationListPath | 僅OpenSSL。 包含證書頒發機構的證書吊銷列表的目錄的名稱。格式是PEM編碼的。相對路徑將針對解析$CATALINA_BASE。 |
| certificateVerification | 設置為required,如果你想在SSL棧需要從客戶端的有效證書鏈接受連接之前。optional如果希望SSL堆棧請求客戶端證書,則設置為,但是如果未提供證書,則不會失敗。設置為?optionalNoCA,如果你想客戶證書是可選的,你不想Tomcat來檢查他們對信任的CA列表中。如果TLS提供程序不支持此選項(OpenSSL支持,JSSE不支持),則將其視為optional已指定。一?none,除非客戶端請求由安全限制使用保護的資源值(默認值)將不需要證書鏈CLIENT-CERT認證。 |
| certificateVerificationDepth | 驗證客戶端證書時允許的中間證書的最大數量。如果未指定,將使用默認值10。 |
| ciphers | 使用OpenSSL語法啟用的密碼。(有關支持的密碼列表和語法,請參見OpenSSL文檔。)或者,可以使用逗號分隔的使用標準OpenSSL密碼名稱或標準JSSE密碼名稱的密碼列表。 對于基于JSSE的連接器,從OpenSSL語法轉換為JSSE密碼時,OpenSSL語法分析的行為與OpenSSL 1.1.0開發分支的行為保持一致。 僅使用SSL實施支持的密碼。 如果未指定,將使用默認值(使用OpenSSL表示法)?HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA。 請注意,默認情況下,定義密碼的順序被視為優先順序。請參閱honorCipherOrder。 |
| hostName | SSL主機的名稱。這應該是完全限定域名(例如tomcat.apache.org)或通配符域名(例如*.apache.org)。如果未指定,_default_將使用默認值。 |
| protocols | 與客戶端通信時要支持的協議的名稱。這應該是以下各項的任意組合的列表:
列表中的每個標記都可以帶有加號(“ +”)或減號(“-”)前綴。加號添加協議,減號將其從當前列表中刪除。該列表是從一個空列表開始構建的。 令牌all是的別名?SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3。 請注意,TLSv1.3僅當使用實現的JVM時,JSSE才支持該功能TLSv1.3。 請注意,SSLv2Hello對于基于OpenSSL的安全連接器,它將被忽略。如果為基于OpenSSL的安全連接器指定了多個協議,它將始終支持SSLv2Hello。如果指定了單個協議,則不支持?SSLv2Hello。 請注意,SSLv2和SSLv3本質上是不安全的。 如果未指定,all將使用默認值。 |
| sessionCacheSize | 要在會話緩存中維護的SSL會話數。指定?-1使用實現默認值。零及以上的值將傳遞給實現。零用于指定無限的緩存大小,不建議使用。如果未指定,-1則使用默認值。 |
| sessionTimeout | 創建SSL會話后將超時的時間(以秒為單位)。指定-1使用實現默認值。零及以上的值將傳遞給實現。零用于指定無限超時,不建議使用。如果未指定,則使用默認值86400(24小時)。 |
| sslProtocol | 僅限JSSE。 要使用的SSL協議(一個值可以啟用多個協議-有關詳細信息,請參閱JVM文檔)。如果未指定,則默認為TLS。在創建SSLContext實例(例如?Oracle Java 7)時,可以從JVM文檔中獲取算法允許值的允許值?。注意:此屬性和之間有重疊?protocols。 |
注:Tomcat 8.0及以下配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="F:\Keystore\tomcat.keystore" keystorePass="123456"/>參數信息:?
| 屬性 | 描述 |
| clientAuth | 如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證 |
| keystoreFile | 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對于<CATALINA_HOME>(Tomcat安裝目錄)環境變量 的相對路徑。如果此項沒有設定,默認情況下,Tomcat將從當前操作系統用戶的用戶目錄下讀取名為“.keystore”的文件。 |
| keystorePass | 指定keystore的密碼,如果此項沒有設定,在默認情況下,Tomcat將使用“changeit”作為默認密碼。 |
| sslProtocol | 指定套接字(Socket)使用的加密/解密協議,默認值為TLS,用戶不應該修改這個默認值。 |
| ciphers | 指定套接字可用的用于加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設定,在默認情況下,套接字可以使用任意一個可用的密碼。 |
?保存
重啟Tomcat?
訪問
https//:域名:端口注:HTTPS協議默認端口443
常見問題?
暫無?
參考文章
https://segmentfault.com/a/1190000009780545
https://www.jianshu.com/p/9aabef3373ee
https://www.cnblogs.com/liaojie970/p/6693841.html
https://blog.csdn.net/Axela30W/article/details/77145887
https://blog.csdn.net/wudinaniya/article/details/81200309
總結
以上是生活随笔為你收集整理的Tomcat 8.5——配置阿里云免费SSL证书(PFX格式证书)[启用HTTPS协议]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAC + Tomcat——部署Web
- 下一篇: JAVA——获取classpath文件路