用户要在IIS上实现国密改造,核心是确保Windows服务器支持国密算法,并通过一个支持国密的网关或负载均衡器进行代理,因为IIS自身并不直接支持SM2系列算法。
下面是改造路径的分析和SSL证书部署的详细技巧。
一、核心改造思路:为什么IIS不能直接支持国密?
IIS作为微软的组件,其底层的安全通道(`Schannel`)目前不支持SM2、SM3、SM4国密算法。因此,改造的关键在于“非侵入式代理”,主要有两种方案:
方案一(推荐):前置国密负载均衡器/网关。此方案最为稳妥。在IIS服务器前部署一个支持国密算法的硬件或软件(如深信服AD、F5等),由其处理所有国密SSL握手,再将解密后的普通HTTP请求转发给后端的IIS服务器。
方案二:使用支持国密的第三方IIS扩展。市面上存在少量商业化的IIS国密扩展模块,可尝试在IIS中集成SM2算法支持,但稳定性和性能有待验证。
二、方案一实操:证书安装与IIS配置详解
该方案下,所有国密证书操作都集中在前置的网关/负载均衡器上进行。后端的IIS服务器仅需配置一个普通的自签名证书或HTTP站点,无需进行国密改造。
1. 准备证书文件
从CA机构获取国密SSL证书,通常包括签名证书和加密证书。部署前,请将CA提供的PEM格式证书和私钥,通过其管理工具导入负载均衡设备。
2. IIS服务器后端配置(以Windows Server为例)
虽然IIS不直接处理国密,但标准HTTPS配置流程(用于处理普通RSA证书)是基础,主要涉及PFX格式的导入和绑定。
导入证书:打开IIS管理器,选择服务器节点,双击“服务器证书”,点击右侧的“导入...”,选择你的`.pfx`证书文件并输入密码。
站点绑定:在“网站”下选择你的站点,点击右侧的“绑定...”,添加类型为`https`的绑定,并选择你刚刚导入的证书。
证书链处理:为了确保浏览器完整信任,可使用MMC控制台将根证书和中间证书导入到“受信任的根证书颁发机构”和“中间证书颁发机构”的“证书”文件夹中。
3. 配置SSL/TLS协议与加密套件
为确保安全,IIS服务器自身的TLS配置也应遵循最佳实践。可以使用免费工具 IIS Crypto 来简化配置:
下载运行:从[Nartac官网](https://www.nartac.com/Products/IISCrypto/)下载并运行`IISCrypto.exe`。
一键配置:点击“Best Practices”按钮,它会自动禁用SSL 2.0/3.0等老旧协议,并启用现代安全的密码套件。
应用重启:点击“Apply”后重启服务器即可生效。
二、方案二:IIS Crypto工具参考
功能类别 推荐配置与操作
SSL/TLS 协议 仅勾选 TLS 1.2 和 TLS 1.3,并取消勾选 SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1。
国密支持 将 SM2、SM3、SM4 相关套件移至列表顶部,以提高优先级。
快速配置 点击“Best Practices”按钮可快速应用行业安全标准配置。
重启生效 任何更改都需要重启服务器才能生效。
如何让国密套件生效? 即使配置了国密套件,IIS本身也不会使用它们,因为Windows的`Schannel`不支持。此配置是为方案二(IIS国密扩展模块)做准备。在方案一(负载均衡)下,套件优先级调整主要在网关设备上进行。
三、关键安装技巧与常见问题
必须使用PFX格式:IIS仅支持导入包含证书和私钥的`.pfx`文件。如果CA只提供了`.crt`和`.key`文件,需要用OpenSSL等工具先合并成`.pfx`。
导入到正确的存储区:建议在IIS管理器中使用“导入”功能,证书会自动存入“个人”存储区。若手动导入,请确保选择“计算机账户”下的“个人”。
处理证书链:必须将CA提供的中间证书和根证书导入,否则浏览器会报错。
启用SNI:若单个IP需绑定多个不同域名的SSL证书,请在IIS站点绑定时勾选“需要服务器名称指示(SNI)”。
端口冲突:请确保443端口未被其他服务占用。若需同时使用国密和国际证书,可考虑在不同端口上配置,或使用支持SNI的网关方案。
四、总结
对IIS进行国密改造,部署一个支持国密算法的前端网关是当前最稳妥、最高效的方案。在此方案下,IIS本身的配置只需遵循标准的HTTPS最佳实践即可。