雜亂大全07-資安與加密的那些事(5):結合對稱加密與非對稱加密(SSL/TLS)

  • 主題:雜亂大全07-資安與加密的那些事(5):結合對稱加密與非對稱加密(SSL/TLS)

  • 前言:接續前幾篇,本篇簡介SSL的特性

  • 叮嚀: $ 代表對CMD或terminal(終端機)下指令

tags: encrypt,RSA

本篇重點:

  1. 簡介SSL/TLS
  2. 實作經驗

SSL/TLS

  • SSL/TLS簡介:
    https://en.wikipedia.org/wiki/Transport_Layer_Security
    傳輸層安全性協定(Transport Layer Security/TLS)及其前身安全通訊協定(Secure Sockets Layer/SSL)是一種安全協定,目的是為網際網路通訊提供安全及資料完整性保障。

  • 目前也是網站之間主要的交握加密方式

  • Google提供的TLS加密已切換至少2048位元

  • SSL/TLS協定的狀態

    • SSL2.0已棄用
    • SSL3.0已棄用
    • TLS1.0-1999年制定
    • TLS1.1-2006年制定
    • TLS1.2-2008年制定
    • TLS1.3-2018年制定

補充:
TLS1.2 vs 1.3
現行較快速的1.3版本交握的示意圖:
image


交握過程

通過交握,客戶端和伺服器協商各種參數用於建立安全連接:

  • 當客戶端連接到支援TLS協定的伺服器要求建立安全連接並列出了受支援的密碼套件(包括加密演算法、雜湊演算法等),交握開始。

  • 伺服器從該列表中決定密碼套件,並通知客戶端。

  • 伺服器發回其數位憑證,此憑證通常包含伺服器的名稱、受信任的憑證頒發機構(CA)和伺服器的公鑰。

  • 客戶端確認其頒發的憑證的有效性。
    為了生成對談金鑰用於安全連接,客戶端使用伺服器的公鑰加密隨機生成的金鑰,並將其傳送到伺服器,只有伺服器才能使用自己的私鑰解密。

  • 利用亂數,雙方生成用於加密和解密的對稱金鑰。這就是TLS協定的交握,交握完畢後的連接是安全的,直到連接(被)關閉。如果上述任何一個步驟失敗,TLS交握過程就會失敗,並且斷開所有的連接。

補充:簡單來說,就是一開始先用「非對稱金鑰加密」方式傳遞「對稱金鑰」,然後再改成較快速的對稱金鑰加密來溝通。

應用於自架網站設定SSL加密

  • 推薦購買的SSL憑證網站(比較便宜):
    https://www.ssls.com/

  • 購買過程,利用OpenSSL 產生 CSR

    1
    openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.cs
  • 填寫CSR 下載獲得的SSL CA
    更換並啟動
    (設定強制443 port)

  • 設定與安裝請參考以下兩位,寫得很完整了:

https://blog.hahasmile.com/%E5%9C%A8apache%E4%B8%8A%E8%A8%AD%E5%AE%9A%E5%AE%89%E8%A3%9Dssl%E6%86%91%E8%AD%89/

https://haway.30cm.gg/ssl-key-csr-crt-pem/

  • 搞笑的地方
    當你全部完成設定之後
    SSL證書供應商將會給你CA、CRT檔
    但是他並不是讓你下載
    因為怕被攻擊
    所以他是用G-mail 傳遞給你
    畢竟Google 的G-mail 不會不安全~對吧XD

小結語:

架設網站必定面對SSL/TLS,非常建議學習


後續:

接下來會討論PHP的幾項基礎設定並探討一些新型態的攻擊與漏洞


參考連結


<追隨前輩們的腳步,不停往前。>