gpt4 book ai didi

curl - 使用 s_client 而不是 curl 访问带有客户端证书的服务器?

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:25 25 4
gpt4 key购买 nike

我将 nginx 用于我的 Web 服务器,并带有客户端证书身份验证。配置的相关部分是:

ssl_certificate        /usr/local/etc/nginx/certs/ssl.crt;
ssl_certificate_key /usr/local/etc/nginx/certs/ssl.key;
ssl_client_certificate /usr/local/etc/nginx/certs/server_chain.crt;
ssl_verify_client on;
ssl_verify_depth 2;

客户端证书由另一台拥有根 CA 证书的服务器签名。即,我想接受具有如下证书链的客户端:

CA -> intermediate CA -> client

因此文件 server_chain.crt 由:

cat intermediate_ca.crt root_ca.crt > server_chain.crt

现在,我可以通过发出命令成功访问服务器:

openssl s_client -connect localhost:443 -tls1 -cert client.crt \
-key client.key -CApath root_ca.crt -state -debug`

然后输入GET/api

但是如果我尝试使用以下方式访问相同的服务:

curl -v -s -k --key client.key --cert client.crt https://localhost/api

我得到:

<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx/1.6.0</center>
</body>
</html>

我也无法从安装了客户端证书的 Web 浏览器访问 localhost/api 页面。如果我关闭客户端验证,某些东西会起作用。

有什么问题吗?

最佳答案

好的,所以错误与 nginx 完全无关。事实证明,curl 在 OS X 上默认没有运行 ssl 的引擎。因此,curl 从未向服务器发送任何证书。

关于curl - 使用 s_client 而不是 curl 访问带有客户端证书的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com