openssl 生成私有CA 及签署证书
openssl 配置文件: /etc/pki/tls/openssl.cnf
1. 在openssl CA 服务器端生成私钥
cd /etc/pki/CA/private/
(umask 077;openssl genrsa -out ./cakey.pem 4096)
( ) : 表示在子shell中运行进程
umask 077 : 表示文件仅自己可读写
genrsa : 使用rsa 加密方式生成密钥对
-out : 密钥输出文件位置
4096 : 表示生成4096位密钥对
2. 在 CA 服务器端生成 CA 自签证书
cd /etc/pki/CA/
openssl req -x509 -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
-x509 : 仅在CA自签署证书时使用
-new : 表示生成新的证书
-key : 指向第一步生成的私钥文件 (会从私钥文件中提取私钥生成公钥)
-days : 证书有效时长
-out : 证书输出位置
3. 为CA 服务器端生成必要的目录和文件
mkdir /etc/pki/CA/{certs,crl,netcerts} (如果目录已存在无需创建)
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial
待签署客户端操作
1. 生成私钥
cd /etc/http/ssl/
(umask 077;openssl genrsa -out /etc/http/ssl/private.pem 4096)
2. 生成证书
openssl req -new -key /etc/http/ssl/private.pem -out /etc/http/ssl/http.pem -day 365
3. 将生成的证书文件拷贝到CA服务器
scp /etc/http/ssl/http.pem [email protected]:/tmp/
4. 在CA 服务器签署证书
openssl ca -in /tmp/http.pem -out /etc/pki/CA/http.pem -days 365
提示相关确认请求输入 yes
至此证书以签署完毕 ,将 /etc/pki/CA/http.pem 拷贝至待签署客户端 即可
查看证书操作: openssl x509 -in /etc/pki/CA/http.pem -noout -serial -subject
openssl 加密解密基础知识
安全的目的: 保密性
完整性
可用性
常见加密算法:
对称加密算法: DES,3DES,AES,...
单向加密算法: md5,sha1,sha256,sha384,sha512 ..... (用于实现数据完整性)
公钥加密 : 和与之配对的私钥成对,用于数字签名,验证主体身份
密钥交换 : DH
httpS 协议的交互过程:
假设 A client 向 B server 发送页面访问请求
1. A 向 B 发送证书请求
包含内容: A 当前http浏览器支持的加密算法与协议
支持的压缩算法
支持的协议类型 ssl or TLS 1.x
生成随机数 (用于与对端的随机数结合生成加密密钥,用于对端对称加密用)
2. B 向A 发送自己的证书
包含内容: 确定通信加密算法与协议
确定通信协议版本 ssl or TLS 1.x
自己的证书
随机数
3. A 验证B的证书
验证过程: 1. A使用CA的公钥解密B的证书
2. A使用单向加密算法对证书加密得到特征码,与证书特征码进行比对,确认证书完整性
3. 验证内容:
主体名称
证书有效期限
签发机构
证书是否被吊销
验证结束发送信息给B
发送内容:
一个随机数
编码变更通知 (表示随后的信息由双方协商的加密算法进行通信)
客户端握手结束
4. B 受到 A 发来的第三个随机数 pre-master-key后,计算本次会话的密钥;
向客户端发送如下信息:
编码变更通知
服务端握手结束