Lighttpd 如何配置 SSL数字证书

更新时间:2023-12-05 来源:CERTUM 作者:CERTUM

Lighttpd 如何配置 SSL数字证书?本文档指导您在 lighttpd 1.4.x HTTP 服务器上安装并配置 SSL 证书,关于 lighttpd 1.4.x 在各个平台上的安装不再涉及。由于近年 OpenSSL 高危漏洞不断,因此强烈推荐您在开始配置之前首先升级 OpenSSL 到最新版本

本文档指导您在 lighttpd 1.4.x HTTP 服务器上安装并配置 SSL 证书,关于 lighttpd 1.4.x 在各个平台上的安装不再涉及。
由于近年 OpenSSL 高危漏洞不断,因此强烈推荐您在开始配置之前首先升级 OpenSSL 到最新版本

配置 SSL 证书

完整的 SSL 证书分为四个部分:

  1. CA 根证书 (root CA)
  2. 中级证书 (Intermediate Certificate)
  3. 域名证书
  4. 证书密钥 (仅由您持有)

以 COMODO 证书为例,您将收到四份文件:

  • 根证书 - AddTrustExternalCARoot.crt
  • 中级证书 - COMODORSAAddTrustCA.crt
  • 中级证书 - COMODORSADomainValidationSecureServerCA.crt
  • 您的域名证书 - example_com.crt

您要依照 中间证书 -> 根证书 的顺序串联为证书链,才能被绝大多数浏览器信任。使用 cat 命令串联中间证书、根证书:

01.
cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ca-root.bundle.crt
bash

然后将证书密钥 example_com.key 和域名证书 example_com.crt 合并

01.
cat example_com.key example_com.crt > example_com.pem
bash

得到 root.bundle.crtexample_com.pem 后,将两者上传至服务器并保存在安全的位置,例如 /etc/ssl/private 目录下 (没有此目录请创建)。

修改 lighttpd 站点配置

下面是 lighttpd.conf 文件中关于 SSL 的部分配置

01.
$SERVER["socket"] == ":443" {
02.
ssl.engine = "enable"
03.
ssl.pemfile = "/etc/ssl/private/example_com.bundle.pem"
04.
ssl.ca-file = "/etc/ssl/private/ca-root.bundle.crt"
05.
server.name = "example.com"
06.
server.document-root = "/var/www"
07.
}
bash

强制定向到 HTTPS

下面是 lighttpd.conf 文件中关于强制 HTTP 定向到 HTTPS 的部分配置

01.
$HTTP["scheme"] == "http" {
02.
# capture vhost name with regex conditiona -> %0 in redirect pattern
03.
# must be the most inner block to the redirect rule
04.
$HTTP["host"] =~ ".*" {
05.
url.redirect = (".*" => "https://%0$0")
06.
}
07.
}
bash

Lighttpd 安全配置

禁用 SSL Compression (抵御 CRIME 攻击)
01.
ssl.use-compression = "disable"
bash
禁用 SSLv2 及 SSLv3
01.
ssl.use-sslv2 = "disable"
02.
ssl.use-sslv3 = "disable"
bash
抵御 Poodle 和 SSL downgrade 攻击

您需要支持 TLS-FALLBACK-SCSV 以自动开启此功能。下列 OpenSSL 版本包含对 TLS-FALLBACK-SCSV 的支持,Lighttpd 会自动启用此特性。

  • OpenSSL 1.0.1 在 1.0.1j 及之后的版本中支持
  • OpenSSL 1.0.0 在 1.0.0o 及之后的版本中支持
  • OpenSSL 0.9.8 在 0.9.8zc 及之后的版本中支持
加密及交换算法

一份推荐的配置:

01.
ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES128+EECDH:AES128+EDH"
bash

如果您需要兼容一些老式系统和浏览器 (例如 Windows XP 和 IE6),请使用下面的:

01.
ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
bash
配置 Forward Secrecy 和 DHE 参数

生成强 DHE 参数:

01.
cd /etc/ssl/certs
02.
openssl dhparam -out dhparam.pem 4096
bash

建议您使用性能强劲的平台生成此文件,例如最新版的至强物理机。如果您只有一台小型 VPS,请使用 openssl dhparam -out dhparam.pem 2048 命令生成 2048bit 的参数文件。

添加到 SSL 配置文件:

01.
ssl.dh-file = "/etc/ssl/certs/dhparam.pem"
02.
ssl.ec-curve = "secp384r1"
bash
启用 HSTS
01.
server.modules += ( "mod_setenv" )
02.
$HTTP["scheme"] == "https" {
03.
setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload")
04.
}
bash

重启 Lighttpd

01.
sudo service lighttpd restart
bash

标签

有用
分享
无用
反馈
返回顶部
0 个回答
1179 次浏览
立即加入,帮您快速选购适合您的SSL数字证书 申请SSL证书
免费SSL证书_正品SSL证书申请_HTTPS加密【TopSSL】
免费SSL证书永久生成
微信公众号二维码 扫一扫在线咨询
关注 TopSSL 公众号, RSS订阅 SSL资讯与技术支持

2004-2025 © 北京传诚信  版权所有 | TopSSL提供免费SSL证书SSL证书申请轻松实现HTTPS加密服务! 北京市朝阳区鹏景阁大厦16层

技术协助:wo@topssl.cn 企业咨询:vip@topssl.cn