文章目录
CA证书
CA证书是证书颁发机构(Certificate Authority)颁发的证书,用于在互联网通信中建立信任关系,是SSL/TLS协议实施中不可或缺的一部分,使得传输的数据加密并保证通信安全。
CA证书的颁发过程包括:
- 申请:个人或组织向CA提交证书申请。
- 验证:CA对申请者进行身份验证。
- 颁发:验证通过后,CA颁发数字证书。
- 吊销:如果证书需要被撤销,CA将其添加到CRL。
知名的CA机构包括DigiCert、Sectigo(前身为Comodo)、Thawte、GeoTrust和Let’s Encrypt等。其中,Let’s Encrypt是一个提供域名验证SSL证书的开源CA,而其他机构则提供更广泛的证书服务,包括不同验证级别的证书。
DigiCert root ca证书可以在DigiCert官网下载获取:
DigiCert Root Certificates - Download & Test | DigiCert.com
一、服务器证书
1. 生成服务器私钥
openssl genrsa -out server.key 2048
私钥加密
openssl rsa -in server.key -passout pass:password -out decry_server.key
2. 创建服务器证书签名请求csr
openssl req -new -key server.key -out server.csr
3. 使用ca证书和私钥签署服务器证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
二、客户端证书
1. 生成客户端私钥
openssl genrsa -out client.key 2048
私钥加密
openssl rsa -in client.key -passout pass:password -out decry_client.key
2. 生成客户端证书签名请求csr
openssl req -new -key client.key -out client.csr
3. CA 证书签署客户端证书
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256
三、哈希散列证书存储
ca证书文件中存在较多证书时,内存占用较大;可以通过capath方式,按需装载校验对端所需的CA证书,指定证书路径,openssl就可以通过路径查找能够使用的证书。
哈希链接的文件名通常是证书文件名的哈希值,链接指向实际的证书文件。当 OpenSSL 需要查找特定证书时,它可以通过哈希链接快速定位到证书文件,而不必遍历目录中的所有文件,使得 OpenSSL 能够更快地查找和验证证书。
1. 通过hash命令为证书目录下文件创建哈希链接
openssl rehash ./
四、其它命令
证书验证:
openssl verify -CAfile ca.crt server.crt
查看证书信息:
openssl x509 -in client.crt -text -noout
创建证书链:
cat serve.crt server_a.crt > chain.crt
生成随机数:
openssl rand -hex 16