ocsp-stapling

描述

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

启用插件

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

  1. plugins:
  2. - ...
  3. - ocsp-stapling

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

ocsp-stapling - 图1note

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

  1. admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')
  1. 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 资源:

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

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

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

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

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

删除插件

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

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

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

  1. plugins:
  2. - ...
  3. # - ocsp-stapling

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

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