跳轉至內容

LPI Linux 認證/維護 Web 伺服器

來自華夏公益教科書,開放的書籍,用於開放的世界

208.2 維護 Web 伺服器

[編輯 | 編輯原始碼]

詳細目標 (208.2)

[編輯 | 編輯原始碼]

(LPIC-2 版本 4.5)


權重 3


描述: 候選人應該能夠配置 Web 伺服器以提供 HTTPS。


關鍵知識領域

  • SSL 配置檔案、工具和實用程式。
  • 為商業 CA 生成伺服器私鑰和 CSR。
  • 生成自簽名證書。
  • 安裝金鑰和證書,包括中間 CA。
  • 使用 SNI 配置虛擬主機。
  • 瞭解虛擬主機和 SSL 使用方面的挑戰。
  • SSL 使用中的安全問題,停用不安全的協議和密碼。


術語和實用程式

  • Apache2 配置檔案
  • /etc/ssl/, /etc/pki/
  • openssl, CA.pl
  • SSLEngine, SSLCertificateKeyFile, SSLCertificateFile
  • SSLCACertificateFile, SSLCACertificatePath
  • SSLProtocol, SSLCipherSuite, ServerTokens, ServerSignature, TraceEnable

Apache 是一個令人印象深刻且功能強大的應用程式。它不僅能夠提供簡單的(靜態)HTTP 頁面,這是一個(本質上)微不足道的任務。Apache 可以透過使用“虛擬主機”在單個物理機器上一個 IP 地址上託管多個網站(http://www.example.comhttp://www.beispiel.de)使用一個 Apache 程序。Apache 也可以使用多個 IP 地址在同一臺物理機器上儲存不同的網站,這(不一定)需要不同的網路卡。這也由“虛擬主機”實現。

此外,Apache 可以使用非常複雜的方法來重定向查詢。

對我來說,最重要的是使用 SSL(作為 OpenSSL)。SSL 可以為很多人做很多事情:它可以保護(加密)在 Web 客戶端和 Web 伺服器之間來回傳遞的內容。它還可以確保雙方通訊的身份,即伺服器客戶端。

虛擬主機

[編輯 | 編輯原始碼]

VirtualHost 部分包含僅適用於特定主機名或 IP 地址的指令。參見 [1][2]

基於 IP 的虛擬主機

[編輯 | 編輯原始碼]

基於名稱的虛擬主機

[編輯 | 編輯原始碼]

OpenSSL(link) 是一套實現和處理符合傳輸層安全 (TLS) ??? 協議(link) 的證書(link) 的工具。

什麼是證書?

[編輯 | 編輯原始碼]

安全套接層 (SSL)(link) 或傳輸層安全 (TLS)(link)(3 版之後的 SSL 版本現在稱為 TLS)使用公鑰加密(link) 來保護在不安全且無法保護的網際網路上的交易。與我所知的其他所有公鑰加密方案一樣,TLS 使用一個秘密的私鑰和一個公開共享的公鑰,稱為證書。TLS 證書的特殊之處在於證書頒發機構 (CA)(link)。要使 TLS 證書被識別為有效,它必須由“證書頒發機構”進行(加密)簽名。

回顧公鑰加密

[編輯 | 編輯原始碼]

簡而言之,公鑰加密的工作原理如下:有兩個金鑰,一個是所有人都可以使用的公鑰,另一個是隻有我才能看到的私鑰。私鑰通常也受一個非常強大的密碼保護。

兩個金鑰都可以用於加密只有另一個金鑰才能解密的資料。原則上,公鑰和私鑰之間沒有區別!

另一方面,用私鑰加密資料似乎毫無意義,因為網際網路上的每個人已經或可以獲取您的公鑰並解密資料。但是,如果您使用私鑰加密資料,則可以證明您擁有私鑰。這樣您就可以(加密地)簽署資料。要簽署資料,我們通常不會加密整個資料,而是一個(加密)雜湊(link),因此我們可以證明資料的真實性,前提是我們非常小心地保管我們的私鑰。密碼只是一個額外的安全措施,以防私鑰洩露到公共區域或丟失。

CA 究竟做了什麼?

[編輯 | 編輯原始碼]

證書頒發機構使用其私鑰來簽署我們的公鑰。然後它們被稱為證書。就是這樣!幾乎。我們傳送一個“證書籤名請求”(稍後會詳細介紹),其中包含您的身份宣告以及不同數量的資金,CA 會嘗試(取決於我們支付的金額)驗證您的身份,如果成功,它將簽署您的請求,最後將簽署的證書發回給我們。但請記住,香港郵政(TM)(或任何其他 CA)能做的只是驗證巴西身份。但現在問題是如何獲取 CA 的證書……而訣竅就在這裡:我們已經有了!大多數可以使用 TLS 證書的軟體都包含一個受信任(這是一個神奇的詞)CA 列表。任何由此類受信任的 CA(例如,由 StartSSL)簽署的並使用證書安裝在我們機器上的新證書(例如,shop.example.com)也被視為受信任的。未簽署的證書或由未知 CA 簽署的證書將被視為“不受信任”,我們將會收到一個可怕的警告。

證書究竟是如何工作的?

[編輯 | 編輯原始碼]

只要我們足夠努力,幾乎可以在網際網路上使用 TLS 證書來保護任何不安全的服務。

  • 網頁瀏覽(HTTPS 而不是 HTTP)
  • 傳送郵件(SMTPS 而不是 SMTP)
  • 接收郵件(IMAPS 而不是 IMAP/POP3S 而不是 POP3)
  • 聊天(使用 TLS 的 IRC)
  • VPN(OpenVPN)

它是如何工作的(針對網頁瀏覽)?簡化版

  1. 客戶端連線到伺服器
  2. 伺服器傳送證書
  3. 客戶端檢查證書的某些屬性
    1. 證書繫結到我們連線到的伺服器的完全合格主機名 (FQHN)。網頁瀏覽器會檢查伺服器的 FQHN 與證書是否匹配,如果不匹配,則會生成錯誤。
    2. 證書需要由可信的 CA 簽署,否則網頁瀏覽器會生成錯誤。
    3. 證書的有效期有限,具體取決於我們支付的費用。網頁瀏覽器會檢查證書是否仍然“有效”,如果不是,則會生成錯誤。
    4. 我們的計算機上有一個無效證書列表。這些證書因各種原因被吊銷:被盜用、存在錯誤、被盜等。如果伺服器證書在該列表中,客戶端軟體會生成錯誤。
  4. 如果證書被認為有效(或如果接受無效證書,即使它無效),客戶端會使用證書對隨機值進行加密,並將其傳送到伺服器。
  5. 只有客戶端(因為它生成了該隨機值)和伺服器(因為它可以解密該隨機值)知道由客戶端生成的隨機值。
  6. 隨機值會在兩端生成一個對稱金鑰,並且任何進一步的雙向通訊都將使用此生成的金鑰進行加密。(使用對稱金鑰是因為 CPU 更容易處理加密和解密。)

如何查詢和使用證書

[編輯 | 編輯原始碼]

CA 根證書儲存在我們的計算機上的許多不同位置。通常,每個使用 TLS 的軟體都會自帶一組可信 CA 列表。

  • openssl: /etc/ssl/certs
  • firefox
  • thunderbird
  • claws-mail: ~/.claws-mail/certs/

另一方面,openssl 可以作為經典“明文”協議(比如所有網際網路協議,例如 POP3)的 TLS 客戶端。


如何獲取證書

[編輯 | 編輯原始碼]

簡單方法:從 CA 購買

[編輯 | 編輯原始碼]

快速方法:自己做 CA

[編輯 | 編輯原始碼]

難方法:自己做 CA

[編輯 | 編輯原始碼]

SSL 證書

[編輯 | 編輯原始碼]


華夏公益教科書