write in front
大家好,我是N阶二进制.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
本文由N阶二进制原创 CSDN首发 如需转载还请通知⚠️
个人主页:N阶二进制—CSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏:N阶二进制的openssl学习系列专栏——CSDN博客
OpenSSL 是一个开源的加密和解密工具,它提供了一系列命令来操作证书和密钥。以下是一些常用的 OpenSSL 命令,用于操作证书的详细解释:
生成自签名证书是指在没有经过任何第三方证书颁发机构(CA,Certificate Authority)的认证下,由个人或组织自行创建和签名的数字证书。自签名证书可以用于安全通信,但在实际应用中,它们通常用于测试、开发和内部使用,而不是在公共网络中使用,因为它们没有受到可信任 CA 的验证,可能会引发安全问题。
在使用自签名证书时,虽然可以加密通信,但客户端在连接时通常会受到浏览器或应用程序的警告,因为自签名证书没有被受信任的 CA 颁发。这样的警告可能导致用户对网站或应用程序的信任度下降。
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
req
:表示证书请求命令。-x509
:表示生成自签名证书。-newkey rsa:4096
:表示生成一个 RSA 密钥,长度为 4096 位。-keyout key.pem
:指定私钥输出文件名。-out cert.pem
:指定证书输出文件名。-days 365
:证书有效期为 365 天。证书请求(Certificate Signing Request,CSR)是一个数据文件,它包含了在申请数字证书时,证书请求者(通常是服务器管理员或网站所有者)向证书颁发机构(CA,Certificate Authority)提供的信息。CSR 包含了以下重要信息:
公钥(Public Key): CSR 包含了用于加密和解密通信的公钥。证书颁发机构会使用这个公钥创建数字证书,而与之配对的私钥则由证书请求者保密,用于解密加密的数据。
组织信息(Organization Information): CSR 包含了证书请求者的组织信息,包括组织名称、组织单位、城市、州/省、国家等。这些信息将出现在最终签发的数字证书中。
公钥算法(Public Key Algorithm): CSR 中会指定使用的公钥加密算法,常见的包括 RSA、ECDSA 等。
证书用途(Certificate Purpose): CSR 中可以指定证书的用途,例如加密通信、数字签名等。
主题备用名称(Subject Alternative Name,SAN): SAN 允许证书请求者指定多个域名或主机名,这在多域名证书或通配符证书的申请中非常有用。
数字签名(Digital Signature): CSR 包含了证书请求者使用其私钥对 CSR 数据进行签名的数字签名。这个签名用于证明 CSR 的完整性,确保在传输过程中没有被篡改。
在向 CA 提交 CSR 后,CA 将使用 CSR 中的公钥信息创建数字证书,并将该证书返回给证书请求者。证书请求者随后可以将这个证书用于加密通信、建立安全连接等目的。CSR 通常是由服务器软件(如Apache、Nginx)的管理员生成,并在购买 SSL/TLS 证书时提供给 CA。
openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
req
:表示证书请求命令。-newkey rsa:2048
:表示生成一个 RSA 密钥,长度为 2048 位。-keyout key.pem
:指定私钥输出文件名。-out req.pem
:指定证书请求输出文件名。openssl x509 -in cert.pem -text -noout
x509
:表示操作 X.509 证书。-in cert.pem
:指定要查看的证书文件。-text
:以文本形式显示证书信息。-noout
:不输出证书本身,只输出证书信息。openssl x509 -in cert.der -outform PEM -out cert.pem
-in cert.der
:指定输入的 DER 格式证书文件。-outform PEM
:指定输出格式为 PEM。-out cert.pem
:指定输出的 PEM 格式证书文件。openssl x509 -in cert.pem -outform DER -out cert.der
-in cert.pem
:指定输入的 PEM 格式证书文件。-outform DER
:指定输出格式为 DER。-out cert.der
:指定输出的 DER 格式证书文件。这些命令涵盖了使用 OpenSSL 创建、查看和转换证书的基本操作。在实际使用中,你可以根据需要使用这些命令,并根据具体的场景进行调整。
根证书(Root Certificate)就是自签名证书,不过签发机构不同,他有就有区别,它们之间有以下区别:
颁发者和使用者是同一个实体: 自签名证书是由实际使用该证书的实体(通常是个人、组织或设备)自行创建和签名的证书。颁发者和使用者是同一个实体,没有第三方 CA 参与。
信任度较低: 自签名证书在公共网络中信任度较低,因为它们没有受到受信任的第三方 CA 的验证。当客户端连接到使用自签名证书的服务时,通常会收到安全警告,用户需要手动确认是否信任该证书。
用途有限: 自签名证书通常用于内部测试、开发环境或局域网中,而不是在公共网络中使用。它们提供了加密通信的能力,但没有得到广泛信任。
由受信任的 CA 颁发: 根证书是由受信任的证书颁发机构(CA)签名并颁发的证书。CA 是一个受信任的实体,它通过验证证书请求者的身份,并签发数字证书。根证书是 CA 的根证书,它本身是自签名证书。
信任度高: 根证书由操作系统、浏览器等软件内置,因此被广泛信任。当使用者收到由受信任 CA 签发的证书时,不会收到安全警告,因为这些证书是受信任的。
广泛用于公共网络: 根证书和由它签发的中间证书(Intermediate Certificate)通常用于公共网络中,例如用于加密网站的 HTTPS 通信。这些证书能够建立安全的、受信任的通信连接。
总之,自签名证书是由使用者自行创建的证书,信任度较低,用途有限;而根证书是由受信任的 CA 签发的证书,信任度高,广泛用于公共网络中,确保了通信的安全性和可信度。
PEM(Privacy-Enhanced Mail)格式和DER(Distinguished Encoding Rules)格式是两种常见的编码格式,用于表示证书、密钥和其他数据。它们之间的主要区别在于编码的方式和文件的扩展名。
编码方式: PEM 格式使用 Base64 编码将二进制数据转换为文本形式,并在数据开始和结束部分加上标头和尾部,以及可能的附加信息(如"BEGIN CERTIFICATE"和"END CERTIFICATE")。
文件扩展名: PEM 格式的文件通常以 .pem
、.crt
、.cer
或 .key
结尾。
可读性: 由于使用 Base64 编码,PEM 格式的文件是文本文件,可以被文本编辑器打开查看,也可以在终端中输出查看内容。
支持的数据类型: PEM 格式可以用来表示证书(包括 X.509 证书)、私钥、公钥等。
示例:
-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgIJAIy5SKhfUEzaMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
...
KdhHdX5HkPLKkwrEBVRa9UW4dxAjUzpPjV4rxLz03R99NZPH8Q==
-----END CERTIFICATE-----
编码方式: DER 格式使用二进制编码,将数据以二进制形式保存,不经过 Base64 编码。
文件扩展名: DER 格式的文件通常以 .der
或 .cer
结尾。
可读性: DER 格式的文件是二进制文件,不可读,需要专用的工具或编程语言解析。
支持的数据类型: DER 格式同样可以用来表示证书、私钥、公钥等。
DER 格式没有示例文本,因为它是二进制编码的数据。
区别总结:
编码方式: PEM 使用 Base64 编码,DER 使用二进制编码。
文件扩展名: PEM 格式通常以 .pem
、.crt
、.cer
或 .key
结尾,DER 格式通常以 .der
或 .cer
结尾。
可读性: PEM 格式是文本文件,可以被文本编辑器打开查看,而 DER 格式是二进制文件,不可读。
在实际使用中,PEM 格式常用于人可读的配置文件,而 DER 格式通常用于机器间的数据交换,因为它更紧凑且不需要进行 Base64 编码解码。