linux apache Tomcat配置SSL(https)步驟


  1. https簡介

            它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作為RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。

             也就是說它的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

  2. HTTPS和HTTP的區別

      一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

      二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

      三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

          四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

  3.  SSL介紹

            為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。目前一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。只要3.0版本以上之I.E.或Netscape瀏覽器即可支持SSL。

      當前版本為3.0。它已被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。

    SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

    連接分為兩個階段,即握手和數據傳輸階段。

    握手階段對服務器進行認證並確立用於保護數據傳輸的加密密鑰。必須在傳輸任何應用數據之前完成握手。一旦握手完成,數據就被分成一系列經過保護的記錄進行傳輸。

  4.  SSL協議提供的服務主要有哪些?

      1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器

      2)加密數據以防止數據中途被竊取

      3)維護數據的完整性,確保數據在傳輸過程中不被改變。

  5.  https的實現原理

     有兩種基本的加解密算法類型:

    1)對稱加密:密鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;

    2)非對稱加密:密鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。

  6.  https通信的優點:

    1)客戶端產生的密鑰只有客戶端和服務器端能得到;

    2)加密的數據只有客戶端和服務器端才能得到明文;

    3)客戶端到服務端的通信是安全的。

    加密過程:

    在https的通信過程中,組合使用了公用密鑰方式加密和共享密鑰方式加密這兩種技術。公用密鑰方式要比共享密鑰方式慢得多,因此使用公用密鑰來完成共享密鑰的交換。公用密鑰是從證書中獲得的。拿到共享密鑰之后,所有的內容之間的通信都會使用共享密鑰來進行加密和解密。公用密鑰的作用就是為了安全的交換共享密鑰,共享密鑰是用來通信內容的加密和解密。這樣既確保了通信之間的安全,也確保了加密和解密的效率。

  7.  配置jdk與tomcat環境變量

    export JAVA_HOME=/usr/java/jdk1.8.0_92
    export JRE_HOME=$JAVA_HOME/jre
    export TOMCAT_HOME=/var/apache-tomcat-7.0.63
    export CATALINA_HOME=/var/apache-tomcat-7.0.63
    export CATALINA_BASE=/var/apache-tomcat-7.0.63

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/bin/tools.jar:$JRE_HOME/lib
    export CLASSPATH=:CLASSPATH:$CATALINA_HOME/common/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME:$TOMCAT_HOME/bin

  1. 接下來主要陳述一下 :Tomcat配置雙向的ssl方式
  2. 第一步:使用keytool為Tomcat生成證書

    [root@iZ25fe0s3erZ apache-tomcat-7.0.63]# keytool -alias tomcat -genkey -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 3650 -keystore /var/apache-tomca t-7.0.63/tomcat.keystore
    Enter keystore password:
    Re-enter new password:
    What is your first and last name?  輸入你服務器使用的域名
    [Unknown]: 123.com
    What is the name of your organizational unit?  輸入組織名稱
    [Unknown]: cmm
    What is the name of your organization? 輸入單位名稱
    [Unknown]: cmm
    What is the name of your City or Locality?  輸入你所在的城市
    [Unknown]: beijing
    What is the name of your State or Province? 輸入你所在的縣
    [Unknown]: beijing
    What is the two-letter country code for this unit?  輸入你所在國家的編碼
    [Unknown]: CN
    Is CN=yingyangmeishi.chaomeiman.com, OU=chaomeiman, O=chaomeiman, L=beijing, ST= beijing, C=CN correct?
    [no]: Y

    Enter key password for <tomcat>        
    (RETURN if same as keystore password):

    Tomcat生成https+ssl雙向證書認證(jdk)
  3.  第二步:為客戶端生成證書

    為瀏覽器生成證書,以便讓服務器來驗證它。

    Tomcat生成https+ssl雙向證書認證(jdk)
  4.  第三步:讓服務器信任客戶端證書

    由於是雙向SSL認證,服務器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務器的信任認證。由於不能直接將PKCS12格式的證書庫導入,我們必須先把客戶端證書導出為一個單獨的CER文件,使用如下命令:

    然后將該文件導入到服務器的證書庫,添加為一個信任證書:

     keytool -export -alias tomcat -keystore /var/apache-tomcat-7.0.63/tomcat2.keystore -file /var/apache-tomcat-7.0.63/tomcat.cer

    Tomcat生成https+ssl雙向證書認證(jdk)
    Tomcat生成https+ssl雙向證書認證(jdk)
  5.  第四步:

    讓服務器信任服務端證書(同第三步)

    Tomcat生成https+ssl雙向證書認證(jdk)
    Tomcat生成https+ssl雙向證書認證(jdk)
  6.  第五步:

    list命令查看服務器的證書庫,我們可以看到兩個輸入,一個是服務器證書,一個是受信任的客戶端證書: 

     keytool -list /var/apache-tomcat-7.0.63/tomcat.keystore

    Tomcat生成https+ssl雙向證書認證(jdk)
    Tomcat生成https+ssl雙向證書認證(jdk)
  7. 在tomcat的server.xml文件中配置相關參數

    <Connector port="8443"

    protocal="HTTP/1.1"

    SSLEnabled="true"

    maxThread="150"

    scheme="https"

    secure="true"

    clientAuth="false"

    sslProtocol="TLS"

    keystoreFile="/var/apache-tomcat-7.0.63/tomcat.keystore"

    keystorePass="cmm******"/>

 

    


免責聲明!

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



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