继前一篇CentOS下安装lighttpd+php后:http://liyaoyi.blog.51cto.com/442933/827200

想在lighttpd中加入https的支持,在学习的过程中,对以下的问题纠结了好长时间
 
生成证书,配置lighttpd.conf后,使用浏览器测试时,进程出现:
[root@server1 ~]# /etc/init.d/lighttpd status
lighttpd dead but pid file exists
 
详情看求助贴:http://bbs.51cto.com/thread-923611-1.html
后来想到,会不会是openssl版本上的问题,通过光盘安装的openssl是openssl-0.9.8e-12.el5_4.6,目前官方最新版本是openssl-1.0.1。有了这个想法,今天就再次折腾测试能否解决问题。
由于系统在已安装了openssl-0.9.8e,卸载旧版本对系统其他服务影响太大,所以决定不卸载旧版本直接把新的版本安装。
 
一、安装openssl
1.下载安装:http://www.openssl.org/source/openssl-1.0.1.tar.gz
 
[root@web ~]# tar zxf openssl-1.0.1.tar.gz 
[root@web ~]# cd openssl-1.0.1
[root@web openssl-1.0.1]# ./config --prefix=/usr/local/ssl
[root@web openssl-1.0.1]# make clean
[root@web openssl-1.0.1]# make
[root@web openssl-1.0.1]# make install
 
[root@web ~]# mv /usr/bin/openssl /usr/bin/openssl.old           
[root@web ~]# mv /usr/include/openssl/ /usr/include/openssl.old
[root@web ~]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
[root@web ~]# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
  
2.库文件搜索路径
[root@web ~]# vim /etc/ld.so.conf
/usr/local/ssl/lib
[root@web ~]# ldconfig -v
 
3.查看openssl版本
[root@web ~]# openssl version -a    
OpenSSL 1.0.1 14 Mar 2012
built on: Sun Apr  1 21:52:53 CST 2012
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/local/ssl/ssl"   
 
二、编译安装lighttpd
 
 ./configure --prefix=/usr/local/lighttpd --with-openssl --with-openssl-libs=/usr/local/ssl/lib/
 
这里与之前安装的区别是--with-openssl-libs=/usr/local/ssl/lib/ 其他的安装步骤相同,这里略过。。。。
 
三、加入https支持
1.查看是否支持ssl
[root@web ~]# /usr/local/lighttpd/sbin/lighttpd -v
lighttpd/1.4.30 (ssl) - a light and fast webserver
Build-Date: Apr  2 2012 10:40:18
 
如果不支持ssl,则需要重新编译,编译时加入参数--with-openssl --with-openssl-libs=/usr/lib
 
2.生成自我认证的证书文件或者通过第三方CA认证
[root@web ~]# mkdir /etc/lighttpd/ssl
[root@web ~]# cd /etc/lighttpd/ssl/
[root@web ssl]# openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes 
[root@web ssl]# chmod 400 server.pem
 
按照提示填写相应内容,然后生成server.pem文件
 
3.配置lighttpd
  1. $SERVER["socket"] == ":443" { 
  2.   ssl.engine                  = "enable" 
  3.   ssl.pemfile                 = "/etc/lighttpd/ssl/server.pem" 
  4.   server.document-root        = "/srv/www/htdocs/" 

四、测试

经过简单测试,初步认为是openssl的版本不兼容造成的。
 
参考:
http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:SSL
http://blog.csdn.net/eric0208/article/details/3952693