Ssl

記錄 apache 用於每個 SSL 連接的 ssl 證書,以增強日誌記錄和調試

  • October 26, 2021

我有一個 apache 網路伺服器,帶有來自letsencrypt 的 mod_ssl 和 SSL 證書。certbot報告它們很好並且不會過期。一些不同的(我的許多使用者)報告說他們從伺服器獲得了無效/過期的 SSL 證書(我已經看到wget他們的輸出來證明這一點)。

為了調試這個,我想記錄每個 SSL 連接的大量細節。我想記錄每個 SSL 連接的遠端 IP,以及有關 SSL 連接(例如協議)的詳細資訊,客戶端提供的 SNI(伺服器名稱標識)值,然後使用伺服器上的 SSL 證書/鏈/密鑰. 我想要

使用ErrorLog ssl:traceN(對於各種N)我可以獲得其中的一些細節。但我看不到伺服器為每個連接使用的 SSL 證書。我怎樣才能做到這一點?

mod_ssl導出一堆環境變數(請參閱此處的列表),可用於記錄有關證書的資訊,例如,在LogFormat如下指令中:

LogFormat "cert_CN='%{SSL_SERVER_S_DN_CN}e', cert_expires='%{SSL_SERVER_V_END}e', vhost='%{Host}i', client='%h'" ssl_combined

但是,在開始記錄之前,請務必查看有關使 DST 根 CA X3 證書過期的文章。它是簽署 Let’s Encrypt 的根 CA 的,它已於 9 月到期。但是,幾乎每個系統都接受 Let’s Encrypt 的根 CA 本身作為受信任的 CA。為此,過期不是問題,頒發的證書繼續有效,除了使用openssl版本 < 1.1.0 的舊系統,它不會在找到受信任的 CA 時停止驗證,而是堅持檢查整個鏈(以及失敗)。

如果有問題的系統有舊的openssl,你可以在伺服器端解決問題,openssl應該在客戶端升級。如果這不是一個選項,將過期證書列入黑名單會有所幫助。

引用自:https://serverfault.com/questions/1081716