OpenSSL 是什么?
OpenSSL 是开源的程序套件,该套件由三部分组成:
-
libcrypto
:具有通用功能的加密库,里面包含众多加密算法 -
libssl
:实现 SSL/TLS 功能 -
openssl
:多功能的命令行工具,可以实现加密、解密、自建 CA、创建证书、吊销证书等功能
本文主要介绍如何使用 OpenSSL 自建 CA,生成 SSL 证书、吊销证书。
基础概念
-
非对称加密:
对称加密算法在加密和解密时,使用同一密钥。非对称加密算法需要两个密钥,即公开密钥和私有密钥,公开密钥和私有密钥是一对。用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。因为加密和解密使用两个不同的密钥,所以这类算法叫非对称加密算法。
在非对称加密中,使用的主要算法包括 RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密
-
Private Key:
证书的私钥,PEM 格式,通常使用 RSA 算法生成。在生成私钥时,可以指定密码对其进行保护
-
CSR(Certificate Signing Request,证书签名请求):
用于申请证书,在制作 CSR 文件时,需要使用私钥文件。CSR 文件必须由 CA 进行签名,才可形成证书(CRT)
-
CRT(数字证书):
数字证书是经过证书授权中心(CA)签名的、包含公开密钥拥有者信息和公开密钥的文件。数字证书的一个重要特征是 - 只在特定的时间段内有效。以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密,数字签名和签名认证,确保传输信息的机密性、完整性、不可抵赖性:
-
保密性 - 只有收件人才能阅读信息
-
认证性 - 确认信息发送者的身份
-
完整性 - 信息在传递过程中不会被篡改
-
不可抵赖性 - 发送者不能否认已发送的信息
数字证书的颁发过程一般为:
-
用户首先产生自己的密钥对
-
将公共密钥和部分个人身份信息传递给证书授权中心
-
证书授权中心在核实用户身份后,将给用户颁发数字证书,其中包含用户的身份信息和公共密钥,同时还附有证书授权中心的签名信息
数字证书工作原理:
-
使用接收双方约定的 HASH 算法对报文计算出固定位数的摘要。在数学上保证:只要改动报文中的任何一位,重新计算出的报文摘要值就与原先的值不相符。这样即可保证报文的不可更改性
-
使用发送者的私钥对报文摘要值进行加密,然后连同原报文一起发送给接收者,加密后的报文摘要即为数字签名
-
接收方收到数字签名后,用同样的 HASH 算法对原报文计算出报文摘要值,然后与使用发送者的公开密钥对数字签名进行解密得到的报文摘要值进行比较,如果相等,则说明报文确实来自所称的发送者
-
之所以对报文摘要进行加密,而不是对原报文进行加密,是因为 RSA 加解密非常耗时,被加密的报文越大,耗时越多
证书的内容包括:CA 信息、公钥用户的信息、公钥、CA 的签名和有效期等。证书的格式和验证方法普遍遵循 X.509 国际标准
-
CA(Certificate Authority,证书授权中心):
CA 是负责发放和管理数字证书的权威机构,作为受信任的第三方,承担公钥体系(PKI)中公钥的合法性检查的责任。
CA 也拥有一个证书(内含公钥)和私钥。用户通过验证 CA 的签名从而信任证书,任何人都可以得到 CA 的证书,用以验证它所签发的证书。
如果用户想要鉴别证书的真伪,需要用 CA 的公钥对证书上的签名进行验证,一旦通过,认为证书有效
-
证书链(Certificate Chain)
</