如何:Linux Lighttpd SSL(安全服务器层)https 配置和安装
SSL 是一种加密协议,它为互联网上的电子邮件、网络等提供安全通信。
SSL 证书是一种数字证书,用于验证网站的身份并使用安全套接字层 (SSL) 技术加密发送到服务器的信息。加密是将数据打乱为无法解密的格式的过程,只有使用正确的解密密钥才能将其恢复为可读格式。
如果您经营电子商务网站或通过 CC 接受付款,SSL 是一个不错的选择。在用户登录或注册页面等上使用 SSL 是一个不错的选择。
要购买数字证书,您必须首先生成并向证书颁发机构 (CA) 提交证书签名请求 (CSR)。CSR 包含您的证书申请信息,包括您的公钥。CSR 是使用您的 Web 服务器软件生成的(使用 openssl 命令),该软件还将创建用于加密和解密安全交易的公钥/私钥对。
要求
- 支持 SSL 的 Lighttpd 网络服务器
- 为您的域名分配专用 IP,即需要基于 IP 的托管
- 来自 CA 的 SSL 证书
- 域名 – theos.in(为了举例,我使用 theos.in 域名)
服务器上的重要文件
- /etc/lighttpd/theos.in/ – 存储 SSL 证书和相关文件的目录
- /etc/lighttpd/theos.in/theos.in.key – 您的私钥文件。切勿将此文件提供给任何人。Lighttpd 使用此文件来加密服务器流量。
- /etc/lighttpd/theos.in/theos.in.csr – 您需要将此文件剪切/复制并粘贴到 SSL 证书请求页面/申请表上的 CSR 字段中。它包含您的公钥。
- /etc/lighttpd/theos.in/theos.in.pem – 此文件可包含所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和(x509)证书。通常您的密钥和证书存储在此文件中。
CA发布的重要文件
通常 zip 文件包含以下文件
- CA_issuing.crt – 您的中间证书或链式根证书文件。中间证书是由受信任的根颁发的下属证书,专门用于颁发最终实体服务器证书。结果是一个从受信任的根 CA 开始,经过中间证书,最后到颁发给您的 Web 服务器 SSL 证书结束的链。因此,使用中间证书可提供额外的安全级别,因为认证机构 (CA) 不需要直接从其 CA 根证书颁发证书。
- theos.in.crt – 您的域名证书
Lighttpd SSL 教程
以下是在 Lighttpd 网络服务器下配置 SSL 的步骤。
步骤 1:生成证书签名请求(CSR)
首先,使用 openssl 命令为您的域 theos.in 生成证书签名请求:
# mkdir -p /etc/lighttpd/ssl/theos.in
# cd /etc/lighttpd/ssl/theos.in
创建 RSA 密钥:
# openssl genrsa -des3 -out theos.in.key 1024
现在创建一个 CSR:
# openssl req -new -key theos.in.key -out theos.in.csr
系统将提示您输入域名和其他信息。请注意,如果您申请的是通配符证书,请在前缀中添加星号 (*) 符号,即 *.theos.in。这将保护所有子域。如果您仅使用 theos.in,则它将仅保护 theos.in 域,请注意 www.theos.in。
现在,您需要在订购证书时将 theos.in.csr 文件提交给 CA。接下来,您需要验证您的域名所有权。一旦您的请求获得批准,您就可以下载证书以用于 Lighttpd 网络服务器。
步骤#2:准备证书
您的 CA 将向您颁发已签名的 Web 服务器证书。证书申请流程的最后一步是将证书安装到您的 Lighttpd Web 服务器上。
现在将下载的证书(theos.in.crt)复制到 /etc/lighttpd/ssl/theos.in
# cp theos.in.crt /etc/lighttpd/ssl/theos.in
现在创建您的最终 pem 文件并设置权限:
# cat theos.in.key theos.in.crt > theos.in.pem
# chmod 0600 theos.in.pem
# chown lighttpd:lighttpd /etc/lighttpd/ssl/theos.in -R
可选:如何从密钥文件中删除密码?
Lighttpd 在 443 端口启动时会提示输入密码,您可以删除密码:
# cp theos.in.key theos.in.key.bak
# cp theos.in.pem theos.in.pem.bak
# openssl rsa -in theos.in.key -out no.pwd.theos.in.key
# cat no.pwd.theos.in.key theos.in.crt > theos.in.pem
步骤#3:确保Lighttpd支持SSL
使用以下命令验证 Lighttpd 是否支持 SSL:
[vivek@example.com]$ /usr/sbin/lighttpd -v
lighttpd-1.4.11 (ssl) - a light and fast webserver
Build-Date: Jul 12 2006 13:47:40
否则,请按照这些说明构建具有 SSL 支持的 Lighttpd。
步骤#4:为你的域名配置 Lighttpd SSL 支持
现在打开你的 lighttpd 配置文件
# vi /etc/lighttpd/lighttpd.conf
添加配置部分:
$SERVER["socket"] == "theos.in:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/theos.in/theos.in.pem"
ssl.ca-file = "/etc/lighttpd/theos.in/CA_issuing.crt"
server.name = "theos.in"
server.document-root = "/home/lighttpd/theos.in/https"
server.errorlog = "/var/log/lighttpd/theos.in/serror.log"
accesslog.filename = "/var/log/lighttpd/theos.in/saccess.log"
}
在哪里,
- ssl.engine = “enable” :启用 lighttpd SSL 支持
- ssl.pemfile = “/etc/lighttpd/theos.in/theos.in.pem” – 您的 PEM 文件
- ssl.ca-file = “/etc/lighttpd/theos.in/CA_issuing.crt” – 您的中间证书文件
保存并关闭文件。重新启动 lighttpd 网络服务器(请注意,它将提示您输入 SSL 私钥密码):
# /etc/init.d/lighttpd restart
输出:
Password:
打开 Web 浏览器并输入 url https://yourdomain.com (https://theos.in) 来测试 SSL 安装。
进一步阅读:
- 如何判断网页是否安全?
- SSL 的工作原理– 本文以序列图的形式进行了描述(PDF 文件)
- Bruce Schneier 著《应用密码学》(第 2 版) ——如果你想了解密码学,这是一本很棒的书