本文档指导您在 lighttpd 1.4.x HTTP 服务器上安装并配置 SSL 证书,关于 lighttpd 1.4.x 在各个平台上的安装不再涉及。
由于近年 OpenSSL 高危漏洞不断,因此强烈推荐您在开始配置之前首先升级 OpenSSL 到最新版本
# 配置 SSL 证书
完整的 SSL 证书分为四个部分:
- CA 根证书 (root CA)
- 中级证书 (Intermediate Certificate)
- 域名证书
- 证书密钥 (仅由您持有)
以 COMODO PositiveSSL 证书为例,您将收到四份文件:
- 根证书 - 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.crt
和 example_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
您可能需要:
Last Update: 2016-10-14 23:14:25 Source File