linux apache Tomcat配置SSL(https)步驟

  1. https簡介html

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

             也就是說它的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性。算法

  2. HTTPS和HTTP的區別

      1、https協議須要到ca申請證書,通常免費證書不多,須要交費。apache

      2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。瀏覽器

      3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。tomcat

          4、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******"/>

相關文章
相關標籤/搜索