客户端 TLS 握手失败

客户端 TLS 握手失败

一位客户尝试使用客户端证书连接到我的网站。但是,他们收到 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% 正常。

更重要的是,我该如何记录这个错误?

相关内容