http與https

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     

A、輸入keystore密碼:此處須要輸入大於6個字符的字符串
B、「您的名字與姓氏是什麼?」這是必填項,而且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你未來要在瀏覽器中輸入的訪問地址
C、 「你的組織單位名稱是什麼?」、「您的組織名稱是什麼?」、「您所在城市或區域名稱是什麼?」、「您所在的州或者省份名稱是什麼?」、「該單位的兩字母國 家代碼是什麼?」能夠按照須要填寫也能夠不填寫直接回車,在系統詢問「正確嗎?」時,對照輸入信息,若是符合要求則使用鍵盤輸入字母「y」,不然輸入「n」從新填寫上面的信息
D、輸入<tomcat>的主密碼,這項較爲重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也能夠

             

表示有效期100年默認90天

2.修改tomcat下server.xml文件

修改參數 =>
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
去掉註釋且修改參數 =>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore" keystorePass="祕鑰密碼"/>
修改參數 =>
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />
 
在tomcat\conf\web.xml中的</welcome-file-list>後面加上這樣一段:
Java代碼
    <login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection >
    <web-resource-name >SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>

三、上述配置完成後,重啓TOMCAT後便可以使用SSL。IE地址欄中能夠直接輸入地址沒必要輸入http://」 或者 https://」 ;也能夠輸入 「http:// 」 會跳轉成爲 「https://」 來登陸
四、注意事項:
(1) 生成證書的時間,若是IE客戶端所在機器的時間早於證書生效時間,或者晚於有效時間,IE會提示「該安全證書已到期或還未生效」
(2) 若是IE提示「安全證書上的名稱無效或者與站點名稱不匹配」,則是由生成證書時填寫的服務器所在主機的域名「您的名字與姓氏是什麼?」/「What is your first and last name?」不正確引發的
 
生成雙向證書
第一步:爲服務器生成證書

使用keytool 爲 Tomcat 生成證書,假定目標機器的域名是「 localhost 」, keystore 文件存放在「 C:\tomcat.keystore 」,口令爲「 password 」,使用以下命令生成:

keytool -genkey -v -alias tomcat -keyalg RSA   -validity 3650  -keystore c:\tomcat.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass password -keypass password
這個tomcat.cer是爲了解決不信任時要導入的
keytool -export -alias tomcat -keystore c:\tomcat.keystore -file c:\tomcat.cer -storepass password
第二步:爲客戶端生成證書

下一步是爲瀏覽器生成證書,以便讓服務器來驗證它。爲了能將證書順利導入至IE 和 Firefox ,證書格式應該是 PKCS12 ,所以,使用以下命令生成:

keytool -genkey -v -alias myKey -keyalg RSA -storetype PKCS12   -validity 3650  -keystore C:\my.p12 -dname "CN=MyKey,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass password -keypass password

第三步:讓服務器信任客戶端證書

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

keytool -export -alias myKey -keystore C:\my.p12 -storetype PKCS12 -storepass password -rfc -file C:\my.cer



經過以上命令,客戶端證書就被咱們導出到「C:\my.cer 」文件了。下一步,是將該文件導入到服務器的證書庫,添加爲一個信任證書:

keytool -import -v -file C:\my.cer -keystore c:\tomcat.keystore -storepass password

經過list 命令查看服務器的證書庫,咱們能夠看到兩個輸入,一個是服務器證書,一個是受信任的客戶端證書:

keytool -list -keystore c:\tomcat.keystore -storepass password

第四步:配置Tomcat 服務器

打開Tomcat 根目錄下的 /conf/server.xml ,找到以下配置段,修改以下:
 
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

    clientAuth="true" sslProtocol="TLS"

    keystoreFile="C:/tomcat.keystore" keystorePass="password"

truststoreFile="C:/tomcat.keystore" truststorePass="password"/>

 
 
web.xml中
<!-- Authorization setting for SSL -->

<auth-method>CLIENT-CERT</auth-method>

<realm-name>Client Cert Users-only Area</realm-name>

</login-config>

<security-constraint>

<!-- Authorization setting for SSL -->

<web-resource-collection >

<web-resource-name >SSL</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

 到這裏啓動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」,以下圖所示

Firefox報"..錯誤碼: 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,以下圖所示

Firefox報"..錯誤碼: ssl_error_weak_server_ephemeral_dh_key"問題

C.方法三:安裝disable dhe插件,點擊下載,以下圖

Firefox報"..錯誤碼: ssl_error_weak_server_ephemeral_dh_key"問題

Firefox報"..錯誤碼: ssl_error_weak_server_ephemeral_dh_key"問題

相關文章
相關標籤/搜索