lua-resty-ssl-bump
"一个用于为通配符域名动态生成和缓存 SSL 证书的 Lua 模块"
$ opm get iakuf/lua-resty-ssl-bump
lua-resty-ssl-bump
一个用于为通配符域名动态生成和缓存 SSL 证书的 Lua 模块,类似于 Squid 的 SSL Bump 功能。
安装
要安装此模块,您可以使用 OpenResty 包管理器 (opm)
opm get iakuf/lua-resty-ssl-bump
依赖项
此模块需要 lua-cjson
和 lua-resty-openssl
库才能正常工作。 确保这两个库都已安装并在您的 OpenResty 环境中可用。
安装 lua-cjson
您可以使用 OPM 安装 lua-cjson
opm get ledgetech/lua-cjson
安装 lua-resty-openssl
您可以使用 OPM 安装 lua-resty-openssl
opm get fffonion/lua-resty-openssl
使用
生成自己的 CA 证书
要生成自己的 CA 证书,请使用以下命令
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -extensions v3_ca -keyout /path/to/ca_cert.key -out /path/to/ca_cert.crt
将 /path/to/ca_cert.key
和 /path/to/ca_cert.crt
替换为您要保存 CA 密钥和证书的实际路径。
Nginx 配置
将以下配置添加到您的 nginx.conf
文件中
定义共享字典:
http {
lua_shared_dict cert_cache 20m; # Approximately stores 4000 certificate pairs
}
在 worker 中初始化模块:
http {
init_worker_by_lua_block {
local ssl_bump = require("resty.ssl_bump")
local ok, err = ssl_bump.init("/path/to/ca_cert.crt", "/path/to/ca_cert.key", {
C = "CN",
ST = "Beijing",
L = "Beijing",
O = "Geelevel Corp"
})
if not ok then
ngx.log(ngx.ERR, "failed to initialize ssl_bump: ", err)
return
end
}
}
设置 SSL 配置:
http {
server {
listen 443 ssl;
ssl_certificate /path/to/ca_cert.crt; # 占位
ssl_certificate_key /path/to/ca_cert.key; # 占位
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Dynamic generation of certificates
ssl_certificate_by_lua_block {
local ssl_bump = require("resty.ssl_bump")
ssl_bump.run()
}
location / {
proxy_pass http://your_backend;
}
}
}
示例
这是一个包含必要配置的示例 nginx.conf
文件
http {
lua_shared_dict cert_cache 20m; # Approximately stores 4000 certificate pairs
init_worker_by_lua_block {
local ssl_bump = require("resty.ssl_bump")
local ok, err = ssl_bump.init("/path/to/ca_cert.crt", "/path/to/ca_cert.key", {
C = "CN",
ST = "Beijing",
L = "Beijing",
O = "Geelevel Corp"
})
if not ok then
ngx.log(ngx.ERR, "failed to initialize ssl_bump: ", err)
return
end
}
server {
listen 443 ssl;
ssl_certificate /path/to/ca_cert.crt; # 占位
ssl_certificate_key /path/to/ca_cert.key; # 占位
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Dynamic generation of certificates
ssl_certificate_by_lua_block {
local ssl_bump = require("resty.ssl_bump")
ssl_bump.run()
}
location / {
proxy_pass http://your_backend;
}
}
}
导入您的 CA 证书
在 Linux 上
要在 Ubuntu 上导入您的 CA 证书
cp /path/to/ca_cert.crt /usr/local/share/ca-certificates/ca_cert.crt
update-ca-certificates
在 Windows 上
要在 Windows 上导入您的 CA 证书
certmgr.exe /add %cd%\ca_cert.crt /s /r localMachine root
许可证
MIT
作者
"Fu Kai <iakuf@163.com>"
许可证
mit
版本
-
iakuf/lua-resty-ssl-bump 1.0.1"一个用于为通配符域名动态生成和缓存 SSL 证书的 Lua 模块" 2024-07-27 06:46:22
-
"一个用于为通配符域名动态生成和缓存 SSL 证书的 Lua 模块" 2024-07-26 07:18:09