要求所有远程(非本地)客户端提供 SSL 客户端证书吗?

要求所有远程(非本地)客户端提供 SSL 客户端证书吗?

我有一台 nginx 服务器,我想为其添加客户端 SSL 证书身份验证。我使用的系统 (GitLab) 需要在内部调用自身进行提交钩子等。有没有办法为所有偏僻的(非本地)客户?

我希望 GitLab 可以在没有客户端证书的情况下调用自身,但所有远程客户端都必须使用客户端 SSL 证书进行身份验证。

答案1

即使对 GitLab 一无所知,使用虚拟主机似乎也相当容易做到这一点。创建两个虚拟主机,一个使用 TLS 客户端身份验证用于客户端访问,另一个用于从 GitLab 进行本地访问。例如:

server {
  # Listen on your externally accessible address
  listen        10.0.0.1:443;
  ssl on;
  server_name example.com;

  ssl_certificate      /etc/nginx/certs/server.crt;
  ssl_certificate_key  /etc/nginx/certs/server.key;
  ssl_client_certificate /etc/nginx/certs/ca.crt;
  ssl_verify_client on;

  include shared.conf;
}

server {
  # Listen on localhost or some internal-only address
  listen        127.0.0.1:443;
  ssl on;
  server_name localhost;

  ssl_certificate      /etc/nginx/certs/server.crt;
  ssl_certificate_key  /etc/nginx/certs/server.key;
  ssl_client_certificate /etc/nginx/certs/ca.crt;
  ssl_verify_client optional;

  include shared.conf;
}

将两个虚拟主机应共享的任何配置放入里面shared.conf以避免重复。

相关内容