如何使用Pulsar TLS进行传输加密
发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,Apache Pulsar 是一个企业级的分布式消息系统,最初由 Yahoo 开发,在 2016 年开源,并于2018年9月毕业成为 Apache 基金会的顶级项目。Pulsar 已经在 Yahoo
Apache Pulsar 是一个企业级的分布式消息系统,最初由 Yahoo 开发,在 2016 年开源,并于2018年9月毕业成为 Apache 基金会的顶级项目。Pulsar 已经在 Yahoo 的生产环境使用了三年多,主要服务于Mail、Finance、Sports、 Flickr、 the Gemini Ads platform、 Sherpa (Yahoo 的 KV 存储)。
Pulsar是一种用于服务器到服务器消息传递的多租户,高性能解决方案。
默认情况下,Apache Pulsar客户端以纯文本与Apache Pulsar服务通信。可以通过配置TLS传输加密,开启TLS要影响传输性能。以下是具体配置Pulsar TLS操作和注意事项。(Pulsar 2.4.2版本测试通过)
一 创建根证书CA /data目录下 $ mkdir my-ca $ cd my-ca $ wget --no-check-certificate https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf $ export CA_HOME=$(pwd) $ mkdir certs crl newcerts private $ chmod 700 private/ $ touch index.txt $ echo 1000 > serial 生成根证书的私钥,需要录入秘密,记录此密码后边会使用 $ openssl genrsa -aes256 -out private/ca.key.pem 4096 生成根证书CA $openssl req -config openssl.cnf -key private/ca.key.pem \ -new -x509 -days 7300 -sha256 -extensions v3_ca \ -out certs/ca.cert.pem 1)先录入上边的私钥密码 2)填写信息,记录录入的信息后边用到 Country Name (2 letter code):CN //国家名 State or Province Name:beijing //省名 Locality Name:beijing //城市名 Organization Name:test //组织名称 Organizational Unit Name:test //组织单位名称 Common Name: 服务器域名或是ip Email Address:邮件 $ chmod 444 certs/ca.cert.pem 二 生成服务器证书 生成服务器证书密钥 $ openssl genrsa -out broker.key.pem 2048 $ openssl pkcs8 -topk8 -inform PEM -outform PEM \ -in broker.key.pem -out broker.key-pk8.pem -nocrypt 生成服务器证书请求,根据提示填写信息国家等基本信息和CA根证书一一致。 Common Name要填写服务器的域名(单Broker可以填写IP) $ openssl req -config openssl.cnf \ -key broker.key.pem -new -sha256 -out broker.csr.pem $ openssl ca -config openssl.cnf -extensions server_cert \ -days 1000 -notext -md sha256 \ -in broker.csr.pem -out broker.cert.pem 三 Broker配置 broker.conf文件中 默认brokerServicePortTls webServicePortTls为空,不启动TLS通过填写端口号告诉服务器开启TL通道, 如果相关闭普通通道把brokerServicePort和webServicePort的端口去掉。 brokerServicePort=6650 brokerServicePortTls=6651 webServicePort=8080 webServicePortTls=8443 tlsCertificateFilePath=/data/my-ca/broker.cert.pem tlsKeyFilePath=/data/my-ca/broker.key-pk8.pem tlsTrustCertsFilePath=/data/my-ca/certs/ca.cert.pem 注意:官方文档中tlsProtocols tlsCiphers 如果配置了我使用客户端测试时会不通过。此两项不填写测试可以通过。 四 配置完成broker.conf启动Broker查看日志文件提示以下信息说明服务端开启了TLS服务 Started PulsarServerConnector@6a2eea2a{SSL,[ssl, http/1.1]}{0.0.0.0:8443} 五 JAVA客户端测试 1)拷出刚才生成的公有证书 /data/my-ca/certs/ca.cert.pem 放到客户端服务上 2)java 主要代码,发送或接收数据正常说明配置成功 PulsarClient client =PulsarClient.builder() .serviceUrl(url) .tlsTrustCertsFilePath("D:/jar/ca.cert.pem")//客户端服务器上公有证书路径 .enableTlsHostnameVerification(false) .allowTlsInsecureConnection(false)