如何在邀请页面使用客户端证书

你好,

我们有一个“仅限邀请”的 Discourse 安装。当我们发送邀请时,被邀请者只有在浏览器中存在特定的客户端证书时才能接受邀请。

有任何关于如何实现这一点的线索吗?

此致,
Harmstra

您的 nginx 配置中需要包含类似以下内容:

ssl_client_certificate /path/to/ca.pem;
ssl_verify_client on;

如果该设置仅适用于邀请场景,则需要在包含邀请接受路由的 location 块中配置。

你好 @michaeld

是否也可以使用证书字段并将其保存为用户实例中的用户字段?例如,如果我们想保存过期日期,可以吗?

这似乎过于复杂了。您的使用场景是什么?

我同意确实如此。

使用场景是:这里有一个组织,使用这些客户端证书对公司进行身份验证。我们试图创建一个 Discourse 实例,仅允许这些公司访问。根据 @michaeld 提供的 nginx 片段,这似乎很简单。

该证书中还包含一个公司编号,我们希望获取该编号并在 Discourse 实例中使其可用。这样,他们可以轻松地彼此找到,并且仅凭公司编号即可识别。

希望现在表达清楚了,如果没有,欢迎随时提问。

哇,这听起来比我想象的没那么荒谬!

你能指望这些公司的人使用公司邮箱吗?那会比需要读取证书的插件简单得多。如果公司编号非常重要,你甚至可以反向映射回公司编号。

您可以通过类似以下的行将证书传递给 Discourse:

proxy_set_header X-Cert-DN: $ssl_client_s_dn;

然后使用某种插件从该请求头中读取该值。