NGINX 使用客户端证书 (ssl_verify_client)

NGINX using client certificate (ssl_verify_client)

我有一个奇怪的问题,我什至不知道如何表达,但我尽力了

我使用 laravel forge 通过 LetsEncrypt 管理我的 SSL。

它生成文件:

server.crt  
server.key

How to get .pem file from .key and .crt files? 基于 link,我理解 server.crt 与发布者询问的 .pem 相同。

因此,为了生成 ca.pem,我做了以下操作:

cat /etc/ssl/certs/DST_Root_CA_X3.pem server.crt > ca.pem

然后在我的 nginx.conf 中有这些行:

ssl_client_certificate /etc/nginx/ssl/domain/ca.pem;
ssl_verify_client on;  

我的主要目标是将它与 mqtt 一起使用,按照 2 个指南,我达到了这个设置,但是用我的 mqtt 命令发送 ca.pem,我得到:

*77 client sent no required SSL certificate while SSL handshaking, client: 11.112.7.84, server: 11.166.22.84:8883

这行不通。

您需要使用自己的 CA 来颁发客户端证书,您不能使用 LetsEncrypt 的 CA 和服务器证书来 issue/verify 客户端证书(它们应该设置标志以防止这种情况发生)。

ssl_client_certificate 需要指向用于颁发客户端证书的证书链,客户端出示客户端证书以识别其自身。

用于验证代理的证书不需要以任何方式与客户端证书关联。