一.     单向serve端验证

      客户端验证服务器的可靠性

       1.创建Self-SignedCertificates(自签证书是一种由签名实体发布给自身的证书,即发布者和证书主体相同.例如:所有根证书授权机构(CA)CA证书都是自签证书)

#openssl req -new-x509 \

              -keyout server.pem -out server.pem\

              -days 365 -nodes

上面的命令生成一个server.pem文件。

       2.lighttpd配置

$SERVER["socket"]== ":443" {

ssl.engine = "enable"

ssl.use-sslv2 = "disable"

    ssl.pemfile = "C:/ProgramFiles/LightTPD/ssl/server.pem"

}

       3.启动测试

httphttps均可以连接。

https会提示不可信任的证书,会提示用户确认以便继续操作。

二.     添加client端验证(SSL Client Certificate validating)

       服务器验证客户端的可靠性

       1.中间CA系统的建立,需要用到CA.pl

FreeBSD系统中路径如下。

/usr/src/crypto/openssl/apps/CA.pl

       1.建立根CA

$CA.pl-newca

注意:认真确认每一步,不能有错误,否则创建出来的root CA无效。

       2).客户端向跟CA请求证书。这一步可有客户端完成,不一定在服务器这边。

$CA.pl-newreq

3.中间CA收到客户端发过来的请求证书,用根CA签名这个证书。

$CA.pl-signreq

注意:这一步会提示输入根CA private key的密码。

经过上面3步,会得到下列文件:

demoCA/cacert.pem(lighttpd需要)

newkey.pem(客户端保留)

newreq.pem(客户端发给机构,用来生成newcert.pem)

newcert.pem(lighttpd需要)

       2.lighttpd的配置。

$SERVER["socket"]== ":443" {

    ssl.engine = "enable"

    ssl.use-sslv2 = "disable"

    ssl.pemfile = "C:/ProgramFiles/LightTPD/ssl/server.pem"

    # =========以下是为客户端证书添加==============

    ssl.verifyclient.activate ="enable"

    ssl.verifyclient.depth = 1

    ssl.ca-file = "C:/Program Files/LightTPD/ssl/cacert.pem"

}

       3.测试验证

       $OpenSSL s_client -connect192.168.2.21:443 -key newkey.pem -cert newcert.pem -CAfile serverCA.pem

注:serverCA.pem是基本https服务器配置的server.pem中的publickey

如何连接正确会看到如下信息

==================

---

Acceptable clientcertificate CA names

/C=CA/ST=China/O=PolyVi/OU=Develop/CN=u0u0/[email protected]

---

SSL handshake hasread 1204 bytes and written 1216 bytes

---

New, TLSv1/SSLv3,Cipher is AES256-SHA

Server public keyis 1024 bit

Compression: NONE

Expansion: NONE

SSL-Session:

    Protocol : TLSv1

    Cipher   : AES256-SHA

    Session-ID: 76BD8310ABC6B2D952FBA8E896D856BDBF1BAA

    Session-ID-ctx:

    Master-Key: 6E717EAA310E360B04010BC8683D8BF6977D9E0801CAE148AB

8B5768BE5EE884696B317

    Key-Arg  : None

    Start Time: 1268359182

    Timeout  : 300 (sec)

    Verifyreturn code: 0 (ok)

---

closed

=============================

       4.firxfox验证

生成firefox认识的证书格式

       $OpenSSL pkcs12 -export -clcerts -innewcert.pem -inkey newkey.pem -out newcert.pfx -name "DemoCA u0u0"

       工具->选项->高级->加密->查看证书->您的证书->导入

       选择newcert.pfx,连接https://127.0.0.1/进行测试.

02-12 05:48