一位客户尝试使用客户端证书连接到我的网站。但是,他们收到 400 错误。他们在 .crt 文件中向我提供了他们的公共证书(不包括根 CA)。
这是访问日志:
52.215.251.216 - - [07/Sep/2023:09:44:02 +0200] "POST /dome/Bundle?_format=json HTTP/1.1" 400 224 "-" "HAPI-FHIR/6.8.0 (FHIR Client; FHIR 3.0.2/DSTU3; apache)"
我的 Nginx 错误日志文件中没有错误日志。这是我的配置文件:
server {
server_name mywebsite.nl;
root /var/www/website/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/1_nl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/1_nl/certificate.key;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/nginx/ssl/2_nl/certificate.crt;
ssl_verify_client optional;
location /dome/Bundle {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/website/public/index.php;
fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
fastcgi_param SSL_CLIENT_VERIFY $ssl_client_verify;
include fastcgi_params;
}
## OCSP Stapling
resolver 127.0.0.53;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/1_nl/ssl-bundle.crt;
}
server {
listen 80;
server_name www.mywebsite.nl;
return 301 https://mywebsite.nl$request_uri;
}
server {
listen 443 ssl http2;
server_name www.mywebsite.nl;
return 301 https://mywebsite.nl$request_uri;
}
然而,客户告诉我他们收到了这个错误:
termination_state = CD
从今起本网站它说明了 CD 代码的含义,即
CD 客户端在数据传输过程中意外中止。这可能是由于浏览器崩溃、客户端和 haproxy 之间的中间设备主动中断连接、客户端和 haproxy 之间的网络路由问题,或者客户端首先终止服务器和客户端之间的保持活动会话所致。
我不确定这是否意味着这是客户端的问题,因为这是客户端给我的错误。
在 PHP 中我使用此代码if ($_SERVER['SSL_CLIENT_VERIFY'] == 'SUCCESS'){ echo 'handshake successful'; }
来检查握手是否成功。
有人知道为什么连接不工作吗?客户告诉我,他们对所有其他客户都这样做,而且他们那边一切都 100% 正常。
更重要的是,我该如何记录这个错误?