標籤:http io os 使用 sp strong 資料 on html
什麼是https
https is “Hyper Text Transfer Protocol” with Secure Sockets Layer (SSL)
HTTPS的主要思想是在不安全的網路上建立一安全通道,並可在使用適當的加密包和伺服器憑證可被驗證且可被信任時,對竊聽和中間人攻擊提供合理的保護。
HTTPS的信任繼承基於預先安裝在瀏覽器中的憑證授權單位(如VeriSign、Microsoft等)(意即“我信任憑證授權單位告訴我應該信任的”)。因此,一個到某網站的HTTPS串連可被信任,若且唯若:
- 使用者相信他們的瀏覽器正確實現了HTTPS且安裝了正確的憑證授權單位;
- 使用者相信憑證授權單位僅信任合法的網站;
- 被訪問的網站提供了一個有效認證,意即,它是由一個被信任的憑證授權單位簽發的(大部分瀏覽器會對無效的認證發出警告,當然自己去產生是不可以的)
- 該認證正確地驗證了被訪問的網站(如,訪問https://example時收到了給“Example Inc.”而不是其它組織的認證);
- 或者互連網上相關的節點是值得信任的,或者使用者相信本協議的加密層(TLS或SSL)不能被竊聽者破壞。
和ssl什麼關係
從定義可以看出
為什麼用https
HTTP協議和安全性通訊協定同屬於應用程式層(OSI模型的最高層),具體來講,安全性通訊協定工作在HTTP之下,運輸層之上:安全性通訊協定向運行HTTP的進程提供一個類似於TCP的通訊端,供進程向其中注入報文,安全性通訊協定將報文加密並注入運輸層通訊端;或是從運輸層擷取加密報文,解密後交給對應的進程。嚴格地講,HTTPS並不是一個單獨的協議,而是對工作在一加密串連(TLS或SSL)上的常規HTTP協議的稱呼。
HTTPS報文中的任何東西都被加密,包括所有前序和荷載。除了可能的選擇密文攻擊(參見限制小節)之外,一個攻擊者所能知道的只有在兩者之間有一串連這一事實。
它加密了所有前序和荷載,相對來說安全
怎麼樣https
要使一網路伺服器準備好接受HTTPS串連,管理員必須建立一數位憑證,並交由憑證授權單位簽名以使瀏覽器接受。憑證授權單位會驗證數位憑證持有人和其聲明的為同一人。瀏覽器通常都預裝了憑證授權單位的認證,所以他們可以驗證該簽名。
對於怎麼與憑證授權單位合作,果殼是這麼說的:
1.瀏覽器將自己支援的一套加密規則發送給網站。
2.網站從中選出一組密碼編譯演算法與HASH演算法,並將自己的身份資訊以認證的形式發回給瀏覽器。認證裡麵包含了網站地址,加密公開金鑰,以及認證的頒發機構等資訊。
3.獲得網站認證之後瀏覽器要做以下工作:
a) 驗證認證的合法性(頒發認證的機構是否合法,認證中包含的網站地址是否與正在訪問的地址一致等),如果認證受信任,則瀏覽器欄裡面會顯示一個小鎖頭,否則會給出認證不受信的提示。
b) 如果認證受信任,或者是使用者接受了不受信的認證,瀏覽器會產生一串隨機數的密碼,並用認證中提供的公開金鑰加密。
c) 使用約定好的HASH計算握手訊息,並使用產生的隨機數對訊息進行加密,最後將之前產生的所有資訊發送給網站。
4.網站接收瀏覽器發來的資料之後要做以下的操作:
a) 使用自己的私密金鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,並驗證HASH是否與瀏覽器發來的一致。
b) 使用密碼加密一段握手訊息,發送給瀏覽器。
5.瀏覽器解密並計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,
其實跟數位簽章一個道理,老闆有私密金鑰,員工有公開金鑰就可以驗證這個簽名是不是老闆簽的,只要員工肯定這個公開金鑰是一個可信機構給的(CA),如果是路邊給的當然就不相信了,如果是公司給的那也就是自己相信自己了。
12306的https
在新版訂票頁面中,中國鐵路客戶服務中心使用了HTTPS以加密資料,但是中國鐵路客戶服務中心並未採用得到廣泛認可的數位憑證認證機構的認證,而是採用了由其自己簽名的認證,認證機構的名稱為“Sinorail Certification Authority”(SRCA)頒發的認證。
當瀏覽器檢測到其根憑證庫當中沒有“SRCA”這個認證時,就出於安全性的因素阻止使用者訪問網站。為此,12306網站要求使用者手動安裝根憑證以便瀏覽器允許存取。[22]此方法並非對所有瀏覽器有效,在使用某些瀏覽器時使用者需要單獨進行設定。
另外,每個SSL數位憑證都有一個密鑰。一般密鑰一旦失竊,正規認證機構及系統廠商就會宣布此認證無效,[23]對於較小的認證機構,一般為認證設立一個憑證撤銷清單(CRL)[24],當密鑰失竊時,認證會自動被列為失效。SRCA的認證沒有CRL,系統廠商也不會專門為此發布一個更新。[25]因此駭客可能會利用這個密鑰以SRCA的身份發放認證。一旦駭客把這個憑證發行給了一些惡意網站,安裝了SRCA認證的瀏覽器將允許存取這些網站,無法抵禦由此引發的惡意攻擊。為此有人在網路上提出使用者在購票之後立刻將SRCA的認證設定為不受信任或者只是單獨將購票頁面加入瀏覽器信任清單的建議。
當使用者開始進行支付的時候(訪問pay.12306.cn的時候),中國鐵路客戶服務中心就會向使用者出示一份Verisign簽發的有效認證,但是只能保證使用者在支付時的安全,不能保證駭客利用SRCA密鑰再次簽發假認證製造惡意攻擊。
作為開發人員怎麼去用https
以湯姆貓為例
- 自己產生數位憑證
- 匯入由憑證授權單位產生的認證(這個要把私密金鑰傳給憑證授權單位?)
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
什麼是https,和ssl什麼關係,為什麼用https