原文自国外技术社区dzone,作者为 Crumb Peter,传送门
当我们看到 HTTPS 和 HTTP 连接的时候,大多数人都无法区分它们。我们会经常反问自己,单单的一个 “S” 之间会有什么不同?但我们大多都不知道这个 “S” 是多么的重要。
HTTP 和 HTTPS 之间的区别不仅仅是一个字母,而是由有效的 SSL 证书确保建立一个安全和受保护的连接。
在这篇文章中,我们会去讨论一下什么是 SSL/TLS(安全套接层及传输层安全)协议以及怎么用简单的方法来获取网站的证书。
我们通常不清楚原理,但是我们遇到了太多经 SSL 认证的网站、移动应用、电邮、信息等。最常见的是在网站上,但我们大多数都不知道它的全貌是什么。SSL 证书在接收客户端(网站/服务器)中可以被看成是锁。
SSL 证书有助于“加密” -- 当我们听到这个词的时候,唯一想到的词语就是“加密”和“解密”,这是一个过程,将我们发送的数据转换为任何三方都无法解密,而只能由接收方网站通过密钥解密。
安全连接的建立通常被称为“SSL 握手”。我们可以通过一些日常生活的例子来理解这个概念。
例如,当某人雇佣我们去做一件非常重要的工作,步骤如下:
- 我们相互问候 -- 客户端和服务端会同样地交换带有有关 SSL 认证的
clientHello
和serverHello
信息。因此,我们两者之间有一个安全的连接。 - 检查身份、记录等信息 -- 在打招呼之后,我们俩都相对放松了一下。客户端通过 SSL 证书中提及的信息(例如位置、公钥、有效期等)来验证服务器,就像我们的雇主在这里检查我们的学术证书的真实性一样,客户端也会检查证书的有效性。
- 交换钥匙 -- 当我们的雇主信任我们时,他/她会留给我们小屋或者办公室的钥匙(当雇佣的是看门人的时候是家的钥匙)。同样地,客户端和服务端交换公钥和私钥,并且进行非对称或者系统性的加密。
通过这种方式,来雇佣一个能被信用的雇员,就像建立了一个可信的连接一样。
##获取证书
这就是 OpenSSL 的一种说法。再追溯到 1998 年 12 月,当时第一个开启的网站是 www.openSSL.org。那是一个在线的软件库,专门提供那些保护网站免受第三方窃听和篡改数据的应用程序。它同时提供私钥的生成,这是 TLS 协议中重要的一环。
顾名思义,OpenSSL 是对所有 web 开发人员和拥有者开发的,以便他们能够充分配备所必要的工具,它适用于 Linux、Windows、macOS 和 BSD 系统。
现在,就像任何组织都必须遵循公共安午安规范一样,为了在它们和客户之间建立信任和友好的关系,网站都应该有 SSL 证书。OpenSSL 可以帮助它们实现这个目标。
和我们在公司中完成实习期一样,证书是保证我们工作的真实性和水平的证明,而数字证书必须在 OpenSSL 中申请以此来获得 SSL 证书。
要将我们的 SSL 证书转换为不同的格式,我们需要了解一些不同的 OpenSSL 指令。TLS 协议支持不同的 OpenSSL 版本 -- 1.1.1,1.0.2 和1.1.0。
如果需要检查我们的 OpenSSL 版本,我们使用这个指令:openssl version -a
。
生成 CSR -- 证书签名请求。这是 web 所有者向颁发证书应用程序的授权者发起的请求。OpenSSL 帮助我们生成 CSR 代码。
生成私钥 -- 私钥是解锁公钥加密的信息的唯一方式。它必须是唯一的,并可以选择是否在上面放置另一个密码,但所有的服务端都不会接受带有密码的私钥。
这里有两种算法来生成私钥 -- 2048 位的RSA算法和 256 位的 ECDSA 算法。
使用 RSM 算法来生成私钥,我们应该执行如下的指令:opensslrsa -text -in yourdomain.key -noout
。
提取公钥 -- 公钥是从私钥自身获取,使用以下命令:opensslreq -new -key yourdomain.key -out yourdomain.csr
。
在生成 CSR 之前,就像在给于你一张身份证之前,会执行一些重要的查询:
- 国家代号(2位字母)
- 州或者市名
- 地方名称
- 组织名
- 组织单位名
- 公共名称
- 邮箱地址
验证信息和证书详细信息
最后,当我们拿到证书时,应该怎么办?我们检查所有的信息是否正确并且是否我们的名称和证书的名称匹配上。同样地,有一个命令来识别证书的信息和我们的私钥是否匹配:
openssl x509 -text -in yourdomain.crt -noout
在谷歌和 Mozilla Firefox 于 2014年发起“HTTPS Everywhere”活动后,对 SSL 证书的需求便迅速增加,因为它迫使每个网站在 SEO 浏览器中使用 HTTPS 而非 HTTP。这是一项非常重要的举动,因为它使安全和隐私不再是一种选项,而是唯一的选择。因为随着网络犯罪率的不断提高,使用一切可能来保护我们的隐私就变得越来越重要。