AWS CloudHSM 使用汇总
近期发布了多篇和CloudHSM加密相关的文章,汇总在这里,集合了CloudHSM基础使用知识,从SDK选择、SDK适配、实现密钥管理、加密、解密、PKCS相应算法和封装等,并提供使用JCE Provider SDK的Java示例代码。
注:更新于2026年4月
一、CloudHSM 初始化 及 Java JCE Provider SDK使用
1、CloudHSM集群创建和基础的密钥生成、加密、解密、Wrap/Unwrap机制(基于JCE Provider)
CloudHSM开机上手及IoT场景加密算法设计最佳实践:https://blog.bitipcman.com/post/cloudhsm-java-sdk-getting-started-and-best-practices/
Java示例代码:https://github.com/aobao32/cloudhsm-101
2、ECC签名和证书签发
JCE Provider 实现 ECC 签名和证书签发:https://blog.bitipcman.com/post/cloudhsm-ecdsa-java-sample/
Java示例代码:https://github.com/aobao32/cloudhsm-openssl-dynamic-engine/blob/main/java-ecc-demo/java-ecdsa.md
3、PKCS7实现(基于JCE Provider)
使用CloudHSM完成PKCS#7分离签名(Detached Signature):https://blog.bitipcman.com/post/cloudhsm-pkcs7-signature/)
Java示例代码:https://github.com/aobao32/cloudhsm-pkcs7-demo
4、PKCS12实现(基于JCE Provider)
CloudHSM实现不导出私钥明文场景下的PKCS#12密钥封装:https://blog.bitipcman.com/post/cloudhsm-pkcs12-wrapping/
Java示例代码:https://github.com/aobao32/cloudhsm-pkcs12-demo
5、3DES-CBC-Padding替代3DES MAC
在CloudHSM上用3DES-CBC替代3DES-MAC:https://blog.bitipcman.com/post/cloudhsm-3des-cbc/
Java示例代码:https://github.com/aobao32/cloudhsm-3des-cbc/tree/main/src/main/java/com/example/cloudhsm/des
6、实现 None-With-RSASSA-PSS 签名(PKCS#1)
CloudHSM 使用 JCE Provider SDK 5 实现 None-With-RSASSA-PSS 签名:https://blog.bitipcman.com/post/cloudhsm-none-with-rsassa-pss/
Java示例代码:https://github.com/aobao32/cloudhsm-none-with-rsassa-pss#
二、使用 PKCS#11 库(libcloudhsm_pkcs11.so)
1、Java不引用JCE Provider库而是基于 SunPKCS11 库实现 PKCS11 实现
CloudHSM Java PKCS#11 - ECC 密钥生成与自签名 CA 证书签发:https://blog.bitipcman.com/post/cloudhsm-java-pkcs11/
Java示例代码:https://github.com/aobao32/cloudhsm-java-pkcs11
2、使用 OpenSC 的 pkcs11-tool 命令行工具实现加密和解密
使用OpenSC的PKCS11-tool命令行工具对CloudHSM进行操作:https://blog.bitipcman.com/post/cloudhsm-pkcs11-cli-tool/
三、使用使用OpenSSL Dynamic Engine
1、使用 OpenSSL Dynamic Engine 命令行工具实现ECC签名和证书签发
使用OpenSSL Dynamic Engine调用CloudHSM加密机内的密钥完成签名和证书签发:https://blog.bitipcman.com/post/cloudhsm-openssl-dynamic-engine/
四、密码学基础
1、使用带密码保护的rsa密钥进行加密和解密(在CloudHSM外实现)
阅读本文:https://blog.bitipcman.com/post/java-jce-password-protected-key/
最后修改于 2026-04-29