https簡介html
它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操做,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全套接字層(SSL)做爲HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通訊。)SSL使用40 位關鍵字做爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,若是須要的話用戶能夠確認發送者是誰。java
也就是說它的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性。算法
1、https協議須要到ca申請證書,通常免費證書不多,須要交費。apache
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。瀏覽器
3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。tomcat
4、http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。安全
爲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記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。網站
鏈接分爲兩個階段,即握手和數據傳輸階段。
握手階段對服務器進行認證並確立用於保護數據傳輸的加密密鑰。必須在傳輸任何應用數據以前完成握手。一旦握手完成,數據就被分紅一系列通過保護的記錄進行傳輸。
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器
2)加密數據以防止數據中途被竊取
3)維護數據的完整性,確保數據在傳輸過程當中不被改變。
有兩種基本的加解密算法類型:
1)對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;
2)非對稱加密:密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不一樣密鑰(公鑰加密須要私鑰解密,私鑰加密須要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。
1)客戶端產生的密鑰只有客戶端和服務器端能獲得;
2)加密的數據只有客戶端和服務器端才能獲得明文;
3)客戶端到服務端的通訊是安全的。
加密過程:
在https的通訊過程當中,組合使用了公用密鑰方式加密和共享密鑰方式加密這兩種技術。公用密鑰方式要比共享密鑰方式慢得多,所以使用公用密鑰來完成共享密鑰的交換。公用密鑰是從證書中得到的。拿到共享密鑰以後,全部的內容之間的通訊都會使用共享密鑰來進行加密和解密。公用密鑰的做用就是爲了安全的交換共享密鑰,共享密鑰是用來通訊內容的加密和解密。這樣既確保了通訊之間的安全,也確保了加密和解密的效率。
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
第一步:使用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):
爲瀏覽器生成證書,以便讓服務器來驗證它。
因爲是雙向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
讓服務器信任服務端證書(同第三步)
list命令查看服務器的證書庫,咱們能夠看到兩個輸入,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list /var/apache-tomcat-7.0.63/tomcat.keystore
<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******"/>