secure_link_hmac_message
`secure_link_hmac_message` 指令定义将使用 HMAC 哈希的消息,用于安全链接验证。
Alternative NGINX HMAC Secure Link module with support for OpenSSL hashes
·
httpserverlocation
语法secure_link_hmac_message string;
默认值none
上下文http, server, location
参数1
说明
secure_link_hmac_message 指令是 NGINX HMAC Secure Link 模块的一部分,该模块通过创建使用 HMAC 和 OpenSSL 支持的各种哈希算法的安全令牌来增强链接安全性。该指令指定将被哈希的消息,通常由对验证请求或链接真实性至关重要的敏感信息组成。该消息通常结构化包含诸如所请求的 URI、时间戳以及可选的链接过期期等元素。
当生成安全链接时,HMAC 在消息和由 secure_link_hmac_secret 指令提供的密钥上计算。与简单哈希函数相比,这种方法更为安全,因为它引入了用于消息完整性和真实性的加密机制(如 RFC2104 所述)。总结来说,secure_link_hmac_message 设置将进行 HMAC 哈希的消息,使 NGINX 能够验证请求的完整性以防止潜在的篡改。
该指令接受一个参数,该参数必须是定义消息内容的复杂变量,例如 "$uri|$arg_ts|$arg_e",以确保将正确的参数哈希到安全令牌中。其输出与其他指令(如 secure_link_hmac 和 secure_link_hmac_secret)结合使用,以有效地对请求进行认证。
配置示例
location /protected {
secure_link_hmac "$arg_st,$arg_ts,$arg_e";
secure_link_hmac_secret "my_secret_key";
secure_link_hmac_message "$uri|$arg_ts|$arg_e";
secure_link_hmac_algorithm sha256;
if ($secure_link_hmac != "1") {
return 404;
}
# Further handling
}⚠
确保已定义 secure_link_hmac_secret;否则,HMAC 验证将失败。
⚠
消息必须结构正确,包括用于解析的分隔符;否则,验证可能会失败。
⚠
在实现过期机制时,确保 timestamp 格式正确,否则令牌可能无法正确验证。