Tomcat配置HTTPS協議詳細教程(上)


一:概念簡介

     Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。

     HTTP 超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標准。

     HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。

     HTTPS和HTTP的區別:

  •     HTTP 是超文本傳輸協議,信息是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協議。
  •     HTTPS 協議需要到 CA 申請證書,一般免費證書很少,需要交費。
  •     HTTP 和 HTTPS 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,后者是 443。
  •     HTTP 的連接很簡單,是無狀態的;HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網絡協議,比 HTTP 協議安全。

 

 

二:為服務器生成證書

        HTTPS 如果生產環境應用在域名上是需要直接或間接的從 CA 申請證書,來取得瀏覽器的信任的。我們先在本地模擬測試一下這個過程,自己使用jdk的keytool工具生成證書。

 

2.1 找到自己的%JAVA_HOME%/bin目錄

          計算機---->屬性---->高級系統配置---->系統屬性

 

 

2.2 生成服務器證書 

   (1)打開DOS窗口,通過命令進入到jdk的bin目錄下。(C:\Program Files\Java\jdk1.8.0_60)

    (2)創建存放生成證書的文件夾(G:\tomcat_cer)

    (3)執行命令:  keytool -genkey -v -alias tomcat -keyalg RSA -keystore G:\tomcat_cer\tomcat.keystore -validity 36500

            參數說明: G:\tomcat_cer\  -->自己創建的存放證書的文件夾  ; tomcat.keystore -->生成的證書名稱  ; validity 36500  -->證書有效期,36500表示100年,默認值是90天 

   (4)密鑰庫口令: password(這個密碼非常重要,要求大於6個字符)

            名字與姓氏:192.168.0.105(以后訪問的域名或IP地址,非常重要,證書和域名或IP綁定)
            組織單位名稱,組織名稱,城市,省市自治區,國家地區代碼(隨便填)

   (5)打印  [正在存儲G:\tomcat_cer\tomcat.keystore]   ,證書生成完成

 

  

 

 

三:配置tomcat服務器

 3.1 打開tomcat配置文件,如:D:/apache-tomcat/conf/server.xml,修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8003" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  
  <!-- 修改第一步:注釋 className="org.apache.catalina.core.AprLifecycleListener" -->
  <!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />   -->
  
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  
  <!-- 修改第二步:redirectPort端口改為443 (port端口,根據自己需要設置即可) -->
  <Service name="Catalina">
    <Connector port="11000" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
               
  <!-- 修改第三步:增加enableLookups="false"  (port端口,根據自己需要設置即可) -->
    <Connector port="8002" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />
    
  <!-- 修改第四步:去掉注釋且修改keystoreFile(證書文件的位置)、keystorePass(<tomcat>的主密碼即剛剛設置的證書密碼) 兩個參數  -->
  <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="G:\tomcat_cer/tomcat.keystore" keystorePass="password"/>

   <!-- 修改結束  -->
    
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
       <Host name="127.0.0.1"  appBase="phpwebapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

 

       

3.2 打開tomcat配置文件,如:D:/apache-tomcat/conf/web.xml,在該文件</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>
  <!--配置證書結束-->

 

 3.3 啟動tomcat服務器,訪問系統

      使用以前保存的地址去訪問,我們發現,默認的已經變成https協議了,但是沒用權限訪問,接下來,我們繼續,為客戶端生成證書

 

三:為客戶端生成證書

        具體步驟參考2.2,這里就不過多描述了(    keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore G:\tomcat_cer\tomcat.p12   )  

3.1 生成客戶端p12證書

 

 

3.2 把客戶端p12證書轉為.cer格式證書

      具體步驟參考2.2,這里就不過多描述了(   keytool -export -alias mykey -keystore  G:\tomcat_cer\tomcat.p12  -storetype PKCS12 -storepass password -rfc -file G:\tomcat_cer\tomcat.cer  )   

      執行成功之后,我們在文件夾中可以看到相關證書

 

 

四:讓服務器信任客戶端證書(詳見教程下)

 

 

 

 

 

 

 

                             

   

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM