目录

OpenSSL 自签名证书

基本概念

名词 含义
ca 电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任
csr 证书签名请求 一般是生成请求以后发送给 CA,然后 CA 会给你签名并发回证书
x509 密码学里公钥证书的格式标准。X.509 证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构 CA 的签名,也可以是自签名)
crt 证书文件 ,可以是 DER(二进制)编码的,也可以是 PEM( ASCII (Base64) )编码的 ,在类 unix 系统中比较常见
cer 也是证书 常见于 Windows 系统 编码类型同样可以是 DER 或者 PEM 的,windows 下有工具可以转换 crt 到 cer
key 一般公钥或者密钥都会用这种扩展名,可以是 DER 编码的或者是 PEM 编码
p12 证书 包含一个 X509 证书和一个被密码保护的私钥
san SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。

注意:

  • x509 有多种常用的拓展名

查看公钥的内容命令为:openssl rsa -noout -text (-inform DER/PEM) -in cakey.key

查看证书的内容命令为:openssl x509 -noout -text (-inform der) -in cacert.crt

  • PEM 转为 DER:openssl x509 -in cacert.crt -outform der -out cacert.der
  • DER 转为 PEM:openssl x509 -in cert.crt -inform der -outform pem -out cacert.pem

自签名证书类型

  • 自签名证书
  • 自建 CA 签名的证书

自签名的证书无法被吊销,CA 签名的证书可以被吊销,能不能吊销证书的区别在于如果私钥不小心被恶意获取,如果证书不能被吊销那么黑客很有可能伪装成受信任的客户端与用户进行通信。
如果你的规划需要创建多个客户端证书,那么使用自建 CA 签名证书的方法比较合适,只要给所有的客户端都安装了 CA 根证书,那么以该 CA 根证书签名过的客户端证书都是信任的,不需要重复的安装客户端证书。

CA 证书就是CA颁发的证书。我们常听到的数字证书就是CA证书,CA证书包含信息有:证书拥有者的身份信息CA机构的签名公钥和私钥

  1. 身份信息: 用于证明证书持有者的身份
  2. CA机构的签名: 用于保证身份的真实性
  3. 公钥和私钥: 用于通信过程中加解密,从而保证通讯信息的安全性

自签名证书

生成私钥

1
openssl genrsa -out server.key 4096

生成证书签名请求

1
openssl req -new -key server.key -out server.csr

生成 CSR 的过程中,会提示输入一些信息,其中一个提示是 Common Name (e.g. YOUR name),这个非常重要,这一项应填入 FQDN(Fully Qualified Domain Name)完全合格域名/全称域名,如果您使用 SSL 加密保护网络服务器和客户端之间的数据流,举例被保护的网站是 https://test.chinacloudsites.cn那么此处 Common Name 应输入 test.chinacloudsites.cn

签发证书

1
 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

一步生成私钥证书

1
openssl req -new -x509 -newkey rsa:4096 -keyout server.key -out server.crt

自建 CA 签名的证书

生成根证书私钥

1
openssl genrsa -out ca.key 2048

生成根证书签名请求

1
openssl req -new -in ca.key -out ca.csr

生成根证书

1
openssl x509 -req -in ca.csr -signkey ca.key -extensions v3_ca -out ca.crt

签发客户端证书

1、新建证书私钥

1
openssl genrsa -out client.key 2048

2、新建证书签名请求

与上述生成证书签名请求信息一致

1
openssl req -new -in client.key -out client.csr

3、CA 签发客户端证书

1
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt

4、验证 CA 证书有效性

1
openssl verify -CAfile ca.crt client.crt

5、吊销证书 参考资料

参考

「# OpenSsl 子命令 genrsa, rsa, req, x509」
「# 自签名证书和 CA 证书的区别和制作、使用」
「# 如何用 OpenSSL 创建自签名证书」
「# 秒懂 Https 之 CA 证书与自签名证书漫谈」