SSL加密保障網路資料傳輸過程的安全

現在的網站都必須要HTTPS,SSL是什麼?各種類型的SSL證書要怎麼選擇適合我用的?

    雖然Google2014年就將https列為SEO排序指標,但從2016年Chrome將部份沒有SSL的網站標示為不安全之後,SSL才成為主流的話題,SSL是加密瀏覽,可以保護我們瀏覽安全,有各種不同等級的SSL證書,表現的方式也不同,不同的網站,該如何選擇適合的SSL證書?取得使用者的信任。

 

章節目錄:

 

SSL是什麼

    簡單來說,https代表我們正在使用安全的加密方式瀏覽、使用網路;http或者non-SSL環境代表我們瀏覽網路的環境是透明的,任何人都可以在網路的任意節點讀取、看到我們瀏覽、傳輸的資料,甚至可以竄改我們看到的網頁。

    SSL、TLS是一種加密技術,會將我們與網路伺服器之間的傳輸的資料加密編碼,即使中間被人側錄資料,看到的也只是一堆亂碼,也因為傳輸過程有加密,透過SSL瀏覽的資訊,會是網站伺服器送出來的內容,不會被任意竄改、插入資料。

    SSL是加密技術,那為何我們需要申請、甚至購買SSL憑證?加密過程需要一個憑證,確保這個加密資訊真的是由這個伺服器送出來,也藉由這個憑證驗證、管理加、解密的過程;而這個憑證就會透過具有公信力的第三方機構認證憑證的正確、真實、可靠度。所以我們需要向第三方單位申請、取得SSL憑證。

Wiki-TLS:傳輸層安全協議(英語:Transport Layer Security,縮寫:TLS),及其前身安全通訊協定(Secure Sockets Layer,縮寫:SSL)是一種安全協定,目的是為網際網路通訊,提供安全及資料完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景領航員時,推出HTTPS協定,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公布第一版TLS標準檔案。隨後又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器、電子郵件、即時通訊、VoIP、網路傳真等應用程式中,廣泛支援這個協定。主要的網站,如Google、Facebook等也以這個協定來建立安全連線,傳送資料。目前已成為網際網路上保密通訊的工業標準。

 

SSL瀏覽、溝通的過程:

以下簡要介紹SSL協定的工作方式。用戶端要收發幾個握手訊號:

  • 傳送一個「ClientHello」訊息,內容包括:支援的協定版本,比如TLS1.0版,一個用戶端生成的亂數(稍後用於生成「對談金鑰」),支援的加密演算法(如RSA公鑰加密)和支援的壓縮演算法。
  • 然後收到一個「ServerHello」訊息,內容包括:確認使用的加密通訊協定版本,比如TLS 1.0版本(如果瀏覽器與伺服器支援的版本不一致,伺服器關閉加密通訊),一個伺服器生成的亂數(稍後用於生成「對話金鑰」),確認使用的加密方法(如RSA公鑰加密),伺服器憑證。
  • 當雙方知道了連線參數,用戶端與伺服器交換憑證(依靠被選擇的公鑰系統)。這些憑證通常基於X.509,不過已有草案支援以OpenPGP為基礎的憑證。
  • 伺服器請求用戶端公鑰。用戶端有憑證即雙向身分認證,沒憑證時隨機生成公鑰。
  • 用戶端與伺服器通過公鑰保密協商共同的主私鑰(雙方隨機協商),這通過精心謹慎設計的偽亂數功能實現。結果可能使用Diffie-Hellman交換,或簡化的公鑰加密,雙方各自用私鑰解密。所有其他關鍵資料的加密均使用這個「主金鑰」。資料傳輸中記錄層(Record layer)用於封裝更高層的HTTP等協定。記錄層資料可以被隨意壓縮、加密,與訊息驗證碼壓縮在一起。每個記錄層包都有一個Content-Type段用以記錄更上層用的協定。

 

SSL如何保護我們的網路環境?

    SSL連線可以讓我們與伺服器之間的連線處於加密狀態,連線過程的資料都會受到保護,使用SSL連線可以防止下面三種情況發生:

 

防止使用者隱私資料被盜取

    最近的才吵很大的新聞,台北市委託開發的pay,taipei 支付APP資料傳輸過程沒有使用SSL加密,都是明碼傳輸,之所以這個新聞會被如此重視,是因為支付APP傳輸的資料都是非常機密、隱私的,如使用者的身份證號碼、信用卡資料,以及各個網站的登入帳號、密碼等;如果傳輸過程沒有透過SSL加密,駭客或者其他人可以透過各種方式取得傳輸數據,就可以得到這些機密資料。後果可能導致使用者的各個帳號被入侵,甚至信用卡被盜刷等問題。

 

保護使用者瀏覽資料不被監聽側錄

    十多年前有個客戶委託我在他們公司內部的網路安裝監聽側錄器,紀錄公司內部人員上網的狀況,透過這台機器可以看到每一台電腦電腦的網路使用狀況,如Mail收發、網頁瀏覽、甚至是各個網站、郵件系統的登入帳號與密碼。

    如果傳輸過程沒有SSL保護,這些狀況很可能會發生,想想如果我們上網的過程都可以被人監聽、測錄到,就像小時候和別人煲電話粥的時候,媽媽在隔壁房間拿著電話分機全程監聽… 或者隔壁大叔(大媽)突然問你昨晚跟人聊天的內容,這會有多恐怖!!!

 

確保使用者看到的資料沒有被竄改

    以前撥接時候,有些業者會提供免費網路給人使用,這時候會發現瀏覽網頁時上面、或者下面會多出一條廣告,別人上同一個網站不會有這種狀況。

    曾經也有客戶買過一台網路服務設備,在員工上網的時候網頁畫面上面會出現一個員供網路使用守則,警告上班時間不能上網。

    傳統沒有加密的HTTP瀏覽有可能會出現這種狀況,我們所看到的內容,是經過修改、變造過得…

 

SSL有哪些種類?

  SSL依據驗證等級分為EV、OV、DV三種等級,不同等級驗證的項目不同,通常一個SSL證書給一個網站使用,但是也有部份CA單位簽發子網域通用、甚至跨不同網域的SSL證書,可以同時給多個網站使用。

 

網域驗證DV SSL

    DV SSL是最基本的SSL憑證,簽發機構會簽發專屬此網域的SSL,這個SSL不會驗證任何項目,通常申請之後就會立即簽發,只要取得並安裝在相對應的網域就可以使用。

    這個等級的SSL只能當作加密傳輸工具使用,並沒有任何其他的延伸附加保障。

www.kingman.idv.tw 的DV SSL證書狀態

夢龍筆記網站使用cPanel簽發的單一網域DV SSL證書

 

組織驗證OV SSL

    OV SSL除了基本的SSL證書以外,證書內會同時列載證書擁有網域的組織單位,因為需要額外驗證組織單位,所以過程會比較久,通常申請之後會要求傳送組織單位的憑證供簽發單位人工審核、並留底備存。

    組織包含但不限於公司行號、NGO、社團法人、財團法人、教育機構、學校、非營利單位、社福單位等…

    OV SSL會驗證單位證書(證件,如營利事業登記證等…),確保單位確實存在,證書也是這個單位使用的,所以帶有額外的信任保障。

PChome購物網的 OV SSL證書狀態

PChome購物網使用Symantec公司簽發的OV SSL證書

 

延伸驗證EV SSL

    EV SSL驗證除了會驗證單位證書以外,還會有其他的徵信措施,如單位的地址、電話聯絡審核,執行業務調查等… 確保該單位實際業務與登記業務相符,且能夠正常聯繫到單位;因為有額外的徵信過程,SSL簽發通常要1~3天左右。

    部份EV SSL證書伴隨著簽證單位的損失保障,保證如果因為這個SSL證書而產生任何損失,會由簽證單位依據條款在額度內負責賠償等…

    購物網站最好都需要簽發到EV SSL,EV SSL會進行實際的徵信調查,對使用者最有保障,瀏覽器如果碰到EV證書SSL,除了標註安全以外,還會顯示所謂的綠色網址,並在網址列顯示經過驗證的組織單位,消費者看到綠色網址、並能看到該網站實際所屬的單位,更能有安全信賴感受。

Mozilla網站會顯示綠色網址

Mozilla網站使用DigiCert Inc簽發的EV SSL證書,且網址列除了綠色的安全符號以外,還列出了憑證單位的名稱,國家。

 

多網域SAN/UCC SSL憑證

    有些機構會申請多網域 SAN / UCC 的SSL憑證,這種憑證最多可以同時供應給100個不同的網域使用,有些主機一個IP同時提供好幾個網域的網站服務,或者有些單位底下擁有很多網域,為了SSL證書管理、使用方便,會申請這SAN / UCC 多網域SSL憑證。

Gogaddy販售多網域SAN SSL憑證

Godaddy 有販售3個網域的SAN SSL憑證

 

通用/萬用 SSL憑證 (子網域通用憑證)

    大多數的公司不一定擁有多個網域,但是大多數的情況都是一個網域會依據不同的需求拆分出很多子網域,如Email、ftp、或者不同國家地區、語言的網站也會是不同的子網域(網址),如果這些不同的子網域都要個別申請DV、OV憑證,管理上會非常麻煩,所以會有子網域通用憑證,這個憑證可以安裝在不同的伺服器上面,針對同一個網域提供簽證授權。這種服務除了因應中大型企業有很多子網域的需求,可以節省管理成本,如Blogger、wordpress.com等Blog服務也可以應用這種憑證,提供Bloger們使用https連線。

Pchome使用通用子網域憑證

Pchome購物網站使用OV SSL的子網域通用憑證。

 

可以不申請憑證使用SSL嗎?

    SSL最基礎來說其實就是加密傳輸機制,這個過程只要伺服器與使用者兩端設備互相溝通交握即可進行,第三方的憑證機構只是作為憑證的擔保,驗證網域、機構確實存在,並確實是這個網域使用憑證。

    如果沒有申請憑證而開啟SSL傳輸,瀏覽器、Emaiil軟體或其他裝置會詢問是否要接受這個SSL連線,如果是單位、個人私有,且僅供內部使用的服務設備,知根就底的情況下忽略警告可以繼續使用無所謂,但如果是對外服務,當使用者看到這些紅色安全警告,通常會直接離開網站,甭想網站會有使用者瀏覽了。

沒有第三方憑證開啟SSL連線,Chrome會顯示紅色驚嘆號警告:您的連線不是私人連線。

沒有第三方憑證開啟SSL連線,Chrome會顯示紅色驚嘆號警告:您的連線不是私人連線。

 

要如何取得SSL?

    如果是OV、EV等級的SSL,需要洽詢SSL簽證單位,付費申請SSL,常見的簽證單位有Comodo、Kaspersky等… 台灣則有TWCA提供SSL簽證服務。

    如果是一般的個人Blog網站,或者小型、微型企業的官方形象網站,想要避免出現不安全警告、提供使用者安全瀏覽環境,並獲得SEO加分,又無法負擔高額的簽證費用,有幾個辦法可以取得免費的DV SSL憑證:

 

Free SSL憑證:

AWS Certificate Manager

    如果使用AWS的雲端主機服務,可以透過AWS Certificate Manager取得免費的SSL,Amazon申請成為CA機構,讓使用AWS的客戶都可以藉此獲德免費的SSL憑證,並免去安裝、管理的麻煩。

 

cPanel憑證

    如果網站的虛擬主機使用cPanel公司的後台管理系統,在cPanel介面內可以設定、取得cPanel發出的憑證,或者建立虛擬主機的時候就會自動安裝、擁有網域憑證,要使用cPanel憑證請洽租賃虛擬主機的公司,基本上cPanel憑證不需要特別申請、安裝,只要虛擬主機建立好之後就會自動簽發、取得憑證,只需要將網站設定好就可以直接使用https連線。

 

Let's Encrypt

    Let's Encrypt是由Google、Facebook、Cisco、Mozilla等單位贊助成立的CA憑證機構(ISRG),主旨是希望能夠有更安全的網路瀏覽環境,因此為每一個網域提供免費的DV SSL憑證。

    Let's Encrypt的SSL安裝需要透過伺服器去設定、取得憑證,並自動展期、或者更新憑證,這部份比較麻煩,且需要一些技術基礎,如果會使用一般的CRT憑證安裝方式,可以去SSL For Free網站申請並取得SSL憑證安裝資料,SSL For Free透過網頁介面協助我們從Let's Encrypt取得SSL憑證,並導出CRT、KEY、CABUNDLE等SSL憑證安裝資料。唯一麻煩的是Let's Encrypt的憑證效期比較短,需要經常重設憑證。

 

Chrome不承認、並視為不安全的SSL憑證機構

    即使我們取得第三方機構發出的SSL憑證,但仍有可能碰到Chrome、FireFox、Safari等瀏覽器不承認的狀況,如果網站安裝的SSL憑證不被承認,仍然會顯示不安全瀏覽的紅色警告。目前主要不承認SSL憑證的狀況有下面兩家:

Symantec 以及旗下的GeoTrust、Thawte、RapidSSL

    2017年1月19日Google和Mozilla的工程師發現Symantec有127個錯誤發放的SSL證書,最終清查發現至少有Symantec發出至少3萬個錯誤的SSL憑證,但因為Symantec的SSL證書有24%的市占率,且Symantic旗下還買進GeoTrust、Thawte、RapidSSL等老牌的SSL憑證機構,如果一次就禁止所有Symantec的憑證信任,那市場衝擊將非常龐大,因此Google與Symantec協調將於Chrome 59 ~ Chrome 64逐步縮短、取消Symantec的SSL憑證效期,並將於Chrome 70 (預估2018年10月) 完全停止信任所有Symantec以及旗下Geotrust、Thawte、RapidSSL的SSL證書。

 

中國憑證單位WoSign及其附屬的StartCom

    中國的WoSign因為沒有經過驗證濫發憑證,以及其他不安全的操作行為和意圖,在2016年就已經被Mozilla Firefox、Apple Safari視為不信任,而Google Chrome將在9月發布的Chrome 61將不信任所有WoSign、StartCom發出的SSL證書

2016/10/25 Mozilla Firefox公告,自2017/01/24發布的Firefox 51版本開始將取消對 WoSign 與 StartCom 新簽發憑證的信任,並不再接受安永香港 (Ernst & Young Hong Kong) 的稽核報告。

 

為何Google Chrome是取消信任,而不是停止、禁止、取消憑證呢?

    SSL憑證任何人都可以生成、簽發並使用,但是我們自行設定、簽發的憑證是不受信任的(不被承認),所以會被警告為私人連線,所以我們需要取得第三方機構所簽發的憑證,但是並不是任意人都可以成為簽發機構,需要經過申請成為受認可的憑證認證機構 ( Certificate Authority CA ),這個CA所簽發的SSL憑證會被瀏覽器、或者其他公眾公開信任。

    類比來說,就好比我們需要檢驗物品有哪些成份、或者符合哪些標準等,都習慣會找SGS,為何我們會找SGS?因為這是共同承認的檢驗機構,只需要出具SGS的檢驗報告,通常雙方都會承認,如果沒有SGS,所有的產品都需要個別找對方承認的檢驗機構重新檢驗,耗時費力,所以瀏覽器是信任這個CA所發出的SSL憑證。

    而所謂的失去信任,就有如我們以前看到GMP就是安心、優良食品的代表,以往我們認知的GMP會替我們把關我們所吃下去的食品,保護我們的安全、健康。但自從20132014年頂新黑心油,以及2011年查出統一產品含有塑化劑等食安事件之後,社會大眾發現這些爆發食安風波的大型廠商,也是台灣GMP的管理者因此我們不再信任台灣的GMP安全標章。而Symantec、WoSign等公司就是因為他們的憑證簽發出了問題,甚至有惡意行為,導致他們所簽發的憑證不能被信任。

 

SSL是網路瀏覽的安全保障

    我們依賴SSL加密技術保護隱私,讓我們能夠安全的瀏覽、使用網路,為此Google透過搜引擎以及Chrome的市場地位,強制推動SSL普及,希望所有的網站都有https,讓使用者能夠更安全的使用網路,減少因此而發生的損害。

    隨著10月份Chrome 62會將更多性質的http網站標示為不安全,我想逐漸所有沒有SSL的網站都會變成沒有SSL的HTTP連線被標示為不安全