使用Nginx与多个客户端使用不同证书的证书/客户端身份验证

问题描述:

我正在研究Nginx背后的一个小型基于Flask的服务,该服务通过HTTP提供一些内容。它将使用双向证书认证 - 我知道如何处理Nginx - 但用户必须登录并加载将用于认证部分的自己的证书。使用Nginx与多个客户端使用不同证书的证书/客户端身份验证

所以情况是:

  • 用户已生成用于客户端身份验证证书的服务器。
  • 他们登录到服务上传该服务器的证书。
  • 从用户服务器提取证书的系统现在可以到达我服务上的端点,该服务提供内容并使用证书进行身份验证。

我在Nginx文档中找不到任何内容,说我可以有一个Nginx看起来匹配传入请求的证书的keystore或目录。我知道我可以在Nginx中配置这个'per-server'。

我现在的想法是,我允许web应用程序触发一个脚本,该脚本读取Nginx conf文件,插入一个新的服务器条目和指定的端口以及上传的证书的路径,并将HUP信号发送给重新加载Nginx。

我想知道社区中的任何人是否已经使用过类似于此的Nginx,或者如果他们有更好的解决方案来处理我提交的奇怪场景。

经过大量的研究和阅读nginx.com上的一些文档之后,我发现我的方式已经复杂化了。

而不是修改我的配置sites-available我应该从/etc/nginx/conf.d/添加和删除配置文件,然后通过调用sudo nginx -s reload告诉Nginx重新加载。

我将让应用程序调用脚本来运行所需的命令,并将该脚本添加到www-data用户的sudoers文件中。