要在CentOS上给HDFS数据传输加上加密保护,最直接的办法就是启用SSL/TLS。下面把具体操作步骤拆解一下,涉及证书生成、Hadoop配置和集群重启几个关键环节。
1. 安装和配置Hadoop
在动手之前,先确保Hadoop集群已经正确安装并跑起来了。具体的安装步骤建议参考官方文档,这里就不再赘述。
2. 启用SSL/TLS
这一步是实现加密传输的核心,包含证书生成和配置文件修改两个子任务。
2.1 生成SSL证书
使用OpenSSL创建CA证书、服务器证书和客户端证书。可以先把证书和密钥统一放到 /etc/hadoop/ssl 目录下,方便管理。
# 创建一个目录来存放证书和密钥
mkdir -p /etc/hadoop/ssl
# 生成CA证书
openssl req -new -x509 -days 3650 -nodes -out /etc/hadoop/ssl/ca-cert.pem -keyout /etc/hadoop/ssl/ca-key.pem
# 生成服务器证书和密钥
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout /etc/hadoop/ssl/server-key.pem -out /etc/hadoop/ssl/server-req.pem
openssl x509 -req -in /etc/hadoop/ssl/server-req.pem -CA /etc/hadoop/ssl/ca-cert.pem -CAkey /etc/hadoop/ssl/ca-key.pem -CAcreateserial -out /etc/hadoop/ssl/server-cert.pem
# 生成客户端证书和密钥
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout /etc/hadoop/ssl/client-key.pem -out /etc/hadoop/ssl/client-req.pem
openssl x509 -req -in /etc/hadoop/ssl/client-req.pem -CA /etc/hadoop/ssl/ca-cert.pem -CAkey /etc/hadoop/ssl/ca-key.pem -CAcreateserial -out /etc/hadoop/ssl/client-cert.pem
2.2 配置Hadoop使用SSL
证书就绪后,需要修改Hadoop的几个核心配置文件。先看 core-site.xml,开启全局SSL开关并指定密钥库和信任库的位置及密码。
core-site.xml
hadoop.ssl.enabled
true
hadoop.ssl.keystore.location
/etc/hadoop/ssl/client-cert.pem
hadoop.ssl.keystore.password
your_keystore_password
hadoop.ssl.truststore.location
/etc/hadoop/ssl/ca-cert.pem
hadoop.ssl.truststore.password
your_truststore_password
然后是 hdfs-site.xml,分别给NameNode和DataNode开启SSL,并指定对应的证书路径。
hdfs-site.xml
dfs.namenode.ssl.enabled
true
dfs.namenode.keystore.location
/etc/hadoop/ssl/server-cert.pem
dfs.namenode.keystore.password
your_keystore_password
dfs.namenode.truststore.location
/etc/hadoop/ssl/ca-cert.pem
dfs.namenode.truststore.password
your_truststore_password
dfs.datanode.ssl.enabled
true
dfs.datanode.keystore.location
/etc/hadoop/ssl/server-cert.pem
dfs.datanode.keystore.password
your_keystore_password
dfs.datanode.truststore.location
/etc/hadoop/ssl/ca-cert.pem
dfs.datanode.truststore.password
your_truststore_password
3. 重启Hadoop集群
配置改完,必须重启集群才能让新设置生效。先停掉所有服务,再重新启动。
# 停止所有Hadoop服务
stop-dfs.sh
stop-yarn.sh
# 启动所有Hadoop服务
start-dfs.sh
start-yarn.sh
4. 验证SSL/TLS配置
重启后别急着走,先跑几个命令确认SSL是否真正生效。通过 hdfs dfsadmin -report 可以快速查看NameNode和DataNode的状态,看有没有SSL标记。
# 检查NameNode是否启用了SSL
hdfs dfsadmin -report
# 检查DataNode是否启用了SSL
hdfs dfsadmin -report
5. 客户端配置
别忘了客户端也需要配SSL。在客户端的 core-site.xml 中加入以下内容,只需信任库即可,因为客户端只负责验证服务端证书。
core-site.xml(客户端)
hadoop.ssl.enabled
true
hadoop.ssl.truststore.location
/etc/hadoop/ssl/ca-cert.pem
hadoop.ssl.truststore.password
your_truststore_password
6. 测试加密传输
最后一步,用常见的HDFS命令测试一下数据传输是否正常。比如列出根目录,如果没报错就说明已经走SSL加密了。
# 列出HDFS目录内容
hdfs dfs -ls /
通过以上步骤,就能在CentOS上为HDFS的数据传输加上一层SSL/TLS加密。生产环境中记得用强密码,并妥善管理证书的存放和更新。
