lighttpd + fastcgi + ssl (openssl)

看本文者,请支持下本人的 超级搜索引擎  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 的工作原理 在 这里是如何表现的.)

 

 我自己使用的是 自签名方式 ,

 

  首先生成 根证书.

 

      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

 

时间太紧, 不敢 详细说 ,只说了说 我自己遇到的问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值