安装说明:我是自己搭建的三台虚拟机hadoop01/hadoop02/hadoop03,生成CA证书hdfs_ca_key和hdfs_ca_cert只需要在任意一台节点上完成即可,其他每个节点包括生成证书的节点都需要执行第四步以后的操作,且必须使用root用户执行以下操作:
1.在hadoop01节点生成CA证书,需要输入两次密码,其中CN:中国简称;ST:省份;L:城市;O和OU:公司或个人域名;hadoop01是生成CA证书主机名
openssl req -new -x509 -keyout hdfs_ca_key -out hdfs_ca_cert -days 9999 -subj /C=CN/ST=shanxi/L=xian/O=hlk/OU=hlk/CN=hadoop01
2.将hadoop01节点上生成的CA证书hdfs_ca_key、hdfs_ca_cert分发到每个节点上的/tmp目录下
scp hdfs_ca_key hdfs_ca_cert $host:/tmp
3.发送完成后删除hadoop01节点上CA证书
rm -rf hdfs_ca_key hdfs_ca_cert
4.在每一台机器上生成keystore和trustores(注意:集群中每个节点都需要执行以下命令)
4.1 生成keystore,这里的keytool需要java环境,否则command not found
name="CN=$HOSTNAME, OU=hlk, O=hlk, L=xian, ST=shanxi, C=CN"
#需要输入第一步输入的密码四次
keytool -keystore keystore -alias localhost -validity 9999 -genkey -keyalg RSA -keysize 2048 -dname "$name"
4.2 添加CA到truststore,同样需要输入密码
keytool -keystore truststore -alias CARoot -import -file hdfs_ca_cert
4.3 从keystore中导出cert
keytool -certreq -alias localhost -keystore keystore -file cert
4.4 用CA对cert签名
openssl x509 -req -CA hdfs_ca_cert -CAkey hdfs_ca_key -in cert -out cert_signed -days 9999 -CAcreateserial
4.5 将CA的cert和用CA签名之后的cert导入keystore
keytool -keystore keystore -alias CARoot -import -file hdfs_ca_cert
keytool -keystore keystore -alias localhost -import -file cert_signed
4.6 将最终keystore,trustores放入合适的目录,并加上后缀jks
mkdir -p /etc/security/https && chmod 755 /etc/security/https
cp keystore /etc/security/https/keystore.jks
cp truststore /etc/security/https/truststore.jks
4.7 删除/tmp目