每天您都会多次访问网站,这些网站要求您使用用户名或电子邮件地址和密码登录。 银行网站、社交网站、电子邮件服务、电子商务网站和新闻网站只是使用此机制的一小部分网站类型。
每次您登录这些网站之一时,本质上您都在说“是的,我相信这个网站,所以我愿意与它分享我的个人信息。” 这些数据可能包括您的姓名、性别、实际地址、电子邮件地址,有时甚至包括信用卡信息。
但是,您如何知道您可以信任特定的网站? 换句话说,网站采取了哪些措施来保护您的交易,以便您可以信任它?
本文旨在揭开使网站安全的机制的神秘面纱。 我将首先讨论 Web 协议 HTTP 和 HTTPS,以及传输层安全性 (TLS) 的概念,它是互联网协议 (IP) 层的加密协议之一。 然后,我将解释证书颁发机构 (CA) 和自签名证书,以及它们如何帮助保护网站的安全。 最后,我将介绍一些可用于创建和管理证书的开源工具。
通过 HTTPS 保护路由
了解安全网站的最简单方法是在实际操作中查看它。 幸运的是,今天在互联网上找到安全网站比找到不安全网站容易得多。 但是,由于您已经在 Opensource.com 上,我将以它为例。 无论您使用什么浏览器,您都应该在地址栏旁边看到一个看起来像锁的图标。 单击锁定图标,您应该会看到类似这样的内容。

默认情况下,如果网站使用 HTTP 协议,则该网站是不安全的。 通过网站主机将配置的证书添加到路由可以将网站从不安全的 HTTP 站点转换为安全的 HTTPS 站点。 锁形图标通常表示该站点通过 HTTPS 受到保护。
单击“证书”以查看站点的 CA。 根据您的浏览器,您可能需要下载证书才能查看它。

在这里,您可以了解有关 Opensource.com 证书的一些信息。 例如,您可以看到 CA 是 DigiCert,并且它以 Opensource.com 的名称授予 Red Hat。
此证书信息使最终用户可以检查该网站是否可以安全访问。
警告:如果您在网站上没有看到证书标志,或者如果您看到一个标志表明该网站不安全,请不要登录或进行任何需要您私人数据的活动。 这样做非常危险!
如果您看到警告标志(这对于大多数面向公众的网站来说很少见),通常意味着该证书已过期或使用自签名证书而不是通过受信任的 CA 颁发的证书。 在我们进入这些主题之前,我想解释一下 TLS 和 SSL。
具有 TLS 和 SSL 的互联网协议
TLS 是旧的安全套接字层 (SSL) 协议的当前版本。 了解这一点的最佳方法是检查 IP 的不同层。

构成我们今天所知的互联网共有六层:物理层、数据层、网络层、传输层、安全层和应用层。 物理层是最基础的,也是最接近实际硬件的。 应用层是最抽象的层,也是最接近最终用户的层。 安全层可以被认为是应用层的一部分,而 TLS 和 SSL 是旨在通过计算机网络提供通信安全性的加密协议,它们位于安全层中。
此过程确保最终用户使用服务时,通信是安全且加密的。
证书颁发机构和自签名证书
CA 是可以颁发数字证书的受信任组织。
TLS 和 SSL 可以使连接安全,但加密机制需要一种验证它的方法; 这就是 SSL/TLS 证书。 TLS 使用一种称为非对称加密的机制,它是一对称为私钥和公钥的安全密钥。 (这是一个非常复杂的主题,超出了本文的范围,但如果您想了解它,您可以阅读“密码学和公钥基础设施简介”。) 需要知道的本质是,像 GlobalSign、DigiCert 和 GoDaddy 这样的 CA 是外部受信任的供应商,它们颁发用于验证网站使用的 TLS/SSL 证书的证书。 此证书导入到托管服务器以保护网站的安全。
但是,当您只是想在开发中测试网站或服务时,CA 可能太昂贵或太复杂。 您必须有一个受信任的 CA 用于生产目的,但是开发人员和网站管理员需要一种更简单的方法来在网站部署到生产环境之前对其进行测试; 这就是自签名证书的用武之地。
自签名证书是由创建它的人而不是受信任的 CA 签名的 TLS/SSL 证书。 从计算机生成自签名证书很容易,它可以使您无需立即购买昂贵的 CA 签名证书即可测试安全网站。 虽然将自签名证书投入生产用途肯定是有风险的,但它是开发和在预生产阶段进行测试的简单而灵活的选择。
用于生成证书的开源工具
有几种开源工具可用于管理 TLS/SSL 证书。 最著名的一个是 OpenSSL,它包含在许多 Linux 发行版和 macOS 上。 但是,还有其他开源工具可用。
工具名称 | 描述 | 许可证 |
---|---|---|
OpenSSL | 用于实现 TLS 和加密库的最著名的开源工具 | Apache License 2.0 |
EasyRSA | 用于构建和管理 PKI CA 的命令行实用程序 | GPL v2 |
CFSSL | 来自 Cloudflare 的 PKI/TLS“瑞士军刀” | BSD 2-Clause "Simplified" License |
Lemur | 来自 Netflix 的 TLS 创建工具 | Apache License 2.0 |
当您考虑到其扩展和用户友好的目标时,Netflix 的 Lemur 是一个特别有趣的选择。 您可以在 Netflix 的技术博客上阅读更多相关信息。
如何创建 OpenSSL 证书
我们有权自己创建证书。 此示例使用 OpenSSL 生成自签名证书。
- 使用 openssl 命令创建一个私钥
openssl genrsa -out example.key 2048

- 使用在步骤 1 中生成的私钥创建一个证书签名请求 (CSR)
openssl req -new -key example.key -out example.csr \ -subj "/C=US/ST=TX/L=Dallas/O=Red Hat/OU=IT/CN=test.example.com"

- 使用您的 CSR 和私钥创建一个证书
openssl x509 -req -days 366 -in example.csr \ -signkey example.key -out example.crt

了解更多关于互联网安全的信息
如果您想了解更多关于互联网和网站安全的信息,请观看我为本文制作的配套 YouTube 视频。
您有什么问题? 请在评论中告诉我。
评论已关闭。