非對稱加密:在乙個過程中使用兩個金鑰,公共金鑰用於加密資訊,私用金鑰用於解譯加密的資訊。這種加密方法稱為非對稱加密,也稱為公鑰加密,因為其中乙個金鑰是公開的(另乙個私鑰則需要自己保密)。
私鑰簽名:如果我用私鑰加密一段資料(當然只有我可以用私鑰加密,因為只有我知道我的私鑰),結果所有的人都看到我的內容了,因為他們都知道我的公鑰,那麼這種加密有什麼用處呢?但是我的好朋友x說有人冒充我給他發信。怎麼辦呢?我把我要發的信,內容是c,用我的私鑰2,加密,加密後的內容是d,發給x,再告訴他 解密看是不是c。他用我的公鑰1解密,發現果然是c。 這個時候,他會想到,能夠用我的公鑰解密的資料,必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認確實是我發的東西。 這樣我們就能確認傳送方身份了。這個過程叫做數字簽名。當然具體的過程要稍微複雜一些。用私鑰來加密資料,用途就是數字簽名。
數字證書:為了防止中間人攻擊,整個傳輸過程中亟需解決的是保證客戶端收到的公鑰是服務端傳送的,為此提出了數字證書。數字證書可以確保公鑰不被冒充。數字證書是經過權威機構(ca)認證的公鑰,通過檢視數字證書,可以知道該證書是由那家權威機構簽發的,證書使用人的資訊,使用人的公鑰。數字證書是乙個經證書授權中心(ca)數字簽名的包含公開金鑰擁有者資訊以及公開金鑰的檔案。最簡單的證書包含乙個公開金鑰、名稱以及證書授權中心的數字簽名。數字證書還有乙個重要的特徵就是只在特定的時間段內有效。生成數字證書的流程的如下:
持有人將公鑰以及身份資訊傳送給權威機構。
權威機構負責對持有人的身份進行驗證,確保公鑰和持有人的資訊準確無誤。
權威機構使用自己私鑰對持有人公鑰進行數字簽名,生成數字證書。
為了確保證書不被篡改,權威機構對數字證書進行hash計算(指紋演算法),生成摘要(指紋),使用自己的私鑰對摘要進行數字簽名,放到數字證書中。
對持有人收費。
它有以下特點:
由專門的機構簽發的數字證書才安全有效。
簽發數字證書是收費的。
不會被冒充,安全可信。
數字證書有使用期限,過了使用期限,證書變為不可用。ca也可以在試用期內,對證書進行作廢操作。
接到證書的客戶端,可以使用數字證書認證機構的公開金鑰,對證書上的數字簽名進行驗證,一旦驗證通過,客戶端便明白兩件事,一是認證伺服器的公開金鑰是真實有效的數字證書認證機構。二是伺服器的公開金鑰是值得信賴的。當客戶端發起請求的時候,伺服器將該數字證書傳送給客戶端,客戶端將其中的加密密文(f3)通過ca機構提供的公鑰及逆行解密後得到f2,同時將證書內容(f1)使用sha1雜湊成f2,如果兩者相等則說明證書沒問題。
總結:公鑰和私鑰是成對的,它們互相解密。公鑰加密,私鑰解密。私鑰數字簽名,公鑰驗證。數字證書驗證對方公鑰的正確合法性。
https要使客戶端與伺服器端的通訊過程得到安全保證,必須使用的對稱加密演算法,但是協商對稱加密演算法的過程,需要使用非對稱加密演算法來保證安全,然而直接使用非對稱加密的過程本身也不安全,會有中間人篡改公鑰的可能性,所以客戶端與伺服器不直接使用公鑰,而是使用數字證書簽發機構頒發的證書來保證非對稱加密過程本身的安全。這樣通過這些機制協商出乙個對稱加密演算法,就此雙方使用該演算法進行加密解密。從而解決了客戶端與伺服器端之間的通訊安全問題。https使用的主要目的是提供對**伺服器的身份認證,同時保護交換資料的隱私與完整性。
https證書又稱ssl證書,是部署在web伺服器中的一張數字證書。部署了https證書的web伺服器就能對外提供安全可靠的https服務。使用者使用https協議訪問web**,可以達到資料加密傳輸的效果,以保證使用者資訊傳輸的安全。非對稱加密過程需要用到公鑰進行加密,那麼公鑰從何而來?其實公鑰就被包含在數字證書中,數字證書通常來說是由受信任的數字證書頒發機構ca,在驗證伺服器身份後頒發,證書中包含了乙個金鑰對(公鑰和私鑰)和所有者識別資訊。數字證書被放到服務端,具有伺服器身份驗證和資料傳輸加密功能。這樣web伺服器就能夠對外提供https服務了。https證書產生的整個過程就是如此。
當使用者採用https協議訪問你的**時,首先會從你的伺服器中得到https證書,然後當使用者向web伺服器傳輸資料時,由於https證書中已經包含了公鑰,所以其實是使用了證書中的公鑰對傳輸資料進行加密,然後把密文傳送給web伺服器。web伺服器得到密文後,再使用私鑰對密文進行解密,最終得到使用者的原文資訊。由於用於解密的私鑰從始至終都在使用者手上,不會被第三者所得到,因此密文資訊也不可能被破解,所以使用https證書的**我們都認為是安全可靠的(但前提是私鑰不會被洩露)。數字證書內容包括了加密後所保護伺服器的公鑰、權威機構的資訊、伺服器網域名稱,有效時間、還有經過ca私鑰簽名之後的證書內容(經過先通過hash函式計算得到證書數字摘要,然後用權威機構私鑰加密數字摘要得到數字簽名),簽名計算方法以及證書對應的網域名稱。
驗證證書安全性過程:服務端必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面。當客戶端收到這個證書之後,使用本地配置的權威機構的公鑰對證書進行解密得到服務端的公鑰和證書的數字簽名,數字簽名經過ca公鑰解密得到證書資訊摘要。然後證書簽名的方法計算一下當前證書的資訊摘要,與收到的資訊摘要作對比,如果一樣,表示證書一定是伺服器下發的,沒有被中間人篡改過。因為中間人雖然有權威機構的公鑰,能夠解析證書內容並篡改,但是篡改完成之後中間人需要將證書重新加密,但是中間人沒有權威機構的私鑰,無法加密,強行加密只會導致客戶端無法解密,如果中間人強行亂修改證書,就會導致證書內容和證書簽名不匹配。
示例:client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。隨即server給client傳送第二個響應報文是數字證書。客戶端解析證書,這部分工作是由客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。
自簽名證書:自簽名證書,就是自己頒發給自己的證書 ,所以頒證的主體是不可信任的。由於我們建立的證書未由您的某個瀏覽器的受信任證書頒發機構簽名,因此您可能會看到乙個非安全連線的警告,自簽證書是不會被瀏覽器信任的證書的,使用者在訪問自簽證書時,瀏覽器會警告使用者此證書不受信任,需要人工確認是否信任此證書。實際上此時瀏覽器已獲取到伺服器證書server.crt,由於其對應的ca證書不存在於「受信任的根證書機構」中,所以無法驗證server.crt。若選擇高階選項中的「繼續瀏覽」時,同樣可以正常跳轉至對應的頁面,這時相當於強行讓瀏覽器接受該證書,同時接受伺服器公鑰。在測試環境下,這樣完全ok。伺服器證書server.crt是由ca證書的私鑰簽署的數字證書,若使客戶端能驗證該證書則我們需要將ca證書(非伺服器證書,包含ca證書的公鑰-openssl生成的ca.crt)安裝至客戶端系統中的「受信任的根證書機構」中,保證瀏覽器可通過此ca證書來驗證伺服器證書server.crt。
自簽證書用ip不能直接連線https伺服器原因由於證書中不存在ip資訊,是無法跟url中的ip進行比對的,因此瀏覽器無法通過證書驗證。自簽證書時是簽給***.***.***.com網域名稱的,而瀏覽器中是通過ip訪問的,瀏覽器警告使用者證書與所在域不匹配!本機hosts檔案中配上對映關係後,使用網域名稱可以訪問。或者在證書中新增ip位址。在openssl.cnf中配置使用者可選名稱時,新增一條ip位址,即可保證瀏覽器通過對ip的驗證,重新簽署。
在簽署證書(server.csr簽署ca.crt
)之前需要確認openssl.cnf中的配置。openssl.cnf用來進行下一步生成伺服器簽署申請檔案server.csr(openssl req -new -out server.csr -key server.key -config /etc/ssl/openssl.cnf
)。
#openssl.cnf的alt_names域中如果沒有ip這一項,瀏覽器使用ip訪問時驗證無法通過
[ alt_names ]
ip.1 = 192.168.50.115
dns.1 = dfe.leida.org
dns.2 = ex.abcexpale.net
參考鏈結
正常情況下請不要使用自簽名證書,因為如果你直接用自簽名證書,你需要給所有的客戶端安裝該證書才會被信任,而且維護起來也比較麻煩。對於ca機構頒發的證書http預設支援 可以直接訪問。但是對於自定義的證書就不可以了, 需要加入trust。如果是內網用(沒用公網網域名稱或只有內網ip),可以使用 https。單向認證:只需要客戶端認證服務端是否正確;雙向認證:需要客戶端和伺服器端互相認證,在單向認證的基礎上,伺服器也需要認證客戶端。在生成證書這一步也需要為客戶端生成證書。因為大部分情況下(除比較安全的應用如涉及到支付、銀行u盾等)不需要雙向認證,所以這裡一般單向認證就可以了。客戶端安裝ca證書(解決瀏覽器端無法識別證書的問題)。既然自簽證書是不可信任的,那為何還有人包括12306也在用自簽證書呢?主要原因是:自簽證書是免費的 ;自簽證書相對申請ca證書,流程更簡單 ;自簽證書同樣可以對資料進行加密 ;自簽證書的有效期可以設定很長,免去續簽的麻煩 ;自簽證書更方便測試,比如說你想生成多少個不同伺服器ip的都可以 。
Https 公鑰 私鑰 證書
一般的數字證書產品的主題通常含有如下字段 證書申請單位所在地 所在城市 locality 簡稱 l 字段 所在省份 state provice 簡稱 s 字段 所在國家 country 簡稱 c 字段,只能是國家字母縮寫,如中國 cn 其他一些字段 電子郵件 email 簡稱 e 字段 多個姓名字段...
公鑰私鑰與證書
公鑰私鑰證書 在客戶端伺服器的場景下,伺服器擁有公鑰和私鑰,在加密的場景下,客戶端通過使用公鑰加密與服務端通訊,服務端收到之後使用私鑰解密。數字簽名 服務端傳送給客戶端之前,對訊息內容使用hash,生成內容的摘要。同時,使用私鑰對摘要進行加密,生成了數字簽名。證書中心ca 這裡存在乙個問題,客戶端的...
公鑰 私鑰 證書 HTTPS那些事兒
如今流行的加密主要分為對稱加密和不對稱加密兩種.對稱加密指的是通訊雙方加密解密使用事先約定好的同乙個金鑰.常用的演算法有aes,des等.其優點是加密解密速度快,運算開銷低.但缺點也很明顯,安全的將這個金鑰傳輸到另一方的手中可能會是乙個很困難的事情.在不安全的環境中,有可能是一件高風險的事情.事實上...