参考链接
Pulsar 端到端消息加解密
生产端加密,消费端解密
- Asymmetric and symmetric encryption(非对称 + 对称)
使用 ECDSA/RSA 非对称加密算法,加解密对称算法AES秘钥(AES秘钥动态生成)
生产者拥有公钥,消费者拥有私钥
生产者使用公钥对动态生成的对称秘钥加密,并存储于消息头,再发送至Broker;
生产者使用对称秘钥对消息体进行加密;
消费者获取消息后,用私钥对消息头的对称秘钥密文解密,得到对称秘钥再进行消息解密
生产者可以配置使用多个公钥,不同公钥对应的私钥可以分配给不同的消费实例;
对称秘钥的有效周期为4个小时或发送一定数量消息
- 使用步骤
-
生成ECDSA/RSA 公私钥对
openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
openssl ec -in test_ecdsa_privkey.pem -pubout -outform pkcs8 -out test_ecdsa_pubkey.pem -
生产端实现CryptoKeyReader::getPublicKey() 接口,用于pulsar client库加载公钥,并将该接口的实现实例添加到producer ProducerConfiguration : conf.setCryptoKeyReader(keyReader);同时添加加密key到producer ProducerConfiguration ,如:conf.addEncryptionKey("myapp.key")
-
消费端实现CryptoKeyReader::getPrivateKey()接口,用于ulsar client库加载私钥,并将该接口的实现实例添加到consumer ConsumerConfiguration : consConf.setCryptoKeyReader;
网友评论