SSL 是加密协议,它为电子邮件、Web 等提供 Internet 上的安全通信。
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 Web 服务器下配置 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。
现在,您需要在订购证书时向 CA 提交 theos.in.csr 文件。接下来,您需要验证您的域所有权。一旦您的请求获得批准,您就可以下载证书以与 Lighttpd Web 服务器一起使用。
步骤#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
输出:
密码:
打开 Web 浏览器并输入 url https://yourdomain.com (https://theos.in) 以测试 SSL 安装。
进一步阅读:
- 如何判断网页是否安全?
- SSL 的工作原理– 将其描述为序列图(PDF 文件)
- Bruce Schneier 的《应用密码学》书(第 2 版) ——如果您想了解密码学,这是一本很棒的书