SSL基本介紹html
咱們經常在使用網上銀行時看到的鏈接都是以「https」開始的,那麼這個https是什麼呢?這實際上是表算法
示目前鏈接使用了SSL進加密,能保證客戶端到服務器端的通訊都在被保護起來,那麼瀏覽器是若是實現的呢?下面讓咱們來介紹一下SSL基本的實現方法。
apache
首先咱們有兩種基本的加解密算法類型:對稱加密,非對稱加密(公私鑰加密),如今介紹一下這兩種加密算法的特色:瀏覽器
對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等,示意圖以下:tomcat
圖1 對稱加密安全
非對稱加密:密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不一樣密鑰(公鑰加密須要私鑰解密,私鑰加密須要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等,示意圖以下:服務器
2.https加密傳輸介紹網站
根據上面的兩種加密方法,如今咱們就能夠設計一種沒法讓他人在互聯網上知道你的通信信息的加密方法:ui
1. 在服務器端存在一個公鑰及私鑰
2. 客戶端從服務器取得這個公鑰
3. 客戶端產生一個隨機的密鑰
4. 客戶端經過公鑰對密鑰加密(非對稱加密)
5. 客戶端發送到服務器端
6. 服務器端接受這個密鑰而且之後的服務器端和客戶端的數據所有經過這個密鑰加密(對稱加密)
HTTPS通訊過程的時序圖以下:
正如上圖所示,咱們能保證下面幾點:
1. 客戶端產生的密鑰只有客戶端和服務器端能獲得
2. 加密的數據只有客戶端和服務器端才能獲得明文
3. 客戶端到服務端的通訊是安全的
3. https的雙向認證/單向認證
tomcat 配置https (雙向認證)
一、生成服務器端證書
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650
二、生成客戶端證書
keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650
客戶端的CN能夠是任意值。
三、因爲是雙向SSL認證,服務器必需要信任客戶端證書,所以,必須把客戶端證書添加爲服務器的信任認證。因爲不能直接將PKCS12格式的證書庫導入,咱們必須先把客戶端證書導出爲一個單獨的CER文件,使用以下命令,先把客戶端證書導出爲一個單獨的cer文件:
keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass password -storetype PKCS12 -rfc
而後,添加客戶端證書到服務器中(將已簽名數字證書導入密鑰庫)
keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass password
四、查看證書內容
keytool -list -v -keystore server.jks -storepass password
五、配置tomcat service.xml文件
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="D:/server.jks" keystorePass="password"
truststoreFile="D:/server.jks" truststorePass="password"
/>
clientAuth="true"表示雙向認證
六、導入客戶端證書到瀏覽器 雙向認證須要強制驗證客戶端證書。雙擊「custom.p12」便可將證書導入至IE。
tomcat 配置https (單向認證)
一、生成服務器端證書
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650
二、因爲是單向認證,沒有必要生成客戶端的證書,直接進入配置tomcat service.xml文件
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/server.jks" keystorePass="password"
/>
clientAuth="false"表示單向認證,同時去掉truststoreFile="D:/server.jks" truststorePass="password"這2
4. 證書的購買
你們能夠到北京數字認證中心等CA廠商去採購,下面是深圳市沃通的證書相關狀況:
SSL證書續費價格:
3 年: 3134 元,平均下來1年僅1045元,4張共12536元
5 年: 5150 元,平均下來1年僅1030元,4張共20600元
如今1年1688元,續費價格爲1350元。續多年的很是划算哦:)
並且不用每一年都續費從新安裝證書。只要是長期運營的網站,
能夠放心使用多年期證書。
這是證書請求文件csr生成指南:https://www.wosign.com/support/csr_generation.htm
證書安裝指南:https://www.wosign.com/support/ssl_installation.htm
5. 部署注意事項:
一、確保server.key 、server.crt、ca.crt等文件爲root可讀權限,增強安全性。操做以下:
chmod 400 文件名
二、執行apachectl startssl命令時,讓apache自動輸入"pass phrase"運行,操做以下:
編輯文件
(1) vi /*/*/apache/conf/extra/httpd-ssl.conf
註釋掉SSLPassPhraseDialog builtin
在下一行添加SSLPassPhraseDialog exec:/*/*/apache/conf/apache_pass.sh
(2) vi /*/*/apache/conf/apache_pass.sh
#!/bin/sh
echo "pass phrase" # "pass phrase" 即爲執行apachectl startssl時須要輸入的通行短語"
chmod 700 /*/*/apache/conf/apache_pass.sh
(3)而後啓動apache
[root@zte jishubu]#/*/*/apache/bin/apachectl startssl 或者是 /*/*/apache/bin/httpd -k start -DSSL
三、一旦開啓了https服務,則防火牆必定要把443端口對外開放。
原文出處:http://www.it165.net/os/html/201405/8183.html