SSL:证书文件
一. 证书相关文件格式
证书相关文件有多种格式,常见格式:.crt
,.key
,.req
,.csr
,.pem
,.der
。
xx.crt
:证书文件
xx.key
:私钥文件
xx.req
:请求文件
xx.csr
:请求文件
xx.pem
:证书文件为 pem
格式(文本文件)
xx.der
:证书文件为 der
格式(二进制文件)
实际上,上述文件的扩展名可以随意命名。只是为了容易理解文件的功能而选择大家都认识的命名方式。但是,上述文件是有格式的,只能是 pem
格式或者 der
格式。使用什么格式的文件取决于需求。
pem
格式的文件为文本文件,内容分别为:
证书文件:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
私钥文件:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
请求文件:
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----
二. 证书种类
证书分为根证书、服务器证书、客户端证书。根证书文件(ca.crt
)和根证书对应的私钥文件(ca.key
)由 CA(证书授权中心,国际认可)生成和保管。那么服务器如何获得证书呢?向 CA 申请!步骤如下:
- 服务器生成自己的公钥(
server.pub
)和私钥(server.key
)。后续通信过程中,客户端使用该公钥加密通信数据,服务端使用对应的私钥解密接收到的客户端的数据; - 服务器使用公钥生成请求文件(
server.req
),请求文件中包含服务器的相关信息,比如域名、公钥、组织机构等; - 服务器将
server.req
发送给 CA。CA 验证服务器合法后,使用ca.key
和server.req
生成证书文件(server.crt
)——使用私钥生成证书的签名数据; - CA 将证书文件(
server.crt
)发送给服务器。
由于ca.key
和 ca.crt
是一对,ca.crt
文件中包含公钥,因此 ca.crt
可以验证 server.crt
是否合法——使用公钥验证证书的签名。
三. 验证方式
验证方式分为单向验证和双向验证。
单向验证
单向验证是指通信双方中一方验证另一方是否合法。通常是指客户端验证服务器。
客户端需要:ca.crt
服务器需要:server.crt
,server.key
PS:我们平时使用 PC 上网时使用的就是单向验证的方式。即,我们验证我们要访问的网站的合法性。PC 中的浏览器(火狐、IE、chrome等)已经包含了很多 CA 的根证书(ca.crt
)。当我们访问某个网站(比如:https://www.baidu.com)时,网站会将其证书(server.crt
)发送给浏览器,浏览器会使用 ca.crt
验证 server.crt
是否合法。如果发现访问的是不合法网站,浏览器会给出提示。
现实中,有的公司会使用自签发证书,即公司自己生成根证书(ca.crt
)。如果我们信任此网站,那么需要手动将其证书添加到系统中。
双向验证
双向验证是指通信双方需要互相验证对方是否合法。服务器验证客户端,客户端验证服务器。
客户端需要:ca.crt
,client.crt
,client.key
服务器需要:ca.crt
,server.crt
,server.key
双向验证通常用于支付系统中,比如支付宝。我们在使用支付宝时必须下载数字证书,该证书就是支付宝颁发给针对我们这台机器的证书,我们只能使用这台机器访问支付宝。如果换了机器,那么需要重新申请证书。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。