Skip to main content
Version: 3.11

ocsp-stapling

描述#

ocsp-stapling 插件可以动态地设置 Nginx 中 OCSP stapling 的相关行为。

启用插件#

这个插件是默认禁用的,通过修改配置文件 ./conf/config.yaml 来启用它:

plugins:
- ...
- ocsp-stapling

修改配置文件之后,重启 APISIX 或者通过插件热加载接口来使配置生效:

note

您可以这样从 config.yaml 中获取 admin_key 并存入环境变量:

admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')
curl http://127.0.0.1:9180/apisix/admin/plugins/reload -H "X-API-KEY: $admin_key" -X PUT

属性#

插件属性存储在 SSL 资源的 ocsp_stapling 字段中。

名称类型必选项默认值有效值描述
enabledbooleanFalsefalsessl_stapling 指令类似,用于启用或禁用 OCSP stapling 特性
skip_verifybooleanFalsefalsessl_stapling_verify 指令类似,用于启用或禁用对于 OCSP 响应结果的校验
cache_ttlintegerFalse3600>= 60指定 OCSP 响应结果的缓存时间

使用示例#

首先您应该创建一个 SSL 资源,并且证书资源中应该包含颁发者的证书。通常情况下,全链路证书就可以正常工作。

如下示例中,生成相关的 SSL 资源:

curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"cert" : "'"$(cat server.crt)"'",
"key": "'"$(cat server.key)"'",
"snis": ["test.com"],
"ocsp_stapling": {
"enabled": true
}
}'

通过上述命令生成 SSL 资源后,可以通过以下方法测试:

echo -n "Q" | openssl s_client -status -connect localhost:9443 -servername test.com 2>&1 | cat
...
CONNECTED(00000003)
OCSP response:
======================================
OCSP Response Data:
OCSP Response Status: successful (0x0)
...

可以通过以下方法禁用插件:

curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"cert" : "'"$(cat server.crt)"'",
"key": "'"$(cat server.key)"'",
"snis": ["test.com"],
"ocsp_stapling": {
"enabled": false
}
}'

删除插件#

在删除插件之前,需要确保所有的 SSL 资源都已经移除 ocsp_stapling 字段,可以通过以下命令实现对单个 SSL 资源的对应字段移除:

curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H "X-API-KEY: $admin_key" -X PATCH -d '
{
"ocsp_stapling": null
}'

通过修改配置文件 ./conf/config.yaml 来禁用它:

plugins:
- ...
# - ocsp-stapling

修改配置文件之后,重启 APISIX 或者通过插件热加载接口来使配置生效:

curl http://127.0.0.1:9180/apisix/admin/plugins/reload -H "X-API-KEY: $admin_key" -X PUT