
某银行网上银行密评摸底网络和通信层面被划了红门户 HTTPS 用的还是 RSA 证书加密套件里没有国密算法证书私钥也托管在普通服务器上。密评意见一句话等保三级、又是金融关键系统HTTPS 必须支持国密 SM2证书链要完整、私钥要进密码设备。先看现场# 现场排查网银 HTTPS 国密支持现状示意# 1) 当前是否支持国密 SM2 套件echo|openssl s_client-connect$API_HOST:443-servernameebank.example.com2/dev/null|grep-ECipher is|Protocol# → 输出 TLS_AES_256_GCM... / TLSv1.3 (RSA) → 无国密套件# → 若输出 TLS_SM2_WITH_SM3_SM4 / 国密套件 → 已支持# 2) 证书是否为 SM2 国密证书echo|openssl s_client-connect$API_HOST:4432/dev/null|openssl x509-noout-text2/dev/null|grep-EPublic Key Algorithm|Signature Algorithm# → 期望 id-ecPublicKey SM2 签名 → 国密证书# → 输出 RSA → 国际证书未做国密改造网上银行是金融行业对客的第一入口也是密评「网络和通信层面」检查最勤的地方。国密 SSL 改造的正确姿势不是简单换个证书而是走通「SM2 证书申请 → CFCA 对接 → 双算法兼容 → 私钥进设备 → 验证」一整条链路。这篇按清单教程式拆每步给可复制的命令和注意点并标明私钥与证书该落在哪套密码产品上——网银 HTTPS 的两对 SM2 私钥托管与证书生命周期由安当 HSM/KSP 承载第 1、6 步展开接法第 1 步生成 SM2 密钥对与证书请求CSR第 2 步向 CFCA 申请国密 SM2 证书第 3 步证书转换与证书链补全第 4 步部署国密 SSL网关/服务器第 5 步双算法兼容国密浏览器与普通浏览器都能用第 6 步私钥托管与密钥生命周期管理第 7 步验证与密评自查清单第 1 步生成 SM2 密钥对与证书请求CSR国密 SM2 证书和 RSA 证书的第一个差别在密钥对SM2 是非对称算法用的是 SM2 椭圆曲线sm2p256v1私钥是 SM2 密钥不能拿 RSA 的 openssl 命令直接生成。标准 OpenSSL 对国密算法支持有限改造环境一般装**国密版 OpenSSLgmssl**或用支持国密的密码 SDK。生成密钥对 CSR# 生成 SM2 私钥不可直接用于导出场景见第 6 步私钥托管gmssl ecparam-genkey-namesm2p256v1-outsm2_ebank.key# 生成证书签名请求 CSRgmssl req-new-keysm2_ebank.key-outebank.csr\-subj/CCN/O某股份制银行/CNebank.example.com\-sm2-sigoptsm2_id_default# 确认 CSR 的算法是 SM2gmssl req-inebank.csr-noout-text|grep-EPublic Key Algorithm|Signature Algorithm# → 期望输出 id-ecPublicKey(SM2) / sm2WithSM3注意点私钥生成命令里如果后面还要把私钥托管进密码设备通常让 HSM 直接在设备内生成密钥对见第 6 步CSR 由设备导出——这样私钥从生下来就不落应用服务器硬盘银行网银是 OV/EV 级别的对外服务CN/组织名要和营业执照、备案信息严格一致CFCA 审核要对公章的生产形态推荐SM2 密钥对直接在安当 HSM 内生成——私钥只以对象句柄存在于硬件CSR 由设备导出服务器上从头到尾没有 .key 明文# 在安当 HSMPKCS#11内生成 SM2 密钥对并导出 CSR示意gmssl req-new-providerpkcs11\-keypkcs11:tokenebank-sm2;objectebank-sign;typeprivate\-subj/CCN/O某股份制银行/CNebank.example.com-outebank.csr-sm2# → HSM 内多出一个 SM2 私钥对象服务器本地无任何 .key 文件关键认知第 1 步的坑集中在「用 RSA 流程生成 SM2」和「私钥落地应用服务器」两件事。正确姿势是**「私钥进设备生成、CSR 出设备」**——如果你准备用 HSM 托管私钥这一步就要接 HSM 了。私钥生成的两条路线改造前先定路线私钥在哪适合场景软件生成服务器本地 .key 文件快速验证、无强合规要求的过渡阶段设备生成HSM 内生成密钥不出设备网银生产环境、密评硬要求推荐生产网银务必走设备生成私钥从「生」就锁在硬件里服务器上没有任何可导出的私钥明文。这里有个容易被忽视的细节——私钥一旦在服务器上用软件生成过就等于「出过设备」即便后面再迁进 HSM密钥的安全等级也降了一档。所以第 1 步就按生产形态来别先软生成图省事、上线前再「补救」。第 2 步向 CFCA 申请国密 SM2 证书CFCA中国金融认证中心是经国家密码管理局批准、由中国人民银行牵头组建的国家级电子认证机构国内最早把国密算法商用落地的 CA 之一签发的 SSL 证书广泛用于银行、证券、保险等强监管行业。网银国密证书走 CFCA对接的是「信任」浏览器/密评认 CFCA 的根你的证书链才被信任。申请流程阶段做什么材料/注意提交申请通过 CFCA 或其代理提交 OV/EV 国密 SSL 证书申请域名、组织信息、CSR身份核验验证域名所有权 企业主体资质银行用对公资质EV 需更严格审核签发交付审核通过后签发证书常以 TXT/邮件形式交付见第 3 步配套审核网银若属强监管范畴注意金融行业对 EV 证书的要求《网上银行系统信息安全技术规范》类要求OV 还是 EV怎么选金融对客网银一般直接上EV 级——审核最严核验企业法人、营业执照、对公资质浏览器地址栏信任标识最强是金融对客场景的通行做法OV 级审核相对轻、周期短适合内部系统或非对客渠道。预算允许的情况下对客网银选 EV用成本换信任密评与用户体验两头都拿分。另外如果只是联调验证可以先走测试证书/预生产流程把链路跑通再切正式 EV 证书别拿生产申请流程去练手。一个必须提前搞清的概念——国密双证书国密体系里一张「国密 SSL 证书」往往对应两对证书/私钥用途不同证书私钥归属用途签名证书签名私钥本人持有身份验证、抗抵赖加密证书加密私钥按监管要求可托管/备份加密通道密钥交换、密钥恢复申请时要跟 CA 确认清楚拿到的是几对证书、哪对是签名、哪对是加密后面部署和私钥管理都依赖这个区分。而且签收回来的证书别急着往服务器上放文件——改造一开始就把「签名私钥/加密私钥各在安当 HSM 里建一个对象、证书对象登记进安当 KSP」定下来第 6 步展开否则第 3~4 步做完又是一地 .key 明文。# 拿到证书后核对证书数量与算法示意mkdir-p/opt/ssl/ebankcd/opt/ssl/ebank# 期待看到签名证书 加密证书两对4 个组件# sign.cer / sign.key / enc.cer / enc.key 或统一由 CA 交付说明ls-la/opt/ssl/ebank/关键认知第 2 步最容易忽略的是**「双证书」概念**——国密改造不是拿一张证书换一张而是可能要多管理一对密钥。先把证书类型理清再谈部署能少走一半弯路。第 3 步证书转换与证书链补全CFCA 交付的证书常是 TXT 文本或邮件附件直接拿 .cer 文件格式装不上要经过提取、补链两步3.1 提取证书内容# 把 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 之间的 Base64 内容存成 .crt# 以交付的 TXT 为例示意命令awk/BEGIN CERTIFICATE/,/END CERTIFICATE/delivered_sign.txtsign.crtawk/BEGIN CERTIFICATE/,/END CERTIFICATE/delivered_enc.txtenc.crt3.2 补全证书链CFCA 是含二级/中级 CA 的体系只装终端证书不行浏览器不认。要把根证书 中间证书 服务器证书组成完整链fullchain# 拼全链中间证书在前、服务器证书在后示意catsign_intermediate.crt sign.crtsign_fullchain.crt# 验证证书链完整gmssl verify-CAfilesign_root.crt sign_fullchain.crt# → 输出 OK → 证书链完整可用注意点CA 的根证书/中间链会周期性更新换代行业里有 CA 切新一代根证书的先例。改造部署时务必向 CA 拿当前有效的最新证书链别拿几年前的旧链硬装——密评和浏览器都会验链。关键认知第 3 步的翻车点九成在**「证书链不完整」**——只装了服务器证书、漏了中间证书浏览器报不受信任、密评验链失败。部署前先用verify命令自测一遍比上线后抓头强。第 4 步部署国密 SSL网关/服务器国密 SSL 的部署和普通 HTTPS 有个关键区别原生 Nginx/主流服务器默认不支持 SM2 套件需要专门环境。业界两种主流落法方案 A国密网关推荐金融对客场景常用在网银前置部署国密 SSL 网关/负载均衡支持国密的安全网关设备在网关的「国密证书管理」模块分别上传签名证书/私钥、加密证书/私钥用户浏览器 ──国密 SM2 套件──▶ 国密 SSL 网关 ──内部/国际算法──▶ 网银应用 国密浏览器走 SM2 证书/私钥都在这层 应用侧改造最小网关把国密握手消化在网络入口应用服务器基本不用动对存量网银系统最友好也方便把私钥落在可信设备上。但要钉死一条私钥不能落在网关硬盘——网关证书可以上传签名/加密两对私钥应由网关经 PKCS#11 引用安当 HSM里的对象证书对象与到期状态由安当 KSP统一登记哪台网关挂了哪张证书、还剩几天台账可查。这样网关宕机重装不丢私钥密评「私钥进密码设备」这一条也稳过。方案 B国密版服务器直接支持用支持国密的Tengine / 国密 OpenSSL 编译的 Nginx同时配置签名、加密两套证书并启用国密套件# 示意国密 Nginx/Tengine 双证书配置非原生 Nginx server { listen 443 ssl; # 签名证书与加密证书两套 ssl_certificate /opt/ssl/ebank/sign_fullchain.crt; ssl_certificate_key /opt/ssl/ebank/sign.key; ssl_enc_certificate /opt/ssl/ebank/enc_fullchain.crt; # 国密扩展 ssl_enc_certificate_key /opt/ssl/ebank/enc.key; # 国密加密套件示意以实际版本为准 ssl_ciphers ECC-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3; ssl_protocols TLSv1.2 TLSv1.3; }# 重载并确认国密套件生效示意nginx-tnginx-sreloadecho|openssl s_client-connect$API_HOST:443-servernameebank.example.com-cipherECC-SM2-SM4-CBC-SM32/dev/null|grep-ECipher is# → 输出 ECC-SM2-SM4-CBC-SM3 → 国密套件可协商 ✓部署阶段的三个常见坑漏配加密证书只传了签名证书国密握手报「无可用证书」——双证书两张都要传缺一张就连不上套件顺序与协议版本国密套件没放前面、或环境还开着 TLS1.0/1.1协商结果不符合预期注意套件优先级与协议版本一起核对证书链只放一半漏了中间证书浏览器报「不受信任」——测试环境看不出来生产一上就翻车先verify再上线关键认知第 4 步的核心是**「别拿原生 Nginx 硬怼国密」**。两条路要么走国密网关改造小、入口统一要么走国密版服务器 双证书配置。记住国密 SSL 是「双证书」签名/加密两套私钥都要配齐漏一套就连不上。第 5 步双算法兼容国密浏览器与普通浏览器都能用国密 SSL 有个绕不开的现实主流的 Chrome/Edge 等国际浏览器不支持 SM2 套件。如果只部署国密证书普通浏览器用户直接打不开网银——这在金融场景不可接受。主流解法是「双算法、双证书」兼容方案同时挂一张 RSA 证书和一套国密 SM2 证书让浏览器自己选浏览器类型走哪套效果国密浏览器如红莲花、360 国密版、CFCA 配套浏览器等SM2 国密套件满足国密合规加密走国密普通浏览器Chrome/Edge/FirefoxRSA 证书兜底兼容可用不影响用户体验实现上由网关自适应或SNI/算法协商自动分发国密浏览器命中国密套件普通浏览器回退 RSA。# 验证两种浏览器都能协商成功示意# 国密浏览器视角应看到 SM2 国密套件echo|openssl s_client-connect$API_HOST:443-servernameebank.example.com-cipherECC-SM2-SM4-CBC-SM32/dev/null|grep-cCipher is# → 1 → 国密可协商# 普通浏览器视角应回退到 RSA/TLS1.3echo|openssl s_client-connect$API_HOST:443-servernameebank.example.com2/dev/null|grep-ECipher is# → 输出 TLS_AES_* / RSA 套件 → 兼容兜底可用关键认知第 5 步决定改造**「能不能上线」——纯国密会让普通用户打不开纯 RSA 过不了密评。「国密合规 RSA 兜底」双证书**是金融网银的标准答案改造时把它当成必选项不是可选项。第 6 步私钥托管与密钥生命周期管理国密 SSL 改造里最容易被密评抓住的不是套件是私钥放哪。证书链完整、套件支持国密但服务器私钥明文躺在应用服务器硬盘上——密评密钥安全照样扣分。两个动作6.1 私钥进密码设备网银服务器私钥尤其 EV/签名私钥应托管进密码设备——直接落安当 HSMSM2 签名/加密两对私钥都在 HSM 内生成通过 PKCS#11 接口调用私钥生成、存储、握手签名都在硬件内完成服务器只拿结果硬盘上不留任何私钥明文# 用支持国密的 HSM 生成 SM2 密钥对并导出 CSR示意gmssl pkey-providerpkcs11-genkey-outformpem2/dev/null# 视厂商 SDK 而定# 关键判定私钥不可从设备导出pkcs11-tool--module/usr/lib/libsm2pkcs11.so--extract-yprvtkey21|grep-cECKR_ATTRIBUTE|不可导出|denied# → 0 → 私钥锁设备不可导出 ✓6.2 证书与密钥生命周期统一管多张国密证书、多对密钥签名/加密更要命的是证书会过期——网银证书过期没换用户直接看到「不安全」。用**密钥管理系统安当 KSP**把证书/密钥收口统一纳管签名证书与加密证书、到期前自动提醒轮换、吊销留痕。# 自查在管证书的剩余有效期示意# 查 KSP/证书台账30 天内到期的证书列表echoSELECT cn, not_after FROM certs WHERE not_after DATE_ADD(NOW(), INTERVAL 30 DAY);|mysql-ucert-p2/dev/null# → 有行 → 存在临期证书需安排续期安当产品在网银国密 SSL 里的完整分工一张图说清国密浏览器 ──SM2 套件──▶ 国密SSL网关 / Tengine签名加密双证书 │ 证书对象sign/enc ▼ 安当 KSP登记双证书、到期提醒、轮换/吊销策略、审计留痕 │ 私钥对象PKCS#11不可导出 ▼ 安当 HSM两对 SM2 私钥生成与存储、握手签名在硬件内完成读图要点证书是「公之于众」的部分放网关/服务器没问题私钥是「秘而不宣」的部分只以对象形式存在于安当 HSM。网关与服务器通过 PKCS#11 引用私钥完成握手但永远拿不到私钥本身——这就是密评「私钥进密码设备」这一条在工程上的落地形态。证书台账、到期、轮换、吊销全在安当 KSP谁家的证书、剩几天、何时换运维不用靠脑子记。两类证书的轮换节奏不一样别一把抓签名证书换发直接换新即可旧签名私钥销毁历史签名本身可长期保留验证加密证书换发要考虑历史数据解密——历史报文若仍用旧加密证书加密过需要保留旧加密私钥用于解密走「新旧并行过渡」而不是一刀切删除。所以证书台账里要把签名证书与加密证书分开登记到期时间与轮换策略避免误销毁导致历史数据解不开——这也是国密双证书比单证书多出来的一份运维功课。关键认知第 6 步是国密 SSL 改造的「最后一公里」也最容易被轻视——套件和证书都合规了私钥没进设备、证书没人管密评和日常运维照样翻车。私钥托管给 HSM、生命周期归 KSP才算真正闭环。第 7 步验证与密评自查清单全部落完对照这份清单逐项验证#验证项方法达标判定1国密套件可协商openssl s_client指定国密套件输出 SM2 套件2证书为 SM2 国密查服务器证书公钥算法id-ecPublicKey(SM2)3证书链完整gmssl verify输出 OK4双算法兼容国密普通浏览器各测两种都能握手5私钥不进应用扫服务器私钥文件无明文私钥走 HSM6私钥不可导出pkcs11-tool --extract报错不可导出7证书临期提醒查证书台账无 30 天内到期未处理证书8密评加密套件对照密评要求网络通信层面支持国密无高风险项对着这份清单把你们网银 HTTPS 过一遍查一次证书公钥算法、试一次国密套件握手、看一眼服务器上还有没有明文私钥。网银国密 SSL 改造的答案是「SM2 证书 CFCA 对接 双算法兼容 私钥进设备」——用国密版环境生成 SM2 密钥对、向 CFCA 申请签名/加密双证书并补全链、部署国密网关或双证书服务器、留 RSA 兜底保证普通用户可用最后把两对私钥托管进安当 HSM、双证书生命周期交给安当 KSP一步不落。你们网银现在卡在哪——还在用 RSA 单证书、证书链没补全、还是私钥还躺在服务器上评论区说说一起拆。文章作者安当加密技术负责人