我正在尝试在 nginx 中获取 HTTP 客户端证书,但总是返回空白。
- $ssl_客户端证书
- $ssl_client_指纹
- $ssl_client_raw_cert
- $ssl_客户端序列号
以上内容均返回空白。
server {
listen 8014;
server_name localhost;
ssl on;
ssl_certificate /root/cert/certificates/nginx-selfsigned.crt;
ssl_certificate_key /root/cert/certificates/nginx-selfsigned.key;
location / {
proxy_set_header ssl-hash $ssl_client_fingerprint;
proxy_set_header ssl-cert $ssl_client_cert;
proxy_set_header ssl-raw-cert $ssl_client_raw_cert;
proxy_pass http://127.0.0.1:3128;
}}
我尝试将变量传递给我的 go 应用程序但标题是空白的。
server {
listen 8014;
server_name localhost;
ssl on;
ssl_certificate /root/cert/certificates/nginx-selfsigned.crt;
ssl_certificate_key /root/cert/certificates/nginx-selfsigned.key;
location / {
root /opt/hthash;
index index.html index.htm index.php;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /opt/hthash;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
fastcgi_param SSL_CLIENT_RAW_CERT $ssl_client_raw_cert;
fastcgi_param SSL_CLIENT_FPRINT $ssl_client_fingerprint;
fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
include fastcgi_params;
}}
也尝试使用 fastcgi php 但仍然没有成功。
谁能告诉我如何通过反向代理或任何其他解决方案获取 HTTP 客户端证书?
任何帮助都将不胜感激。
答案1
未指定ssl_verify_client
无论在哪里,您的服务器都不会要求客户端提供证书。这意味着没有证书。
您需要将其设置为on
(需要证书)、optional
(请求证书但不需要)或optional_no_ca
(请求证书但不需要;也未经验证)。