<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache 模块 mod_session_crypto

可用语言:  en  |  fr 

描述会话加密支持
状态实验性
模块标识符session_crypto_module
源文件mod_session_crypto.c
兼容性在 Apache 2.3 及更高版本中可用

摘要

警告

会话模块使用 HTTP cookie,因此可能成为跨站点脚本攻击的受害者,或将潜在的私密信息暴露给客户端。在服务器上启用会话功能之前,请确保已考虑相关风险。

mod_session 的子模块提供对在写入本地数据库或通过 HTTP cookie 写入远程浏览器之前加密用户会话的支持。

这有助于为用户会话提供隐私,其中会话内容应对用户保密,或者需要保护以防止跨站点脚本攻击的影响。

有关会话接口的更多详细信息,请参阅 mod_session 模块的文档。

Support Apache!

主题

指令

错误修复清单

另请参阅

top

基本用法

要创建一个简单的加密会话并将其存储在名为 session 的 cookie 中,请按如下方式配置会话

基于浏览器的加密会话

Session On
SessionCookieName session path=/
SessionCryptoPassphrase secret

会话将使用给定的密钥进行加密。通过确保每个服务器上使用相同的加密密钥,可以配置不同的服务器来共享会话。

如果加密密钥更改,会话将自动失效。

有关如何使用会话存储用户名和密码详细信息的文档,请参阅 mod_auth_form 模块。

top

SessionCryptoCipher 指令

描述用于加密会话的加密密码
语法SessionCryptoCipher name
默认值SessionCryptoCipher aes256
上下文服务器配置、虚拟主机、目录、.htaccess
状态实验性
模块mod_session_crypto
兼容性在 Apache 2.3.0 及更高版本中可用

SessionCryptoCipher 指令允许在加密期间使用密码。如果未指定,密码默认为 aes256

可能的值取决于使用的加密驱动程序,可能是以下之一

top

SessionCryptoDriver 指令

描述用于加密会话的加密驱动程序
语法SessionCryptoDriver name [param[=value]]
默认值none
上下文服务器配置
状态实验性
模块mod_session_crypto
兼容性在 Apache 2.3.0 及更高版本中可用

SessionCryptoDriver 指令指定用于加密的加密驱动程序的名称。如果未指定,驱动程序默认为编译到 APR-util 中的推荐驱动程序。

NSS 加密驱动程序需要一些配置参数,这些参数在驱动程序名称之后以可选值的参数形式指定。

没有证书数据库的 NSS

SessionCryptoDriver nss

带有证书数据库的 NSS

SessionCryptoDriver nss dir=certs

带有证书数据库和参数的 NSS

SessionCryptoDriver nss dir=certs key3=key3.db cert7=cert7.db secmod=secmod

带有包含空格的路径的 NSS

SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod

NSS 加密驱动程序可能已由服务器的另一个部分配置,例如来自 mod_nssmod_ldap。如果发现已配置,将记录警告,并且现有配置将生效。为了避免此警告,请使用 noinit 参数,如下所示。

带有证书数据库的 NSS

SessionCryptoDriver nss noinit

为了避免混淆,请确保所有需要 NSS 的模块都使用相同的参数进行配置。

openssl 加密驱动程序支持一个可选参数来指定用于加密的引擎。

带有引擎支持的 OpenSSL

SessionCryptoDriver openssl engine=name
top

SessionCryptoPassphrase 指令

描述用于加密会话的密钥
语法SessionCryptoPassphrase secret [ secret ... ]
默认值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"
top

SessionCryptoPassphraseFile 指令

描述包含用于加密会话的密钥的文件
语法SessionCryptoPassphraseFile filename
默认值none
上下文服务器配置、虚拟主机、目录
状态实验性
模块mod_session_crypto
兼容性在 Apache 2.3.0 及更高版本中可用

SessionCryptoPassphraseFile 指令指定一个配置文件的名称,该配置文件包含用于加密或解密会话的密钥,每行指定一个。该文件在服务器启动时读取,并且 httpd 需要进行优雅重启才能获取密钥的更改。

SessionCryptoPassphrase 指令不同,密钥不会在 httpd 配置中公开,并且可以通过适当保护文件来隐藏。

可以指定多个密钥以支持密钥轮换。列出的第一个密钥将用于加密,而列出的所有密钥都将尝试用于解密。要在一段时间内跨多个服务器轮换密钥,请在列表末尾添加一个新密钥,并在完全推广到所有服务器后,从列表开头删除第一个密钥。

可用语言:  en  |  fr 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果它们已实施或被认为无效/主题无关,可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表