概述

TLS 技术可被用应用于下列需求场景:

  1. 你希望实现端到端的数据传输保密性,即任何中间节点不知道两端之间传的内容真正是什么,事实上中间节点只能看到加密后的密文;
  2. 你希望保证端到端的数据传输完整性,也就是说你希望假如数据在传输的途中被非预期地篡改了,那么接收端一定有办法检测出来;
  3. 你希望确立另一端的身份真实性,亦即对方确实是其所声称的,具体地,当传输管道的另一端声称其代表某个主体 example.com,那么你有办法验证对方到底是不是真的代表 example.com

TLS 技术的应用,连同围绕着它的公钥基础设施一起,共同实现以上三个需求,并且这使得它在网银、电子邮件、社交网络网站等现实生产环境中被高度依赖。

x509 证书的取得

使用了 TLS 技术的应用程序需要用证书进行非对称加密,这样的非对称加密过程主要在 TLS 握手的过程中,通过不可靠信道交换 shared secret 的时候用到。还有就是需要用证书的公钥来验证 TLS 握手的过程中对端传来的证书的签名是否符合。

通过公共证书权威主体取得签发的 x509 证书

通过公共 CA 取得证书,步骤如下:

  1. 你创建自己的私钥 (s);
  2. 你用自己创建的私钥 s 签发一个证书签发请求 Certificate Signing Request,简称 CSR;
  3. 你把你自签的 CSR 通过可靠信道发送给 CA;
  4. CA 根据 CSR 上的信息创建一个 x509 证书,复制一些 CA 自己的证书的信息上去,然后用自己的私钥对其进行签名;输出一个你的服务器证书 c,c 上面应该包含 CA 自己的证书的指纹,你的服务器的域名,你的主体信息等;
  5. CA 把你的服务器证书 c 通过可靠信道发回给你,可能还会连同它自己的中间证书一起发送(我们把你的服务器证书 c 和中间证书连起来的这种叫做 fullchain 证书);
  6. 你把服务器证书 c 连同它对应的私钥 s 一起部署到需要使用 TLS 技术的应用程序上。

私有 PKI

步骤类似通过公共 CA 签发证书,只不过在这里,你自己也要扮演 CA 的角色。

私有 PKI 的好处是证书的签发和分发不需要依赖于全球互联网,此过程可在完全的私有化部署环境中进行。