什么是证书颁发机构(CA)?

A 认证中心(CA),有时也称为 认证机构,是一家公司或组织,负责验证实体(例如网站,电子邮件地址,公司或个人)的身份,并通过发行称为“电子文件”的电子文件将其绑定到加密密钥 数字证书。 数字证书提供:

  • 认证,作为凭证来验证颁发给该实体的实体的身份。
  • 加密, 用于通过不安全的网络(例如Internet)进行安全通信。
  • 诚信 文件 并附有证明书,以免运输中的第三方更改。

证书颁发机构图

通常,数字证书的申请人会生成一个 密钥对 由一个 私钥 的网络 公钥,还有一个 证书签名请求(CSR)。 一个 CSR 是一个编码的文本文件,其中包含公钥和其他将包含在证书中的信息(例如域名,组织,电子邮件地址等)。 密钥对和 CSR 生成通常在将安装证书的服务器或工作站上完成,并且证书中包含的信息类型 CSR 根据验证级别和证书的预期用途而有所不同。 与公钥不同,申请人的私钥是安全的,永远不要向CA(或其他任何人)展示。

生成后 CSR,申请人将其发送给CA,CA会独立验证其包含的信息是否正确,如果是,则使用颁发的私钥对证书进行数字签名,然后将其发送给申请人。

当将签名的证书提交给第三方时(例如,当该人访问证书持有者的网站时),接收者可以通过CA的公钥以密码方式确认CA的数字签名。 此外,接收者可以使用证书来确认已签名的内容是由拥有相应私钥的人发送的,并且自信息被签名以来,该信息尚未更改。

请注意:

尽管任何组织(例如公司部门或政府机构)都可以运营CA,但是SSL.com之类的商业CA可以出于诸如HTTPS网站, S/MIME 电子邮件,代码和文档签名,而无需维护公众信任和经过审核的麻烦 PKI。 SSL.com提供 托管 PKI公共或私人信托商科政府 客户。

 

模拟 CA 颁发证书过程

1.构建私有 CA:

选项说明:

  • -new 生成新证书签署请求
  • -509 生成自签格式证书,专用于创建私有CA时
  • -key 生成请求时用到的私有文件路径
  • -out 生成的请求文件路径;如果自签操作将直接生成签署过得证书
  • -days 指定证书的时间

1.1 生成私钥

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

1.2 生成自签证书

openssl req -new x509 -key /etc/pki/CA/private/cakey -out /etc/pki/CA/cacert.pem -days 3650)

1.3 为 CA 提供所需要的目录及文件

mkdir /etc/pki/CA/{certs,crl,newcerts} -p
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial

 

2.向 CA 申请证书

需用到证书进行安全通信的服务器,则需要向 CA 请求签署证书,然后才可以进行安全通信。

2.1 用到证书的主机生成私钥

mkdir /etc/nginx/ssl
(uamsk 077;openssl genrsa -out /etc/nginx/ssl/nginx.key 2048)

2.2 生成证书签署请求

openssl req -new -key /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr -days 365

2.3 将请求通过可靠方式发送给 CA 主机

scp /etc/nginx/ssl/nginx.csr root@IP:PATH

2.4 在 CA e主机上签署证书

openssl ca -in /PATH/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 365

 

3.验证证书

3.1 查看证书信息

openssl x509 -in /etc/pki/CA/certs/nginx.crt -noout -serial -subject

3.2 验证https

openssl s_client -connect www.test.com:443 -CAfile /etc/pki/CA/cacert.pem

 

参考资料