1、https協議須要到ca申請證書,通常免費證書不多,須要交費。html
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。
web
3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。
算法
4、http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。apache
https 就是在http上又加了一層(SSL)瀏覽器
https相對於http速度要慢,seo很差,由於百度不會收錄https的網站tomcat
SSL:安全套接層協議(Secure Socket Layer)安全
SSL協議位於TCP/IP協議與各類應用層協議之間,是一種國際標準的加密及身份認證通訊協議,爲TCP提供一個可靠的端到端的安全服務,爲兩個通信個體之間提供保密性和完整性(身份鑑別)。SSL協議可分爲兩層:SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。服務器
tomcat 配置https網絡
單向認證,就是傳輸的數據加密過了,可是不會校驗客戶端的來源
雙向認證,若是客戶端瀏覽器沒有導入客戶端證書,是訪問不了web系統的數據結構
生成單向證書
1.生成服務器端證書文件(本身生成的證書,打開網頁不會被受信任,須要添加信任才能訪問,須要到CA權威的機構申請全世界都認證的證書。。。。。)
keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500
表示有效期100年默認90天
2.修改tomcat下server.xml文件
到這裏啓動tomcat,輸入 https://localhost:8443/,是訪問不了的:緣由客戶端證書沒有導入瀏覽器
雙擊 「C:\my.p12」 便可將證書導入至 IE :輸入建立時候的密碼,password
這時再打開會彈出一個提示框:證書不可信任,有一個警告,說什麼須要機構頒發。
這時再雙擊第一步生成的tomcat.cer。一直下一步,最後選「是」。
導入後,再輸入地址就不是提示了。直接轉向tomcat的貓頁,說明成功了。
其餘:
1.ssl默認端口是443,若是web系統不須要帶端口訪問的,能夠修改
2.若是要批量生成客戶端的話,找找批量生成工具
根據公鑰 私鑰生成證書
https://blog.csdn.net/ca1m0921/article/details/82833556
服務端證書
keytool -genkey -v -alias jit -keyalg RSA -validity 3650 -keystore D:\zhengshu\生成\gwcs.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 11111111 -keypass 11111111 客戶端證書 keytool -genkey -v -alias jitclient -keyalg RSA -storetype PKCS12 -keystore D:\zhengshu\生成\測試1.p12 -dname "CN=測試員2, C=CN" -storepass 11111111 -keypass 11111111
客戶端證書轉cer keytool -export -alias jitclient -keystore D:\zhengshu\生成\測試1.p12 -storetype PKCS12 -storepass 11111111 -rfc -file D:\zhengshu\生成\測試1.cer
讓服務端信任客戶端證書 keytool -import -v -file D:\zhengshu\生成\測試1.cer -keystore D:\zhengshu\生成\gwcs.keystore
1、問題現象
火狐瀏覽器打開HTTPS服務請求報出「服務器密鑰交換握手信息中 SSL 收到了一個弱臨時 Diffie-Hellman 密鑰,錯誤碼是「ssl_error_weak_server_ephemeral_dh_key」,以下圖所示
2、解決問題
這時由於Firefox瀏覽器對於證書認證比較嚴格,而IE比較鬆
A.方法一:從根本上解決問題,需從服務端修改,在tomcat的server.xml配置Connector屬性從添加 ciphers屬性 (以下倒數第二行)
<
Connector
port
=
"8443"
protocol
=
"HTTP/1.1"
SSLEnabled
=
"true"
maxThreads
=
"150"
scheme
=
"https"
secure
=
"true"
clientAuth
=
"false"
sslProtocol
=
"TLS"
keystoreFile
=
"conf/test.keystore"
keystorePass
=
"changeit"
truststoreFile
=
"C:/NJ/PF/Java/jdk1.6.0_39/jre/lib/security/cacerts"
ciphers
=
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
/>
|
B.方法二:臨時解決問題,配置Firefox瀏覽器,在地址輸入「about:config」,把security.ssl3.dhe_rsa_aes_128_sha設置爲false,security.ssl3.dhe_rsa_aes_256_sha也設置爲false,默認都是true,以下圖所示
C.方法三:安裝disable dhe插件,點擊下載,以下圖