在这篇文章中,将讨论在HTTPS连接中,SSL证书如何保障现代网站的安全标准。
当看到HTTPS和HTTP连接时,大部分人不知道它们之间的区别。我们不禁自问,一个小小的"S"能造成什么差别呢?很少有人知道,正是这个小小的"S"才是关键所在。
HTTPS与HTTP并不仅仅是一个字母的差别,HTTPS通过一个有效的SSL证书,保障了一个安全的受保护的连接。
在这篇文章中,我们会简要地说明SSL/TLS(安全套接字层与传输层安全)是什么,以及如何为一个网站获取证书。
不知不觉中,我们已经浏览过很多有SSL证书的网站,手机应用程序,邮件,信息收发等等。其中,在网站中最为常见,但是大部分人都感受不到它的存在。SSL证书可以被视为服务端发送给客户端的一把锁(公钥),客户端可以使用这把锁将要加密的内容锁上,而钥匙(私钥)只有服务端才持有,此时,只有服务端才能获取到加密的内容。
SSL证书促进了加密技术——当我们听到这个词的时候,我们的脑海中首先想到的是"密文"与"破解",将数据转换成任何第三方都不能识别的格式,然后由接收者使用私钥进行解密。
安全连接建立的过程称为"SSL握手"。我们可以使用日常生活中的例子帮助我们理解这个过程。
例如,当有人雇佣你做一个很重要的工作时,步骤如下:
- 我们向彼此打招呼——类似地,客户端与服务端交换
clientHello与serverHello信息,这些信息带有SSL相关的内容。此后,一条安全连接就在我们之间出现了。 - 校验身份,记录等——打完招呼之后,我们彼此都放松了一点,客户端通过SSL证书中的信息来验证服务端(例如,位置,公钥,认证日期等),就像我们的老板检查我们身份的真实性,客户端检查证书颁发机构的有效性。
- 交换秘钥——当我们的老板信任我们以后,他留给我们办公室的钥匙。类似地,客户端和服务端交换公钥与私钥,对称或不对称的加密就发生了。
以这种方式,一个值得信任的员工被雇佣了,类似地,一个安全的连接就建立好了。
获取证书
这就是OpenSSL发挥作用的地方。这要追溯到1998年十二月,彼时,www.openSSL.org网站出现了,它是一个在线的软件库,为网站提供软件,保护他们免受第三方窃取或窜改数据。它也提供私钥的生成,这是TLS协议中很重要的一部分。
正如它的名字一样,open SSL向所有网站的开发者和拥有者开放,他们可以使用所有必要的工具。在Linux, Windows, macOS以及BSD操作系统中都可用。
现在,任何组织都必须遵守公共的安全标准,这样他们才能与客户之间建立起信任关系,所以他们的网站需要有SSL证书。open SSL帮助他们实现了。
证书就像我们工作上实习期的证明,它保证了我们工作的完成质量。数字凭证必须在Open SSL库中申请SSL证书。
为了将SSL证书转换成不同的格式,需要知道一些Open SSL命令。TLS协议支持几种不同的OpenSSL版本,1.1.1, 1.0.2以及1.1.0。
使用openssl version -a查看OpenSSL版本。
生成CSR——证书签名请求。这个请求是由网站所有者向权威机构申请一个应用程序的证书。OpenSSL帮助生成一个CSR码。
生成私钥——私钥是解锁对应公钥加密的唯一方式。它必须唯一,并且包含一个选项决定是否在私钥中包含一个额外的密码,不够,所有的服务器都不接受带密码的私钥。
生成私钥有两种算法——RSA算法生成2048位的秘钥,ECDSA算法生成256位的秘钥。
要生成秘钥,需要使用以下命令:opensslrsa -text -in yourdomain.key -noout
提取公钥——使用以下命令从私钥中提取公钥:opensslreq -new -key yourdomain.key -out yourdomain.scr
在生成CSR之前,有一些重要的问题要问,像给你发身份证时一样:
- 国家代码(两个字的代码)
- 州或省名
- 城市名
- 机构名称
- 机构部门名称
- 公用名称(主机名称)
- 邮箱地址
验证消息与证书细节
最后,我们得到证书以后该做什么呢?我们要检查一下信息是否正确,以及我们的名字是否与证书上的一致。相应的,有一个命令可以鉴定证书的信息是否与我们的私钥相匹配:
openssl x509 -text -in yourdomain.crt -noout
2014n年,谷歌与火狐浏览器发起了 “HTTPS Everywhere”运动,之后,SSL证书的需求急速增加,因为该运动强迫所有在它SEO浏览器上的网站都必须有一个HTTPS连接。这是一个非常重要的运行,因为它使得安全与私密不再是一个可选项,而是一个必选项。在网络犯罪不断增加的现在,我们必须尽我们所能来保障我们的隐私。