HDFS配置Kerberos之创建 CA SSL证书

本文主要提供创建ssl证书的过程 其余hdfs配置Kerberos的内容请参考其他文章

配置ssl的原因:在配置hdfs集成Kerberos的时候,standby节点一直起不来 看了log ,原因竟然是hdfs配置了https_only 在同步namenode的元数据时 传不过来,所以必须要有ssl证书的支持 ,配完ssl证书整个流程就通畅了!

假设我们有三台机器 m1 m2 m3

  • 我们在第一台m1的 ~目录执行 下面这句 (替换变量 m1_hostname是第一台机器的namehost)
      openssl req -new -x509 -passout pass:password -keyout bd_ca_key -out bd_ca_cert -days 9999 -subj "/C=CN/ST=beijing/L=beijing/O=m1_hostname/OU=m1_hostname/CN=m1_hostname"
  • 此时会生成两个文件 bd_ca_key 和 bd_ca_cert

  • 然后在第一台执行如下脚本
    作用就是
    1、将 bd_ca_key 和 bd_ca_cert 发到三台机器上
    2、创建一个/var/lib/hadoop-hdfs/ 路径
    3、生成证书
    4、分发证书到指定目录

注意:证书生成的密码我全用的password 如有需要 可以自己替换 并且同步替换 ssl-client.xml和ssl-server.xml里的密码即可,ssl-client.xml和ssl-server.xml在下文有模版

SSHCMD="sshpass -p $MACHINEPASSWORD ssh -o StrictHostKeyChecking=no "
SCPCMD="sshpass -p $MACHINEPASSWORD scp -r -o StrictHostKeyChecking=no "
SSHUSER="root"

for node in $(cat hosts); do
          $SSHCMD ${
   SSHUSER}@${
   node} "sudo mkdir -p /var/lib/hadoop-hdfs/"
          $SSHCMD ${
   SSHUSER}@${
   node} "sudo chown ${SSHUSER} /var/lib/hadoop-hdfs/"
          #将key 和 cert分发到其他机器
          $SCPCMD ~/bd_ca_cert ${
   SSHUSER}@${
   node}:~
          $SCPCMD ~/bd_ca_key ${
   SSHUSER}@${
   node}:~
          #证书生成的六步
          $SSHCMD ${
   SSHUSER}@$node "keytool -keystore keystore -alias localhost -validity 9999 -importpass -keypass password  -importpass -storepass password -genkey -keyalg RSA -keysize 2048 -dname 'CN=${node}, OU=${node}, O=${node}, L=beijing, ST=beijing, C=CN'"
          $SSHCMD ${
   SSHUSER}@$node "keytool -keystore truststore -alias CARoot -importpass -storepass password -noprompt -import -file bd_ca_cert"
          $SSHCMD ${
   SSHUSER}@$node "keytool -importpass -storepass password -certreq -alias localhost -keystore keystore -file cert"
          $SSHCMD ${
   SSHUSER}@$node "openssl x509 -req -CA bd_ca_cert -CAkey bd_ca_key -in cert -out cert_signed -days 9999 
### 配置HDFS中的Kerberos认证 #### 准备工作 为了确保Apache Hadoop集群的安全性,Kerberos作为基础安全机制被广泛采用。启用Kerberos之后,用户身份验证成为必要条件[^1]。 #### 安装并配置KDC服务器 首先需要安装和设置一个Key Distribution Center (KDC),这可以是在本地环境中部署MIT KDC或是利用现有的企业级LDAP集成的KDC服务。此过程不在本文讨论范围内,但这是实现Kerberos认证的前提。 #### 创建必要的Principal和服务密钥表(keytabs) 对于每一个运行Hadoop守护进程的服务主机都需要创建相应的principal以及keytab文件用于存储这些principals的秘密信息。例如,在名为`example.com`领域内的namenode principal可能看起来像这样:`nn/fqdn.example.com@EXAMPLE.COM`。同样地也需要为其他节点如datanodes、resourcemanager等创建对应的principal[^4]。 #### 修改核心配置文件 编辑`core-site.xml`, 添加如下属性来指定默认realm和其他一些参数: ```xml <property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> </property> <!-- Specify default realm --> <property> <name>kerberos.server.principal</name> <value>HTTP/_HOST@YOUR-REALM.COM</value> </property> ``` 同时更新`hdfs-site.xml`以包含NameNode 和 DataNodes 的 principals 及其 keytabs的位置: ```xml <configuration> ... <!-- NameNode configuration --> <property> <name>dfs.namenode.kerberos.principal</name> <value>nn/_HOST@YOUR-REALM.COM</value> </property> <property> <name>dfs.namenode.keytab.file</name> <value>/etc/security/keytabs/nn.service.keytab</value> </property> <!-- Secondary NameNode Configuration --> ... <!-- DataNode Configuration --> <property> <name>dfs.datanode.kerberos.principal</name> <value>dn/_HOST@YOUR-REALM.COM</value> </property> <property> <name>dfs.datanode.keytab.file</name> <value>/etc/security/keytabs/dn.service.keytab</value> </property> ... </configuration> ``` 最后一步是分发修改后的XML配置文件到所有的集群成员上[^3]: ```bash scp core-site.xml hdfs-site.xml hadoop@slave01.hadoop:/usr/local/hadoop-2.7.7/etc/hadoop/ ``` 完成上述步骤后重启所有受影响的服务使更改生效即可开始享受更高级别的安全性保护措施带来的好处[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值