You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node导出RSA-PSS公钥SPKI DER后WebCrypto导入报错问题

Node.js导出RSA-PSS公钥到WebCrypto导入时触发"Invalid key type"错误

问题描述

在模拟浏览器环境测试时,从Node.js导出RSA-PSS公钥的SPKI DER格式数据后,使用webcrypto.subtle.importKey方法导入时触发DOMException错误,提示Invalid key type。相同流程对RSA(RSASSA-PKCS1-v1_5)和ECDSA密钥对均能正常运行,仅RSA-PSS出现该问题。

Node端密钥生成代码

generateKeyPair('rsa-pss' as any, {
    modulusLength: algo.modulusLength.bits,
    publicExponent: RSADefaultPublicExponentAsNumber,
    hashAlgorithm: algo.hash || DigestAlgorithm.SHA512,
    saltLength: algo.saltLength.bytes
}, processGeneratedKeys);

注:省略了publicKeyEncoding和privateKeyEncoding参数,密钥用于内存测试,直接使用KeyObject实例。代码中的as any用于消除TypeScript类型报错(RSAPSSKeyPairKeyObjectOptions的saltLength被错误声明为string),此类型问题不影响当前密钥导入异常。

Node端公钥导出代码

data = this.#impl.export({
    type: "spki",
    format: 'der'
});

WebCrypto导入代码

return await this.crypto.subtle.importKey('spki', memory, {
    name: 'RSA-PSS',
    hash: algo.hash,
}, !!extractable, ["verify"]);

补充信息

  • 相同流程下,RSA密钥对(生成时指定rsa,导入时使用RSASSA-PKCS1-v1_5)在Node与浏览器双向均可正常工作
  • ECDSA密钥对也能正常完成导出/导入流程
  • 仅RSA-PSS密钥对出现导入错误

内容的提问来源于stack exchange,提问作者Kote Isaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:24:35