HTTPS hostname wrong: should be <xxx>错误解决
我们在安装hadoop启用kerberos时,启动namenode遇到一个错误,显示出错信息为:
HTTPS hostname wrong: should be <dmp-hdfs-ns1>
网上搜了一圈,都是说让写一段代码JRE相信所有的证书和对系统的域名和证书域名,但是我们是安装hadoop,总不能去改别人的程序吧!
后来反复研究了一下,才发现,网上openssl 导入证书时有个关键点没说清楚,导致机器名和证书owner不一样,所以出现这个问题,解决方法:
1、生成辩证书命令:
openssl req -new -x509 -keyout hdfs_ca_key -out hdfs_ca_cert -days 36500 -subj '/C=CN/ST=jiangsu/S=xuzhou/L=yunlong/O=xcmg/OU=fin_tech/CN=$HOSTNAME'
关键是CN要是你的服务器名,比如我的机器名是dmp-hdfs-ns1,这里用$HOSTNAME确保正确
2、导入证书:
export sname="CN="$HOSTNAME", OU=fintech, O=xcmg, L=yunlong, ST=xuzhou, C=CN"
keytool -keystore keystore -alias $HOSTNAME -validity 36500 -genkey -keyalg RSA -keysize 2048 -dname "$sname"
这一步最关键,CN域一定要是服务器名
下面就按教程一步步生成keystore和truststore就没问题了:
# 2 输入密码和确认密码:admin123,提示是否信任证书:输入yes,此命令成功后输出truststore文件
keytool -keystore truststore -alias CARoot -import -file hdfs_ca_cert# 3 输入密码和确认密码:admin123,此命令成功后输出cert文件
keytool -certreq -alias $HOSTNAME -keystore keystore -file cert
keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12# 4 此命令成功后输出cert_signed文件
openssl x509 -req -CA hdfs_ca_cert -CAkey hdfs_ca_key -in cert -out cert_signed -days 36500 -CAcreateserial -passin pass:admin123# 5 输入密码和确认密码:admin123,是否信任证书,输入yes,此命令成功后更新keystore文件
keytool -keystore keystore -alias CARoot -import -file hdfs_ca_cert# 6 输入密码和确认密码:admin123
keytool -keystore keystore -alias $HOSTNAME -import -file cert_signed