此文章翻译自haproxy官方文档:https://www.haproxy.com/blog/ssl-client-certificate-management-at-application-level/
1、强制client提供证书
在下面的配置中,仅具有客户端证书的用户被允许在应用程序上建立连接。这可以通过关键字"verify required"来实现。
frontend ft_ssltests
mode http
bind 192.168.10.1:443 ssl crt ./server.pem ca-file ./ca.crt verify required
default_backend bk_ssltests
backend ssltests
mode http
server s1 192.168.10.101:80 check
server s2 192.168.10.102:80 check
如果客户端不提供任何证书,则HAProxy将在SSL握手期间关闭连接,测试如下:
带证书
$ openssl s_client -connect 192.168.10.1:443 -cert ./client1.crt -key ./client1.key
不带证书
$ openssl s_client -connect 192.168.10.1:443
[...]ssl handshake failure[...]