目录
Step 6 将CA证书和用CA签名后的证书导入到keystore
Step 7 将keystore、trustsore拷贝到配置目录,并添加jks扩展名
1 案例目标
为Hadoop集群制作SSL证书,以便后续进行Shuffle加密
2 环境要求
Hadoop完全分布式集群
主机 | Hadoop功能 |
---|---|
hadoop01 | namenode/resourceManager/作业提交客户端 |
hadoop02 | datanode/nodeManager |
hadoop03 | datanode/nodeManager |
3 知识储备
-
密钥:包含公钥+私钥
公钥的用途:
-
验证对方身份:防止其他人假冒对方向你发送数据
-
解密
私钥的用途:
-
表明自己的身份
-
加密
-
-
证书:数字证书是指CA( Certificate Authority)机构发行的一种电子文档,是一串能够表明网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方式,因此数字证书又称为数字标识。数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。
-
根证书:由CA机构签发,可以为其他证书进行签名,通常需要加入到受信库(truststore)中
-
keytool:Java数字证书管理工具
-
keystore:keytool生成的密钥库文件,存储密钥(key)和证书(certificates),Keystore包含:
-
密钥实体(密钥:公钥+私钥)
-
可信任的证书实体,只包含公钥
-
-
truststore:存储可以信任证书的文件(受信库),和keystore的区别在于truststore只包含公钥的数字证书,而keystrore则包含私钥
-
jks:Java key store,Java用于存储密钥的容器
-
cer文件:用于存储证书公钥的文件,包括序列号,发布方标识,主体标识,证书算法,证书有效期,签名算法,版本号,公钥等
4 案例流程
-
使用openssl制作根证书
-
产生客户端/服务端keystore
-
将根证书添加到truststore
-
对keystore中的证书签名
-
将根证书,签名后证书添加到keystore
-
在集群SSL配置目录下保存keystore和truststore
5 案例实践
Step 1 为hadoop01节点生成根证书
执行如下命令为namenode(nodemanager)节点生成证书:
openssl req -new -x509 -keyout namenodehost_ca_key -out namenodehost_ca_cert -days 9999 -subj /C=CN/ST=guangdong/L=shenzhen/O=demo/OU=demo/CN=hadoop01
这里我的密码设置与主机登录root密码一致
说明:
-
OpenSSL:开源项目,可以进行证书管理,对称加密和非对称加密等,包含三个组件:openssl(命令行工具)、libcrypto(加密算法库)、libssl(实现ssl,tls的加密模块库)
-
openssl req -new -x509: 生成自签名证书(x509是一种证书格式,只有公钥,不含私钥)
-
-keyout:生成自签名证书时自动生成密钥,文件名由后面的参数指定(namenodehost_ca_key:密钥文件)
-
-out:指定自签名证书文件名
-
-days:证书过期时间
-
-subj:证书相关的用户信息(subject的缩写)
-
CN:中国简称;ST:省份;L:城市;O和OU:公司或个人域名;namenodehost823是生成CA证书主机名
-
最后生成两个文件:namenodehost_ca_key(保存私钥),namenodehost_ca_cert(x509格式证书,只包含公钥)
执行结果:
注意:在这里不要直接按enter回车,需要输入一个密码,重复输入两次,进行验证即可生成
以上为直接按“回车键”报错,无法生成
以上为第一次输入面与