Skip to content
View in the app

A better way to browse. Learn more.

Kaspersky Support Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

加密连接扫描导致 Node.js 应用 HTTPS 请求间歇性失败(证书链被替换为自签根)

操作系统:Microsoft Windows 11 Core x64 Build 26200

杀毒软件版本: 21.24.8.522(b)

在使用deepseek harness时,出现间歇性无法连接,用该软件自行排查后反馈如下:

开启「扫描加密连接」(加密流量扫描)后,本机上所有使用 Node.js 自带 TLS 栈的应用访问 HTTPS 站点会间歇性握手失败,报错 SELF_SIGNED_CERT_IN_CHAIN。失败是随机的:同一进程连续访问同一域名,成功率仅约 30%~40%。

环境

  • 卡巴斯基 21.24(服务名 AVP21.24,显示名「卡巴斯基服务 21.24」)

  • Windows;受影响应用为 Electron / Node.js 应用(实测 Node.js v24.19.0)

复现步骤

powershell

node -e "
const tls=require('node:tls');
for(let i=1;i<=5;i++){setTimeout(()=>{
  const c=tls.connect({host:'api.deepseek.com',port:443,servername:'api.deepseek.com',rejectUnauthorized:false},()=>{
    const cert=c.getPeerCertificate(true);let cur=cert,n=0;
    while(cur&&n<3){console.log('['+n+']',(cur.subject&&cur.subject.CN)||'?','<- issuer:',(cur.issuer&&cur.issuer.CN)||'?');cur=cur.issuerCertificate;n++;}
    c.end();});
  c.on('error',e=>console.log('ERR',e.message));
},i*400);}"

实际结果(连续 5 次连接同一个 IP,两种证书链交替出现)

失败时(约 6~7 成):

代码块

[0] api.deepseek.com  <- issuer: Kaspersky Anti-Virus Personal Root Certificate
[1] Kaspersky Anti-Virus Personal Root Certificate  <- issuer: 同上(自签)

成功时:

代码块

[0] api.deepseek.com  <- issuer: TrustAsia DV TLS RSA CA 2025
[1] TrustAsia DV TLS RSA CA 2025  <- issuer: DigiCert Global Root G2

根因判断

加密流量扫描用 Kaspersky Anti-Virus Personal Root Certificate 现场签发目标域名证书,替换真实证书链。该根证书已正确安装到 Windows 证书存储区(LocalMachine\Root 与 CurrentUser\Root,指纹 579AE3D361F38D41E66340004F07E41AA5EAF9BF,有效期至 2036-04-01)。

但 Node.js 自带 Mozilla CA 列表,默认不读取 Windows 证书存储区,所以对 Node.js 应用而言这是不受信任的自签根,握手必然失败。Windows 原生应用走 Schannel 不受影响,问题只在 Node.js / Electron 类应用中暴露。

影响

  • Electron 类桌面应用网络请求间歇失败,表现为「随机卡顿 / 失败后重试」

  • 请求被静默降级为多次重试,用户侧难以定位

  • 直接调 API 的命令行工具、构建工具、包管理器(npm / pnpm)同样受影响

期望

  1. 为 Node.js 类应用提供处理方式:识别其不读系统证书存储的特性并跳过扫描,或提供「向应用注入信任根」的能力(Node.js 支持 NODE_EXTRA_CA_CERTS 指定额外根证书,可在启动子进程时注入)

  2. 或在产品文档中明确说明加密扫描与 Node.js 应用的兼容性限制及推荐配置

当前绕过方式:在设置中关闭「扫描加密连接」,问题立即消失;重新开启即复现。因果明确,但用户会因此失去该防护功能,故仍希望产品侧解决。

Featured Replies

No posts to show

Please sign in to comment

You will be able to leave a comment after signing in

Sign In Now

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.