需要来自所有远程(非本地)客户端的SSL客户端证书?

我有一个nginx服务器,我想添加客户端SSL证书authentication。 我使用一个系统(GitLab),需要在内部调用自己的提交钩子等。 有没有一种方法来为所有远程 (而不是本地)客户端设置SSL与客户端SSL?

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

在不了解GitLab的情况下,使用虚拟主机似乎很容易。 创build两个虚拟主机,一个用于客户端访问的TLS客户端身份validation,另一个用于从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; } 

把两个虚拟主机应该共享的configuration放在shared.conf以避免重复。