一 .前言
默认情况下, CentOS和RedHat5.5或更高的版本中,对Kerberos 票证使用AES-256加密,因此必须在集群所有节点的JDK中安装Java Cryptography Extension(JCE)无限制强度加密策略文件。
如果没装的话, 会发生Hadoop中NameNode和DataNode连接不上的问题.
报错信息:
Encryption type AES256 CTS mode with HMAC SHA1-96 is not supported/enabled
2021-03-28 17:55:47,809 WARN SecurityLogger.org.apache.hadoop.ipc.Server: Auth failed for 192.168.xx.xx:38815:null (GSS initiate failed) with true cause: (GSS initiate failed)
2021-03-28 17:55:51,526 WARN SecurityLogger.org.apache.hadoop.ipc.Server: Auth failed for 192.168.xx.xx:40625:null (GSS initiate failed) with true cause: (GSS initiate failed)
2021-03-28 17:55:52,930 WARN SecurityLogger.org.apache.hadoop.ipc.Server: Auth failed for 192.168.xx.xx:33090:null (GSS initiate failed) with true cause: (GSS initiate failed)
2021-03-28 17:55:57,173 WARN SecurityLogger.org.apache.hadoop.ipc.Server: Auth failed for 192.168.:46619:null (GSS initiate failed) with true cause: (GSS initiate failed)
注意:使用JDK 1.8.0_161或更高版本时,不需要再安装JCE Policy File。JDK 1.8.0_161默认启用无限强度加密。
二 .安装
2.1. 环境说明
组件 | 版本 |
---|---|
操作系统 | CentOS 7.6 |
JDK | 低于 JDK 1.8.0_161 [ JDK 1.8.0_16无需要安装JCE,默认启用无限强度加密 ] |
Kerberos | krb5 |
2.2. 获取JCE
JCE8 下载地址:
官方 : http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
百度云盘: https://pan.baidu.com/s/1JufwkAkPlU3kS3dSQAhLsQ 密码: hv7c
2.3. 安装
- 随便找一个目录, 解压 unzip jce_policy-8.zip , 获取到UnlimitedJCEPolicyJDK8文件夹
# 解压
[root@master01 software]# unzip jce_policy-8.zip
# 查看文件
[root@master01 software]# ll UnlimitedJCEPolicyJDK8/
总用量 24
-rw-r--r-- 1 root root 5372 3月 28 19:18 local_policy.jar
-rw-r--r-- 1 root root 7921 3月 28 19:18 README.txt
-rw-r--r-- 1 root root 5373 3月 28 19:18 US_export_policy.jar
[root@master01 software]#
- 备份 ${JAVA_HOME}/jre/lib/security目录.
cd ${JAVA_HOME}
cp -r ${JAVA_HOME}/jre/lib/security ${JAVA_HOME}/jre/lib/security_bak
- 把UnlimitedJCEPolicyJDK8目录下的所有jar包(US_export_policy.jar和local_policy.jar)拷贝至集群
所有节点
的${JAVA_HOME}/jre/lib/security目录下
cp UnlimitedJCEPolicyJDK8/*.jar ${JAVA_HOME}/jre/lib/security
2.3. 验证
安装完成, 重启相关服务即可(比如kerberos/hadoop相关服务).
- 重启KDC服务
# 启用krb5kdc
systemctl enable krb5kdc
# 重启
systemctl restart krb5kdc
# 启动
systemctl start krb5kdc
# 停止
systemctl stop krb5kdc
#查看状态
systemctl status krb5kdc
#设置为开机启动
systemctl enable krb5kdc.service
- 重启kerberos服务
# 启用kadmin
systemctl enable kadmin
# 重启
systemctl restart kadmin
# 启动
systemctl start kadmin
# 停止
systemctl stop kadmin
#查看状态
systemctl status kadmin
#设置为开机启动
systemctl enable kadmin.service