SSL 证书管理
SSL 证书管理
SamWaf 的 SSL 证书相关功能集中在此:证书夹(批量管理)、证书自动申请/续期、批量过期检测、CA 服务器配置。
1 证书夹
批量管理证书。

权限
证书夹的新增、编辑、删除属于系统级操作(可通过下方"证书导出"向服务器落盘),仅系统管理员角色可操作;其它管理员角色可查看列表与详情。
1.1 证书自动加载

1.2 证书导出(同步成实体证书文件)
如果服务器上还有 SamWaf 之外的程序(例如 nginx)也要用同一张证书,可以让 SamWaf 在证书更新后,把证书和私钥同步写成实体文件。
这与上面的"证书自动加载"方向相反:
- key文件路径 / crt文件路径:读进来,每天凌晨 3 点从这两个路径读取证书,覆盖本条目。
- 导出crt文件路径 / 导出key文件路径:写出去,本条目的证书一有更新就写到这两个文件里。
配置步骤
- 在"证书夹"列表点击对应条目的"编辑"。
- 拉到弹窗下方的证书导出区域,填写:
- 导出crt文件路径:例如
/etc/nginx/ssl/a.com.crt(Windows 例:D:\certs\a.com.crt) - 导出key文件路径:例如
/etc/nginx/ssl/a.com.key(Windows 例:D:\certs\a.com.key)
- 导出crt文件路径:例如
- 点击"确认"保存。保存成功后会立即导出一次,提示信息里会带上实际写入的文件路径。
注意:证书只能导出到允许的目录内。默认只允许程序目录下的
data/ssl_export/;要导出到 nginx 证书目录等其它位置,需先在conf/config.yml声明(见下方"导出目录白名单")。
什么时候会自动导出
配置好之后,以下三种情况更新证书都会同步落盘:
- 证书自动申请 / 自动续期成功后;
- 在本页编辑并保存证书内容后;
- 每天凌晨 3 点"路径自动加载"读到新证书后。
字段说明
| 字段 | 说明 |
|---|---|
| 导出crt文件路径 | 证书写出的完整路径,必须是绝对路径并精确到文件名。留空表示不导出 |
| 导出key文件路径 | 私钥写出的完整路径,要求同上。两个路径必须同时填写 |
| 上次导出结果 | 只读展示,记录最近一次导出是成功还是失败、失败原因是什么。未配置导出时不显示 |
填写要求
- 必须是绝对路径且精确到文件名,不能只填目录,也不能填相对路径。
- 文件名扩展名有限制:导出证书必须以
.crt或.pem结尾,导出私钥必须以.key或.pem结尾。 - 导出目录必须在允许清单内(安全限制,见下方"导出目录白名单")。目录不存在时会在允许范围内自动创建。
- 两个路径必须同时填写,只填一个会提示错误(外部程序只拿到证书没有私钥也用不了)。
- 不能填成上面的"key文件路径 / crt文件路径"(那是读入方向,写过去会把你自己的源文件覆盖掉)。
- 不能和其它证书夹条目已使用的路径相同,否则两个条目会互相覆盖。
导出目录白名单(安全限制)
出于安全考虑,证书只能导出到允许的目录内,避免误写或被越权写到系统敏感位置:
默认只允许导出到 SamWaf 程序目录下的
data/ssl_export/。要导出到其它目录(例如 nginx 的证书目录
/etc/nginx/ssl),需由运维在conf/config.yml的security.ssl_export_allowed_dirs中逐个声明(多个目录用英文逗号分隔),改完重启 SamWaf 生效:security: ssl_export_allowed_dirs: /etc/nginx/ssl,/etc/haproxy/certs该清单只能改
conf/config.yml,不能通过管理端界面修改。若导出路径不在允许目录内,保存时会提示"导出路径不在允许目录内",按提示把目标目录加进上面的配置即可。
导出失败不会影响证书本身
导出是附加动作。路径填错、不在允许目录、扩展名不符、目录没有写权限、文件被占用等情况,只会在保存时给出提示并记录到"上次导出结果",证书的申请、续期和生效完全不受影响。每次导出(成功或被拒)都会记入 安全审计,可追溯是谁在什么时候导出到哪里。
常见问题
Q:文件没有生成怎么办? 打开该条目的"编辑"弹窗查看"上次导出结果":如果两个路径都是空的,说明还没有开启导出;如果有失败提示,按提示修正路径或目录权限。
Q:提示"导出路径不在允许目录内"怎么办? 证书只能导出到允许目录内。默认只允许程序目录下的 data/ssl_export/;如果你要导出到 nginx 证书目录等其它位置,需在 conf/config.yml 的 security.ssl_export_allowed_dirs 里声明该目录,多个目录用英文逗号分隔,改完重启 SamWaf。另外注意证书文件名要以 .crt/.pem 结尾、私钥以 .key/.pem 结尾。
Q:nginx 怎么用?
ssl_certificate /etc/nginx/ssl/a.com.crt;
ssl_certificate_key /etc/nginx/ssl/a.com.key;续期后执行 nginx -t && nginx -s reload 重新加载即可。证书内容没有变化时 SamWaf 不会重写文件,因此监听文件变化的脚本不会被无谓触发。
2 证书自动申请
自 v1.3.9-beta.7 已支持自动进行证书续期,当证书可用时间小于 30 天时将自动根据上一次申请成功的信息发起证书续期。
2.1 主机增加 80 端口附加内容
当前使用文件验证方式,需要 80 端口可用,让 443 和 80 同时使用。

2.2 发起首次申请
点击"SSL证书自动申请"按钮。

2.3 点击新建

2.4 填写相关申请信息
需要手动填写申请人邮箱,申请域名已经自动填入,当前支持文件验证和 DNS 验证方式签发。当需要补充申请域名时,用英文逗号分隔各个域名,含通配符的域名需要放在最前面。

点击确认后,系统将自动进行证书申请。隔一段时间后点击"查询"按钮,即可在列表看到申请证书成功与否的结果。
文件验证方式与 80 端口
当"申请方式"选择文件验证时,界面会自动检查所选主机的主端口与绑定更多端口是否包含 80 端口;若都没有,会在"申请方式"下方给出红色提示。文件验证(http01)需要 80 端口可访问才能完成校验,请先到"被防护主机"编辑页的"绑定更多端口"里增加 80 端口。
PS:默认天数是 30,可以在系统里面进行配置
sslorder_expire_day。
3 SSL 证书批量过期检测
自 v1.3.9-beta.9 已支持,每天 6 点自动检测一次到期情况。支持自主添加域名和端口,支持一键同步已有防护的 SSL 域名。
3.1 查看到期情况
查看登记域名 SSL 证书到期情况。

3.2 同步已存在的主机信息
点击"同步已存在的主机信息",自动将防护域名里面 HTTPS 的导入到检测里面:如果存在则忽略,不存在则添加。
3.3 手工检测
点击"检测"可以发起手工检测 SSL 到期情况。
4 CA 服务器
CA 服务器信息管理,用于配置证书申请(ACME)时使用的 CA 服务器。在证书自动申请时,可选择此处登记的 CA 服务器作为签发机构。
4.1 新增 CA 服务器
- 点击左上角"新增CA服务器"按钮,打开新增对话框。
- 填写"CA服务器名称"(必填)与"CA服务器地址",可补充"备注"。
- 点击"确认"保存。
4.2 编辑与删除
- 在列表对应行点击"编辑",可修改 CA 服务器名称、地址与备注。
- 点击"删除"并确认后即可移除该条 CA 服务器信息。
4.3 字段说明
| 字段 | 说明 |
|---|---|
| CA服务器名称 | CA 服务器的标识名称,必填,便于在申请证书时识别选择 |
| CA服务器地址 | CA 服务器的 ACME 目录地址(Directory URL),证书申请时向该地址发起 |
| 备注 | 可选的补充说明信息 |
