一、RSA证书生成基础原理
RSA加密算法通过非对称密钥对实现数据安全传输,包含公钥(用于加密)和私钥(用于解密)。微信小程序场景中,通常由服务端生成RSA密钥对,公钥下发给小程序用于加密敏感数据,私钥保留在服务端用于解密。
核心技术要求:
- 密钥长度建议≥2048位以保证安全性
- 公钥格式需兼容小程序加密库(如PKCS#1)
- 私钥必须通过安全信道存储
二、使用OpenSSL生成密钥对
通过OpenSSL命令行工具生成标准RSA密钥对:
- 生成2048位私钥:
openssl genrsa -out private.key 2048
- 导出PKCS#8格式公钥:
openssl rsa -in private.key -pubout -out public.pem
- 验证密钥对有效性:
openssl rsa -noout -text -in private.key
注意需将公钥格式转换为小程序支持的BEGIN RSA PUBLIC KEY标识。
三、证书格式转换与验证
小程序环境对密钥格式有特定要求:
- 将PKCS#8公钥转换为PKCS#1格式:
openssl rsa -pubin -in public.pem -RSAPublicKey_out
- 私钥需保留标准PKCS#1格式用于服务端解密
- 通过加密/解密测试用例验证格式兼容性
四、小程序端与服务器配置
完成密钥生成后需进行双向配置:
- 将公钥文件
public.pem
部署到小程序静态资源目录 - 服务端通过安全存储机制保管
private.key
- 小程序调用JSEncrypt等库加载公钥加密数据
- 服务端使用Java/PHP等语言进行解密验证
安全注意事项
1. 传输过程必须启用HTTPS协议防止中间人攻击
2. 定期更换密钥对(建议≤90天)
3. 避免在前端代码中硬编码私钥信息