我一直在尝试寻找在 RabbitMQ 中配置 CRL 检查的可用选项。而 RabbitMQ 似乎又依赖于 Erlang 的 SSL 库。不幸的是,我对 Erlang 知之甚少,因此很难理解:
- 基于 HTTP 超时的 CRL 方法的确切语法(以及是否从证书的 CRL 信息中自动提取)
- 如果可以使用基于本地文件的 CRL 方法
crl_cache 配置选项的示例很难找到。有人对此有进一步的信息吗?
答案1
从配置示例开始RabbitMQ TLS 支持页面,添加crl_check
和crl_cache
选项,如下所示:
[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/path/to/testca/cacert.pem"},
{certfile,"/path/to/server/cert.pem"},
{keyfile,"/path/to/server/key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,false}]},
{crl_check, true},
{crl_cache, {ssl_crl_cache, {internal, [{http, 5000}]}}}
]}
].
设置crl_check
为true
意味着将检查整个证书链的 CRL,如果缺少任何 CRL,验证将失败。您可以将其设置为peer
或best_effort
;请参阅Erlangssl
模块文档了解详情。
在上面的示例中,我激活了通过 HTTP 下载 CRL,超时时间为 5 秒(5000 毫秒)。URL 取自cRLDistributionPoints
证书中的扩展。
目前还没有现成的基于本地文件的 CRL 方法,但我已经提交了拉取请求它允许您以与 Apache 相同的方式从本地目录获取 CRL。