跳到主要内容

SSL证书详解

· 阅读需 6 分钟
Week

在访问众多的网站中,相信大家都有遇到过下面的场景:

ssl

一般遇到这种情况,大多数都是点击高级继续访问,类似那种无视风险继续安装的意思。但其实这是浏览器在向你发出的一种警示信号,告诉你:访问这个IP地址的网站是不安全的。那么浏览器是如何得知的呢,答案就是证书

SSL协议

首先我们先了解一下ssl协议:

SSL(Secure Sockets Layer)协议是一种用于在计算机网络上安全传输数据的协议。它使用加密技术来确保在客户端和服务器之间传输的数据是安全的,不会被未经授权的人员窃取或篡改。通常用于保护网站上的敏感信息,例如登录凭据、信用卡信息等。

也就是说,这是一个信息传输过程中的安全加密协议,防止黑客的攻击,信息的泄露等。上图中的提示信息是如此,也是http+ssl协议实现了这样的效果。

工作原理是通过在客户端和服务器之间建立安全的连接,然后使用加密算法对数据进行加密和解密。这样可以确保在数据传输过程中,即使被截获,也无法被破解。

那么此时就有一个问题,如何去让一个服务,或者服务器得到信任呢?

CA证书

CA证书用来标识服务器的一个合法身份,可以理解为的居民身份证。

如何判断一个人是否是合法的中国公民 ----- 身份证

如何判断一台服务器是否是合法的 ----- CA证书。

现实生活中,身份证是由公安机颁发,那么一个人要拿到身份证,一般要经过以下流程:

person_card

服务器领域中,CA证书是由CA机构(Certificate Authority,凭证管理中心)颁发的,那么要拿到CA机构颁发下来的证书,与上方的流程类型:

ca_card

申请证书

根据上图,申请证书步骤如下:

注:以下都是模拟证书的生成过程,真实情况一般不需要这么复杂,掏钱就行。

  1. 我们需要生成私钥,即非对称加密技术(下文会讲解)。
openssl genrsa -out cert.key 1024
  1. 创建证书申请文件.csr
openssl req -new -key cert.key -out cert.csr
# 在这一步骤中, 需要我们输入申请信息:国家,地区,组织,email等。

csr

  1. CA签发证书
openssl x509 -req -days 365 -sha256 -in cert.csr -signkey cert.key -out cert.pem
# 注解:
# -days 365:证书有限期365天
# -sha256:使用 SHA-256 哈希算法来对证书进行签名
# -in cert.csr:指定申请文件路径
# -sign cert.key:指定用于签名 CSR 的私钥文件的路径和名称
# -out cert.pem:指定生成的证书文件的路径和名称

至此,在你的目录下,会多出来以下文件:

# cert.key:服务器私钥文件。
# cert.csr:证书申请文件。
# cert.pem:pem格式的证书文件,其中包含私钥,证书等秘密数据。

证书后缀

有的时候,你会遇到这两种后缀的证书:.pem;.crt。二者都是证书文件扩展名,主要区别如下:

  1. PEM格式是一种基于Base64编码的ASCII文本格式,可以包含证书、私钥等多种格式的加密信息。

  2. PEM格式的证书常常用在Unix/Linux系统中,在Apache、Nginx等服务器软件中也广泛使用。

  3. CRT格式是一种二进制编码格式,主要用于Windows操作系统中的程序中,并且通常只包含证书信息。

所以当看到这两种后缀的证书时,不要懵,其实都是证书文件。

非对称加密

对称:左右两边的图案,符号,数据等是一致的,称之为互相对称。那么在这里的,可以理解为客户端服务器,需要一致的对象是密钥,可以理解为同一把钥匙,才能解开数据。这种方式我们称之为对称加密

非对称:左右两边的图案,符号,数据等是不一致的,称之为非对称。那么在这里的,可以理解为客户端服务器,需要的对象是不同的密钥,才能解开数据。这种方式我们称之为非对称加密

在非对称加密中,密钥需要两个:公钥,私钥。

  • 公钥:顾名思义,就是公开的密钥,大家都可以得到。公钥负责加密数据
  • 私钥:不对外公开,特殊加密过的密钥。私钥负责解密数据

只要通过私钥解开了公钥加密过的数据,那么就表示是被信任的,数据安全隧道才会建立。

encryption

HTTPS工作原理

至此,我们知道SSL证书是为了解决数据明文传输不安全的风险:窃听风险,篡改风险,冒充风险。

以HTTP为例,在未通过SSL加密时,数据传输模式:

image-20240220093754487

为了解决上述的问题,使用SSL进行数据加密传输,一开始是采用的是对称加密,但是这一方式还是存在安全风险。

因为对称加密使用一对相同的密钥进行加密,解密。且密钥的传输是放在报文当中,也会使得中间人拦截,并篡改报文中的真密钥,返回假密钥给到客户端。

那么如何保证数据的加,解密是唯一性的,且到达客户端的公钥是正确的呢?答案就是上文说到的非对称加密证书

一图胜千言:

procedure

根据图中描述可知,文章开头出现的情况,属于Client(浏览器)得到的证书是未被验证通过的,未知的证书。

结语

随着时间的转变,技术的迭代更新,SSL也出现了安全问题。后续出现了它的继任者--TLS协议,该协议在SSL的基础之上发展而来,得到了进一步的改进和优化。

总之,SSL/TLS协议可以实现加强数据在传输过程的安全,不被窃取,监听等。在对安全性要求高的场景下,还会用到专业的安全硬件设备。毕竟数据是所有。

参考链接:

📝License

MIT © Week 100%

Loading Comments...