【kafka系列教程45】kafka使用SSL加密和认证

使用SSL加密和认证Apache kafka 允许clinet通过SSL连接,SSL默认是不可用的,需手动开启。1. 为每个Kafka broker生成SSL密钥和证书。部署HTTPS,第一步是为集群的每台机器生成密钥和证书,可以使用java的keytool来生产。我们将生成密钥到一个临时的密钥库,之后我们可以导出并用CA签名它。keytool -keystore server....
摘要由CSDN通过智能技术生成

使用SSL加密和认证

Apache kafka 允许clinet通过SSL连接,SSL默认是不可用的,需手动开启。

1. 为每个Kafka broker生成SSL密钥和证书。

部署HTTPS,第一步是为集群的每台机器生成密钥和证书,可以使用java的keytool来生产。我们将生成密钥到一个临时的密钥库,之后我们可以导出并用CA签名它。

keytool -keystore server.keystore.jks -alias localhost -validity {validity} -genkey

你需要用上面命令来指定两个参数。

  1. keystore: 密钥仓库存储证书文件。密钥仓库文件包含证书的私钥(保证私钥的安全)。
  2. validity: 证书的有效时间,天

注意:默认情况下,不会定义ssl.endpoint.identification.algorithm,所以不会执行主机名验证。 要启用主机名验证,请设置以下属性:

ssl.endpoint.identification.algorithm=HTTPS 

一旦启用,客户端将根据以下两个字段之一验证服务器的完全限定域名(FQDN):

  • Common Name (CN)
  • Subject Alternative Name (SAN)

两个字段都有效,但RFC-2818建议使用SAN。 SAN更灵活,允许声明多个DNS条目。 另一个优点是,CN可以设置为更有意义的值用于授权。 要添加SAN字段,可用以下参数 -ext SAN = DNS:{FQDN}:

 keytool -keystore server.keystore.jks -alias localhost -validity {validity} -genkey -ext SAN=DNS:{FQDN}

之后可以运行以下命令来验证生成的证书的内容:

keytool -list -v -keystore server.keystore.jks

2. 创建自己的CA

通过第一步,集群中的每台机器都生成一对公私钥,和一个证书来识别机器。但是,证书是未签名的,这意味着攻击者可以创建一个这样的证书来假装成任何机器。

因此,通过对集群中的每台机器进行签名来防止伪造的证书。证书颁发机构(CA)负责签名证书。CA的工作机制像一个颁发护照的政府。政府印章(标志)每本护照,这样护照很难伪造。其他政府核实护照的印章,以确保护照是真实的。同样,CA签名的证书和加密保证签名证书很难伪造。因此,只要CA是一个真正和值得信赖的权威,client就能有较高的保障连接的是真正的机器。

openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
<
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值