Apache HTTP Server 2.4版本
說明 | 會話加密支援 |
---|---|
狀態 | 實驗 |
模組識別代號 | session_crypto_module |
原始檔 | mod_session_crypto.c |
相容性 | 適用於 Apache 2.3 及後續版本 |
會話模組使用 HTTP cookie,因此可能遭到跨網站指令碼攻擊,或向用戶公開潛在的私人資訊。在你的伺服器上啟用會話功能之前,請確認已考慮相關風險。
的此子模組提供在寫入至本機資料庫或透過 HTTP cookie 寫入至遠端瀏覽器之前,對使用者會話進行加密的支援。mod_session
對於會話內容應對使用者保密的使用者會話,或需要防範跨網站指令碼攻擊影響者,這可能有助於提供隱私權。
有關會話介面的更多詳細資訊,請參閱 mod_session
模組的說明文件。
如要建立一個簡單的加密會話並將其儲存在稱為 session 的 cookie 中,請按下列方式設定會話
Session On SessionCookieName session path=/ SessionCryptoPassphrase secret
會話將使用提供的金鑰進行加密。不同的伺服器可以透過確保在每個伺服器上使用相同的加密金鑰來設定為共用會話。
如果加密金鑰已變更,則會話將自動失效。
有關如何使用會話儲存使用者名稱和密碼詳細資料的文件,請參閱 mod_auth_form
模組。
說明 | 用於加密會話的加密演算法 |
---|---|
語法 | SessionCryptoCipher 名稱 |
預設值 | SessionCryptoCipher aes256 |
內容 | 伺服器設定、虛擬主機、目錄、.htaccess |
狀態 | 實驗 |
模組 | mod_session_crypto |
相容性 | 在 Apache 2.3.0 和之後版本中提供 |
在加密過程中使用 SessionCryptoCipher
指令允許使用密碼。如果未指定,密碼預設為 aes256
。
可能的數值取決於所使用的加密驅動程式,可以為下列其中一個:
說明 | 用於加密工作階段的加密驅動程式 |
---|---|
語法 | SessionCryptoDriver 名稱 [param[=value]] |
預設值 | none |
內容 | 伺服器設定 |
狀態 | 實驗 |
模組 | mod_session_crypto |
相容性 | 在 Apache 2.3.0 和之後版本中提供 |
SessionCryptoDriver
指令指定用於加密的加密驅動程式名稱。如果未指定,驅動程式預設為編譯在 APR-util 中的建議驅動程式。
NSS 加密驅動程式需要一些設定參數,且在驅動程式名稱後面以可選值參數指定。
SessionCryptoDriver nss
SessionCryptoDriver nss dir=certs
SessionCryptoDriver nss dir=certs key3=key3.db cert7=cert7.db secmod=secmod
SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod
NSS 加密驅動程式可能已由伺服器其他部分設定,例如 `mod_nss` 或 mod_ldap
。如果發現已設定,將會記錄警告,且現有設定將會生效。若要避免此警告,請按照下列範例使用 noinit 參數。
SessionCryptoDriver nss noinit
為避免混淆,請確定需要 NSS 的所有模組都使用相同的參數設定。
openssl 加密驅動程式支援一個可選參數,用於指定要使用在加密中的引擎。
SessionCryptoDriver openssl engine=name
說明 | 用於加密工作階段的金鑰 |
---|---|
語法 | SessionCryptoPassphrase 機密 [ 機密 ... ] |
預設值 | none |
內容 | 伺服器設定、虛擬主機、目錄、.htaccess |
狀態 | 實驗 |
模組 | mod_session_crypto |
相容性 | 在 Apache 2.3.0 和之後版本中提供 |
SessionCryptoPassphrase
指令指定要使用的金鑰,以在寫入工作階段或在讀取工作階段後解密工作階段內容時啟用內容的對稱式加密。
金鑰長且包含真正隨機字元時安全性較高。變更伺服器上的金鑰會使所有現有工作階段失效。
可以指定多個金鑰以支援金鑰輪替。列出的第一個金鑰將用於加密,而列出的所有金鑰都將嘗試用於解密。要在一段時間內跨多個伺服器輪替金鑰,請在清單結尾新增一個新的機密,且在所有伺服器上完全推行後,從清單開頭移除第一個金鑰。
從版本 2.4.7 起,如果值開頭為 exec:,將執行產生的命令,並使用程式回傳到標準輸出的第一行作為金鑰。
#key used as-is SessionCryptoPassphrase secret #Run /path/to/program to get key SessionCryptoPassphrase exec:/path/to/program #Run /path/to/otherProgram and provide arguments SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
說明 | 包含用於加密工作階段的金鑰的文件 |
---|---|
語法 | SessionCryptoPassphraseFile 檔名 |
預設值 | none |
內容 | 伺服器設定、虛擬主機、目錄 |
狀態 | 實驗 |
模組 | mod_session_crypto |
相容性 | 在 Apache 2.3.0 和之後版本中提供 |
SessionCryptoPassphraseFile
指令指定包含要使用於加密或解密工作階段的金鑰的設定檔名稱,每一行指定一個金鑰。伺服器啟動時會讀取該檔案,且 httpd 要選取金鑰的變更,需要進行優雅的重新啟動。
與 SessionCryptoPassphrase
指令不同,金鑰不會公開在 httpd 設定中,且可以透過適當地保護檔案來隱藏金鑰。
可以指定多個金鑰以支援金鑰輪替。列出的第一個金鑰將用於加密,而列出的所有金鑰都將嘗試用於解密。要在一段時間內跨多個伺服器輪替金鑰,請在清單結尾新增一個新的機密,且在所有伺服器上完全推行後,從清單開頭移除第一個金鑰。