mPaaS MGS配置SM2国密加密指南

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 因当前国家信息安全监管总局对金融类App监管要求,涉及到数据安全通信加密算法必须要使用国密的规定。众多使用mPaaS框架的银卡金融客户,因早期大多数都是在网关配置的RSA加密或者ECC加密算法,当接到监管要求后,都要更改网关加密算法为国密,因需求众多mPaaS团队也为此开发了网关同时兼容多个加密方式的功能,去解决客户侧因更换加密算法造成的种种不便和问题。mPaaS 对国密算法加密客户端、网关都是支持的,这里整理一份从生成SM2到mPaaS配置完成的完整指南。


一 背景

因当前国家信息安全监管总局对金融类App监管要求,涉及到数据安全通信加密算法必须要使用国密的规定。众多使用mPaaS框架的银卡金融客户,因早期大多数都是在网关配置的RSA加密或者ECC加密算法,当接到监管要求后,都要更改网关加密算法为国密,因需求众多mPaaS团队也为此开发了网关同时兼容多个加密方式的功能,去解决客户侧因更换加密算法造成的种种不便和问题。

mPaaS 对国密算法加密客户端、网关都是支持的,这里整理一份从生成SM2到mPaaS配置完成的完整指南。

二 SM2国密生成

1. 生成SM2密钥

1.1. Mac OS下

Mac OSX一般自带的有OpenSSL。但因为OpenSSL“心脏病失血”事件,Mac OSX 自 10.11 El Capitan 起,将原有的 OpenSSL 替换为 LibreSSL 。在以上这些系统中应该除了实测必须要用 OpenSSL 软件外,应该都可以用 LibreSSL 取代 OpenSSL。而对于其他大多数还没有将系统自带的 OpenSSL 替换为 LibreSSL 的会麻烦一些,并且也可能做不到彻底替换。只是对于编译安装的软件,可以尽量用 LibreSSL 取代 OpenSSL。(其他用LibreSSL 取代 OpenSSL的系统还有:OpenBSD 自 5.6 起,Alpine Linux 自 3.5.0 起)。

所以 Mac 下OpenSSL 生成SM2密钥就需要自己安装OpenSSL,网上有方式直接更改替换Mac OS自带的LibreSSL,这里为了不影响Mac 使用者的日常正常使用,不使用这种方式,而是在Mac 上download 一个OpenSSL版本安装、解压后单独使用,完全不会影响原有的LibreSSL。

这里以openssl 1.1.1d实现为例:

  1. 下载openssl源码

curl -o openssl-1.1.1d.tar.gz https://www.openssl.org/source/openssl-1.1.1d.tar.gz

  1. 解压源码包

tar -xvf openssl-1.1.1d.tar.gz

  1. 进入解压的openssl目录

cd openssl-1.1.1d

  1. 配置生成makefile

./config --prefix=/usr/local/openssl

  1. 安装

//这里用了sudo 需要输入电脑密码,为了保证不会因为权限不足而安装报错

sudo make install

  1. 设置openssl lib .so加载配置

//此步骤可以忽略,so加载配置与否不影响使用生成SM2

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

ldconfig -v

  1. 生成SM2密钥

    i. 进入生成密钥文件的目录,执行以下命令生成私钥

/usr/local/openssl/bin/openssl ecparam -genkey -name SM2 -out SM2PrivateKey.pem

   ii. 进入生成密钥文件的目录,生成公钥

/usr/local/openssl/bin/openssl ec -in SM2PrivateKey.pem -pubout -out SM2PublicKey.pem

1.2. Windows下

同样Windows 下也是需要一些途径才能生成SM2国密密钥。

OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。

工具地址:http://slproweb.com/products/Win32OpenSSL.html

  1. 下载工具

选择32位或者64位合适的版本下载,例如Win64OpenSSL_Light-1_0_2h.exe。

  1. 安装Win64OpenSSL软件

设置环境变量,自行确定安装位置。

  1. 打开Win64OpenSSL软件,运行以下命令

ecparam -genkey -name SM2 -out priv.key

ec -in priv.key -pubout -out pub.key

三 配置mPaaS国密

1. 初次配置加密

1.1. 开发平台配置

  1. 打开登录移动开发平台->移动网关->网关管理->数据加密->打开。
  2. 打开后会弹出选择加密方式和密钥的弹出,选SM2 并 填写对应的私钥密钥。

1.2. 客户端配置

1.2.1. iOS端

  1. iOS客户端的加密方式和公钥是配置在info.plist下的,详情见图:

其中,

  • mPaaSCrypt:加密配置的主 key,value 是Dictionary类型,里面包含了客户端加密所需设置的相关信息。
  • Crypt:是否进行加密,value 是Boolean类型,YES代表加密,NO代表不加密。
  • GWWhiteList: 需要进行加密的网关,即当前环境的网关地址。如果没有该 key ,则所有的请求都不会加密
  • RSA/ECC/SM2:非对称加密算法选择,value 是String类型,只能填RSAECCSM2
  • PubKey:非对称加密公钥。value 是 String 类型,与选择的非对称加密算法保持一致。

注:iOS端PubKey 的格式必须携带 -----BEGIN PUBLIC KEY----- 及 -----END PUBLIC KEY-----。不允许有空格、自行换行等,格式不可错误。

1.2.2. Android端

  1. Android 端的加密方式和公钥是配置在mpaas_netconfig.properties 文件下,如图:其中,
  • Crypt:表示是否使用自加密,true表示使用,false表示关闭自加密功能。
  • RSA/ECC/SM2:表示要使用的非对称加密算法,其值只能填充RSAECCSM2
  • PubKey:表示选择的非对称加密算法的公钥。
  • GWWhiteList: 需要进行加密的网关,即当前环境的网关地址。如果没有该 key ,则所有的请求 都不会加密

注:由于 Android 中 properties 文件的 value 值需要在同一行,因此填充公钥时需注意。

2.更换配置加密

2.1. 开发平台配置

注:mgs 版本要 >=1.34.10

  1. 打开移动开发平台->移动网关->网关管理:

当前网关已经开启了数据加密(这里示例是RSA)。

  1. 这时更换国密,需要提前准备一对已生成的SM2 公、私钥,详细密钥生成方法参考:https://help.aliyun.com/document_detail/64281.htm
  2. 在控制台-网关管理下,先关闭数据加密,再立刻开启数据加密,这是会出现重新选择加密算法和填写对应密钥的弹窗,如下图。

4.将SM2的私钥按正确格式填写到输入框内,点击提交。之后就能在这里看到已经配置好的两种加密方式:

介此,网关更换密钥操作已完成。

注:步骤3中必须要先关闭再开启,所以请务必先提前生成好对应的SM2公、私钥,且保证正确性和正确格式。

2.2. 客户端配置

2.2.1. iOS端

  1. iOS客户端的加密方式和公钥是配置在info.plist下的,详情见图:

  1. 此时将已生成好的SM2公钥按正确格式替换上述info.plist里PubKey的value,加密算法更改为SM2。

介此 iOS端加密方式和公钥也已更换完毕。

2.2.2. Android端

  1. Android 端的加密方式和公钥是配置在mpaas_netconfig.properties 文件下的,如图:
  2. 此时将已生成好的SM2公钥按正确格式替换上述mpaas_netconfig.properties 里的对应value,更换后如下图:

介此 Android 端加密方式和公钥已更换完毕。

2.3. 小结

此时服务端和客户端均已更换加密方式完毕,旧版App依然可以正常访问网关,新版App也是可以正常访问网关的,后续需要等待旧版App用户完全升级到新版App后,修改掉网关旧的加密方式即可,当然一直保留也可以的。

四 结束语

届此从生成自己的国密SM2,到完整配置加密方式。客户端到mPaaS网关已满足监管对App数据加密方式的要求。同时mPaaS团队也在更完备支持全链路国密的道路上,而努力前进。后续会发布更全面、更方便、更深层次的国密支持方案,仅此感谢!



目录
相关文章
|
1月前
|
算法 测试技术 Go
go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持
`dongle` 是一款轻量级、语义化、开发者友好的 Golang 密码库,100% 单元测试覆盖,获 2024 年 GVP 与 G-Star 双项荣誉。支持 SM4 国密算法,提供标准及流式处理,优化读取位置重置,提升安全性与易用性。文档齐全,开源免费,欢迎 Star!
165 0
|
1月前
|
算法 测试技术 Go
go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持
`dongle` 是一款轻量级、语义化、开发者友好的 Golang 密码库,100% 单元测试覆盖,获 2024 年 GVP 与 G-Star 双项荣誉。支持 SM4 国密算法,提供标准及流式处理,优化读取位置重置,提升安全性与易用性。文档齐全,开源免费,欢迎 Star!
169 0
|
3月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
958 10
|
5月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
375 3
Jasypt加密数据库配置信息
|
4月前
|
人工智能 安全 Java
Spring Boot yml 配置敏感信息加密
本文介绍了如何在 Spring Boot 项目中使用 Jasypt 实现配置文件加密,包含添加依赖、配置密钥、生成加密值、在配置中使用加密值及验证步骤,并提供了注意事项,确保敏感信息的安全管理。
1102 1
|
12月前
|
存储 安全 数据安全/隐私保护
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
792 60
|
12月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
671 60
|
12月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
691 60
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
220 0
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
252 1