sun*_*985 39 linux https curl certificate request-headers
卷曲命令:
curl -k -vvvv --request POST --header "Content-Type: application/json" --cert client.pem:password --key key.pem "https://test.com:8443/testing"
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用上面指定的Curl命令发送客户端证书.我想知道以下内容:
什么是HTTP请求标头,我应该在服务器端查看从HTTP请求中提取客户端证书.
如果我无法从HTTP请求中提取服务器端的客户端证书,我是否可以在HTTP请求中添加自定义请求标头,并将客户端证书作为该自定义标头的值发送.如果有人能为我提供这种方法的一个例子,那就太好了.
rea*_*lin 102
我就这样做了:
curl -v \
--cacert ./ca.pem \
--key ./admin-key.pem \
--cert ./admin.pem \
https://xxxx/api/v1/
Run Code Online (Sandbox Code Playgroud)
fra*_*ale 29
不在HTTP标头中发送TLS客户端证书.它们由客户端作为TLS 握手的一部分进行传输,服务器通常也会在握手期间检查证书的有效性.
如果接受证书,则可以将大多数Web服务器配置为添加标头以将证书或证书中包含的信息传输到应用程序.环境变量使用Apache和Nginx中的证书信息填充,可以在其他指令中用于设置标头.
作为此方法的示例,以下Nginx配置代码段将验证客户端证书,然后设置SSL_CLIENT_CERT标头以将整个证书传递给应用程序.只有在证书成功验证后才会设置此项,因此应用程序可以解析证书并依赖其承载的信息.
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/chainedcert.pem; # server certificate
ssl_certificate_key /path/to/key; # server key
ssl_client_certificate /path/to/ca.pem; # client CA
ssl_verify_client on;
proxy_set_header SSL_CLIENT_CERT $ssl_client_cert;
location / {
proxy_pass http://localhost:3000;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102216 次 |
| 最近记录: |