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 命令串联中间证书、根证书:

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

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

cat  example_com.key example_com.crt > example_com.pem
                          

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

修改 lighttpd 站点配置

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

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

强制定向到 HTTPS

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

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

Lighttpd 安全配置

禁用 SSL Compression (抵御 CRIME 攻击)
ssl.use-compression = "disable"
                          
禁用 SSLv2 及 SSLv3
ssl.use-sslv2 = "disable"
                            ssl.use-sslv3 = "disable"
                          
抵御 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 及之后的版本中支持
加密及交换算法

一份推荐的配置:

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

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

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"
                          
配置 Forward Secrecy 和 DHE 参数

生成强 DHE 参数:

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

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

添加到 SSL 配置文件:

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

重启 Lighttpd

sudo service lighttpd restart

标签

立即加入,让您的品牌更加安全可靠!
申请SSL证书