跳转至内容

LPI Linux 认证/维护 Web 服务器

来自维基教科书,开放的书籍,用于开放的世界

208.2 维护 Web 服务器

[编辑 | 编辑源代码]

详细目标 (208.2)

[编辑 | 编辑源代码]

(LPIC-2 版本 4.5)


权重 3


描述: 候选人应该能够配置 Web 服务器以提供 HTTPS。


关键知识领域

  • SSL 配置文件、工具和实用程序。
  • 为商业 CA 生成服务器私钥和 CSR。
  • 生成自签名证书。
  • 安装密钥和证书,包括中间 CA。
  • 使用 SNI 配置虚拟主机。
  • 了解虚拟主机和 SSL 使用方面的挑战。
  • SSL 使用中的安全问题,禁用不安全的协议和密码。


术语和实用程序

  • Apache2 配置文件
  • /etc/ssl/, /etc/pki/
  • openssl, CA.pl
  • SSLEngine, SSLCertificateKeyFile, SSLCertificateFile
  • SSLCACertificateFile, SSLCACertificatePath
  • SSLProtocol, SSLCipherSuite, ServerTokens, ServerSignature, TraceEnable

Apache 是一个令人印象深刻且功能强大的应用程序。它不仅能够提供简单的(静态)HTTP 页面,这是一个(本质上)微不足道的任务。Apache 可以通过使用“虚拟主机”在单个物理机器上一个 IP 地址上托管多个网站(http://www.example.comhttp://www.beispiel.de)使用一个 Apache 进程。Apache 也可以使用多个 IP 地址在同一台物理机器上存储不同的网站,这(不一定)需要不同的网络卡。这也由“虚拟主机”实现。

此外,Apache 可以使用非常复杂的方法来重定向查询。

对我来说,最重要的是使用 SSL(作为 OpenSSL)。SSL 可以为很多人做很多事情:它可以保护(加密)在 Web 客户端和 Web 服务器之间来回传递的内容。它还可以确保双方通信的身份,即服务器客户端。

虚拟主机

[编辑 | 编辑源代码]

VirtualHost 部分包含仅适用于特定主机名或 IP 地址的指令。参见 [1][2]

基于 IP 的虚拟主机

[编辑 | 编辑源代码]

基于名称的虚拟主机

[编辑 | 编辑源代码]

OpenSSL(link) 是一套实现和处理符合传输层安全 (TLS) ??? 协议(link) 的证书(link) 的工具。

什么是证书?

[编辑 | 编辑源代码]

安全套接层 (SSL)(link) 或传输层安全 (TLS)(link)(3 版之后的 SSL 版本现在称为 TLS)使用公钥加密(link) 来保护在不安全且无法保护的互联网上的交易。与我所知的其他所有公钥加密方案一样,TLS 使用一个秘密的私钥和一个公开共享的公钥,称为证书。TLS 证书的特殊之处在于证书颁发机构 (CA)(link)。要使 TLS 证书被识别为有效,它必须由“证书颁发机构”进行(加密)签名。

回顾公钥加密

[编辑 | 编辑源代码]

简而言之,公钥加密的工作原理如下:有两个密钥,一个是所有人都可以使用的公钥,另一个是只有我才能看到的私钥。私钥通常也受一个非常强大的密码保护。

两个密钥都可以用于加密只有另一个密钥才能解密的数据。原则上,公钥和私钥之间没有区别!

另一方面,用私钥加密数据似乎毫无意义,因为互联网上的每个人已经或可以获取您的公钥并解密数据。但是,如果您使用私钥加密数据,则可以证明您拥有私钥。这样您就可以(加密地)签署数据。要签署数据,我们通常不会加密整个数据,而是一个(加密)哈希(link),因此我们可以证明数据的真实性,前提是我们非常小心地保管我们的私钥。密码只是一个额外的安全措施,以防私钥泄露到公共区域或丢失。

CA 究竟做了什么?

[编辑 | 编辑源代码]

证书颁发机构使用其私钥来签署我们的公钥。然后它们被称为证书。就是这样!几乎。我们发送一个“证书签名请求”(稍后会详细介绍),其中包含您的身份声明以及不同数量的资金,CA 会尝试(取决于我们支付的金额)验证您的身份,如果成功,它将签署您的请求,最后将签署的证书发回给我们。但请记住,香港邮政(TM)(或任何其他 CA)能做的只是验证巴西身份。但现在问题是如何获取 CA 的证书……而诀窍就在这里:我们已经有了!大多数可以使用 TLS 证书的软件都包含一个受信任(这是一个神奇的词)CA 列表。任何由此类受信任的 CA(例如,由 StartSSL)签署的并使用证书安装在我们机器上的新证书(例如,shop.example.com)也被视为受信任的。未签署的证书或由未知 CA 签署的证书将被视为“不受信任”,我们将会收到一个可怕的警告。

证书究竟是如何工作的?

[编辑 | 编辑源代码]

只要我们足够努力,几乎可以在互联网上使用 TLS 证书来保护任何不安全的服务。

  • 网页浏览(HTTPS 而不是 HTTP)
  • 发送邮件(SMTPS 而不是 SMTP)
  • 接收邮件(IMAPS 而不是 IMAP/POP3S 而不是 POP3)
  • 聊天(使用 TLS 的 IRC)
  • VPN(OpenVPN)

它是如何工作的(针对网页浏览)?简化版

  1. 客户端连接到服务器
  2. 服务器发送证书
  3. 客户端检查证书的某些属性
    1. 证书绑定到我们连接到的服务器的完全合格主机名 (FQHN)。网页浏览器会检查服务器的 FQHN 与证书是否匹配,如果不匹配,则会生成错误。
    2. 证书需要由可信的 CA 签署,否则网页浏览器会生成错误。
    3. 证书的有效期有限,具体取决于我们支付的费用。网页浏览器会检查证书是否仍然“有效”,如果不是,则会生成错误。
    4. 我们的计算机上有一个无效证书列表。这些证书因各种原因被吊销:被盗用、存在错误、被盗等。如果服务器证书在该列表中,客户端软件会生成错误。
  4. 如果证书被认为有效(或如果接受无效证书,即使它无效),客户端会使用证书对随机值进行加密,并将其发送到服务器。
  5. 只有客户端(因为它生成了该随机值)和服务器(因为它可以解密该随机值)知道由客户端生成的随机值。
  6. 随机值会在两端生成一个对称密钥,并且任何进一步的双向通信都将使用此生成的密钥进行加密。(使用对称密钥是因为 CPU 更容易处理加密和解密。)

如何查找和使用证书

[编辑 | 编辑源代码]

CA 根证书存储在我们的计算机上的许多不同位置。通常,每个使用 TLS 的软件都会自带一组可信 CA 列表。

  • openssl: /etc/ssl/certs
  • firefox
  • thunderbird
  • claws-mail: ~/.claws-mail/certs/

另一方面,openssl 可以作为经典“明文”协议(比如所有互联网协议,例如 POP3)的 TLS 客户端。


如何获取证书

[编辑 | 编辑源代码]

简单方法:从 CA 购买

[编辑 | 编辑源代码]

快速方法:自己做 CA

[编辑 | 编辑源代码]

难方法:自己做 CA

[编辑 | 编辑源代码]

SSL 证书

[编辑 | 编辑源代码]


华夏公益教科书