看本文者,请支持下本人的 超级搜索引擎 http://sugoogle.com
首先要说明 , 在装上ssl 后, 如何 ssl 是通过什么方式 防止欺骗的 细节我也不是很清楚. 如果哪位大虾 知道, 请不吝赐教.
软件包的 安装 部分 我掠过 .
这注意
lighttpd 的 启动时 不仅 指定 配置文件 ,还要指定 库文件.
具体是这样 ./sbin/lighttpd -f ./lighttpd.conf -m ./lib/
关键在于配置文件 lighttpd.conf
第一部分 lighttpd + fastcgi
很简单. 对于配置文件 lighttpd.conf 注意一下三块配置.
第一块
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
"mod_fastcgi",
# "mod_proxy",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
"mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
"mod_accesslog" )
第二块
static-file.exclude-extensions = ( ".php", ".pl",".cgi",".fcgi",".fastcgi" )
第三块
fastcgi.server = (
"/test" => ( (
"socket" => "/tmp/test.fastcgi.socket",
"check-local" => "disable",
"bin-path" => "/srv/www/htdocs/myfcgi.fcgi",
"min-procs" => 1,
"max-procs" => 30,
"idle-timeout" => 30
)
)
)
然后 通过 http://XXX.XXX.XXX.XXX/test
就能访问 到 fastcgi 所指定的 程序. myfcgi.cgi.
接下来 介绍 如何 加入 ssl 证书. (我很不清楚 ssl 的工作原理 在 这里是如何表现的.)
我自己使用的是 自签名方式 ,
1
首先生成 根证书.
openssl req -new -x509 -keyout ca.key -out ca.crt
也可以用
./CA.sh -newca
其实 它用到的命令 也是 openssl req -new -x509 -keyout ca.key -out ca.crt ,不同地方是, 它又建立了所需要的目录结构.
在这 同时生成了 自签名的 证书请求 ca.csr (上面写的是 ca.crt , 因为我用拷贝,并且原文里有错误, 以下所有命令里的 *.crt 都是 *.csr) 和 证书密钥 ca.key.
2 用 命令 生成 服务器的 公钥 ,私钥.
$openssl genrsa -des3 -out server.key 1024
$openssl req -new -key server.key -out server.csr
3 用命令 生成 客户端的 公钥 , 私钥
$openssl genrsa -des3 -out client.key 1024
$openssl req -new -key client.key -out client.csr
4.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
5.生成p12格式证书
$openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx
$openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
6.生成pem格式证书
有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成
$cat client.crt client.key> client.pem
$cat server.crt server.key > server.pem
7.PFX文件转换为X509证书文件和RSA密钥文件
$openssl pkcs12 -in server.pfx -nodes -out server.pem
$openssl rsa -in server.pem -out server2.key
$openssl x509 -in server.pem -out server2.crt
这样生成服务端证书:ca.crt, server.key, server.crt, server.pem, server.pfx,客户端证书:ca.crt, client.key, client.crt, client.pem, client.pfx
然后 将所有证书 放在一个目录下面 例如:
[root@sunike su_use]# ls
cacert.pem cakey.pem client_4.pem client_4_s.csr server_2.csr server_2.pfx server.key
ca.csr client_4.csr client_4.pfx client.key server_2.pem server_2_s.csr
[root@sunike su_use]# pwd
/usr/local/lighttpd-1.4.26/su_use
然后 修改 配置文件 lighttpd.conf
增加
$SERVER["socket"] == ":6666"{
ssl.engine = "enable"
ssl.pemfile = "/usr/local/lighttpd-1.4.26/su_use/server_2.pem"
ssl.ca-file = "/usr/local/lighttpd-1.4.26/su_use/ca.csr"
# server.name = "abc.com"
server.document-root = "/srv/www/htdocs/"
server.errorlog = "/srv/www/htdocs/ssl.error.log"
accesslog.filename = "/srv/www/htdocs/ssl.access.log"
}
ssl.engine = "enable"
ssl.pemfile = "/usr/local/lighttpd-1.4.26/su_use/server_2.pem"
另外 要注意, 要保证你的 lighttpd 支持 ssl
请看 大屏幕.
lighttpd -V
上面 如果显示
lighttpd/1.4.26 (ssl) - a light and fast webserver
Build-Date: Jun 5 2010 02:59:20
那么我们认为是 支持 ssl 的.
同时 在编译时 要 加入
--with-openssl[=DIR] Include openssl support (default no)
--with-openssl-includes=DIR
OpenSSL includes
--with-openssl-libs=DIR OpenSSL libraries
才能使用.
我当时是这么用的.
./configure --prefix=/usr/local/lighttpd-1.4.26/ --with-openssl --with-openssl-includes=/usr/local/include/ --with-openssl-libs=/usr/local/lib
这样就可以用
https://XXX.XXX.XXX.XXX:6666 来访问 /src/www/htdocs 了.
这里面 , 对于 公钥 ,私钥的 用途 , 服务器端, 客户端 的用途.
还有 ca 机制 我不了解.
以后 再补上.
参考文章 :
http://www.lupaworld.com/action_viewstutorial_itemid_4650.html
http://www.javaeye.com/topic/584927
时间太紧, 不敢 详细说 ,只说了说 我自己遇到的问题.