随着Apple、Google大力推广HTTPS,HTTPS将成为今后网站的主流,而前段时间正好看到Let’s Encrypt可以生成免费的SSL证书。因此尝试配置了下lighttpd,发现非常容易,大体步骤如下:

申请证书

1. 获取Certbot

git clone https://github.com/certbot/certbot

2. 申请证书

cd certbot
./letsencrypt-auto certonly -d smallmuou.xyz

PS: 选择Automatically use a temporary webserver(stadalone)

3. 配置证书

成功后,会生成如下几个文件

smallmuou:~ $ tree /etc/letsencrypt/live/smallmuou.xyz/
/etc/letsencrypt/live/smallmuou.xyz/
|-- cert.pem -> ../../archive/smallmuou.xyz/cert1.pem
|-- chain.pem -> ../../archive/smallmuou.xyz/chain1.pem
|-- fullchain.pem -> ../../archive/smallmuou.xyz/fullchain1.pem
|-- privkey.pem -> ../../archive/smallmuou.xyz/privkey1.pem
|-- README

PS: 各个文件的含义可以查看README的说明,我也给出我的理解

  • cert.pem 公钥
  • prikey.pem 私钥
  • fullchain.pem CA证书信任链 (包含Root Certificate)
  • chain.pem 上一级CA证书(这里指Let’s Encrypt)

PS: 可以通过cat cert.pem prikey.pem > server.pem将私有和公用打包在一起,以供后续lighttpd配置使用.

信任链(chain)即证书的信任关系,如A信任A1,A1信任A2,其中最顶级的节点就是根证书(root certificate),Let’s Encrypt就是直接隶属于root certificate.

└── DST Root CA X3
    └── Let's Encrypt Authority X3
        └── smallmuou.xyz

安装及配置lighttpd

1. 安装SSL

yum install openssl*

2. 下载

进入lighttpd官网,下载lighttpd源码包

wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.45.tar.gz

3. 解压并编译

tar xzvf lighttpd-1.4.45.tar.gz
cd lighttpd-1.4.45
./autogen.sh
./configure --with-openssl --with-openssl-libs=/usr/lib
make 
make install

PS: 安装完后,执行lighttpd -v,当有出现(ssl)字样,则表示lighttpd已支持SSL

4. 配置

进入doc/config编辑lighttpd.conf文件,添加如下内容

$SERVER["socket"] == "0.0.0.0:443" {
  ssl.engine                  = "enable"
  ssl.pemfile                 = "/etc/letsencrypt/live/smallmuou.xyz/server.pem"
  ssl.ca-file                 = "/etc/letsencrypt/live/smallmuou.xyz/fullchain.pem"
  server.document-root        = "/srv/www/htdocs"
}

  • ssl.engine 是否开启SSL
  • ssl.pemfile pem文件位置(包含私有和公用)
  • ssl.ca-file CA证书
  • server.document-root 根路径 点击此处查看更多选项内容

5. 完成

经过以上步骤,重新启动lighttpd -f lighttpd.conf,就可以使用https访问,而且是受信任的. 亲测有效.