【学习笔记】Https证书如何升级到国密
〇、基本概念
1、国密
国密即国家密码管理局公布认定的国产密码算法,也称为商用密码(在此语境下与国密通用,简称SM),指能够实现商用密码算法的加密、解密和认证等功能的技术,涵盖密码算法编程技术和密码算法芯片、加密卡等的实现技术。它是保障国家信息安全的重要手段,我国将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护其秘密。
应用场景:主要用于涉及国家安全、国计民生等重要领域,如国防、外交、政务、金融、能源等领域,保障国家关键信息基础设施和重要信息的安全。
管理机构:由国家密码管理局统一管理和监督,确保国密相关工作的规范有序进行,保障其安全性和合规性。
加密算法:国密采用特定的加密算法,如SM系列算法(SM1、SM2、SM3、SM4、SM7、SM9)和祖冲之密码算法(ZUC)等。这些算法经过严格的安全评估和验证,具有较高的安全性和自主可控性。
安全要求:具有极高的安全性和保密性要求,以应对复杂的安全威胁,保护国家核心利益和重要信息资产。
2、商密
商密即商业密码,指用于商业领域,保护商业秘密和交易安全的密码技术,通常由企业或商业机构自主研发或采购。它具有灵活性,可根据企业具体需求定制开发;具有经济性,适合企业大规模应用;具有保密性,旨在保护企业的商业秘密和交易安全。
应用场景:广泛应用于商业领域,如企业内部的信息交流、商业交易、客户数据保护、电子商务、金融交易等,用于保护商业机密、企业敏感信息和客户隐私等,帮助企业维护其竞争优势。
管理机构:由企业或组织自行管理,企业可根据自身的安全需求和商业运营特点,制定相应的商密管理措施和保密策略。
加密算法:商密的加密算法相对灵活,企业可根据具体需求选择合适的算法。既可以采用国家密码管理局认定的国产商用密码算法,如 SM 系列算法,也可以使用其他符合相关标准和规范的商业加密算法。
安全要求:安全性要求相对国密较低,但也要满足一般商业领域的保密需求,能够抵御常见的安全威胁,保护企业的商业利益。
小结:商用密码的概念来自于《密码法》,商用密码不等于商密。
一、什么是 HTTPS?什么又是“国密HTTPS”
1、普通 HTTPS
(1)用国际通用算法(RSA、ECC)加密传输
(2)证书由全球 CA 机构签发
(3)适用于大多数商业网站
2、国密 HTTPS
(1)用中国自主可控的SM2、SM3、SM4 算法体系
(2)证书由具备国密资质的 CA 签发(如 CFCA、天威诚信等)
(3)符合《商用密码法》,是政府、金融、信创项目的标配
3、比较
(1)普通 HTTPS:用“国际标准的锁”锁门
(2)国密 HTTPS:用“国家标准的锁”锁门(有统一认证)
二、须用国密 HTTPS的场景
1. 合规要求政府采购、金融机构、央企等必须用符合《商用密码法》的加密算法。
2. 信创环境支持国产浏览器(360 安全浏览器、红旗浏览器)、国产 OS(麒麟、UOS)默认支持国密算法。
3. 验收硬性条件招标文件、验收规范中常明确写明“须支持国密算法和国密证书”。
4. 安全信任链国密证书由国家认可的权威机构签发,更容易通过安全审计。
三、相关问题解读
Q1:国密 HTTPS 会让访问变慢吗?
影响不大,现代硬件足够快,用户几乎感知不到。
Q2:普通浏览器能直接访问国密 HTTPS 网站吗?
大部分国际浏览器需要安装国密插件,或使用双证书方案来兼容。
Q3:部署国密 HTTPS 成本高吗?
成本主要在证书购买、部署调试上,相对整个项目成本比例很小。推荐国密反向代理 + 内部标准 HTTPS的架构,降低改造成本。
Q4:需要改很多代码吗?
一般只需在 Web 服务器配置证书,少量业务代码适配。
四、实施五步法
1、要求确认
确认需求从合同或招标文件中确认是否必须支持国密 HTTPS。
2、选择证书找有国密资质的 CA 机构。
目前支持SM的权威机构包括 CFCA、中国金融认证中心、天威诚信、北京数字认证等。选择权威 CA,能确保证书被国产浏览器和信创系统广泛信任。
3. 部署模式
(1)单商密:仅国密证书(适合国产环境)
(2)双证书:国际+国密证书并存(兼容所有浏览器)
SM的HTTPS 与传统HTTPS不同,采用签名证书 + 加密证书双证书模式:
其中,签名证书,SM2签名,用于身份认证
加密证书,SM2加密,用于会话密钥交换
采购时要确认两者齐全,缺一不可。
4. 成本预算及实施周期
SM证书成本通常高于国际证书,测试环境可用自签或低价 CA,生产环境建议采购1-3年期权威证书,更稳定更划算。
5、部署示例
(1)环境准备
涉及浏览器国密插件安装、移动端兼容性测试、负载均衡及反向代理的证书配置。
使用支持国密算法的 Web 服务器(比如:国密版 Nginx/Tengine、Tomcat+国密JDK)
安装 GmSSL / BouncyCastle 国密库导入国密根证书到系统/浏览器信任库。
(2)部署配置(以Nginx为例)
就是下面这sign.crt、sign.key、encrypt.crt、encrypt.key四个证书
server { listen 443 ssl;ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-SM2-WITH-SM4-SM3;ssl_certificate /etc/nginx/certs/sign.crt; # 签名证书 ssl_certificate_key /etc/nginx/certs/sign.key;ssl_certificate /etc/nginx/certs/encrypt.crt; # 加密证书 ssl_certificate_key /etc/nginx/certs/encrypt.key;
}
此处需注意 双证书分别配置,否则浏览器可能会提示握手失败。
6、测试验收
(1)测试验收使用国产浏览器访问、抓包确认加密算法。
(2)SM证书需匹配操作系统、浏览器、中间件:
1)操作系统:统信 UOS、麒麟
2)浏览器:360 国密浏览器、改造版 Chrome/Firefox。
浏览器需支持 GM/T 0024 国密协议,并正确导入国密 CA 根证书
Java/APP 客户端需使用商密兼容的 JDK 或加密库。
3)中间件:东方通、TongWeb、Tomcat 商密增强版
采购时要向厂商要兼容性说明,避免后续部署踩坑。
参考文献:
1、https://mp.weixin.qq.com/s/KEgsDEsJ_cKTXa_wRjy1-A?scene=1&click_id=19
2、https://blog.csdn.net/jayjaydream/article/details/148109121