一. 单向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.启动测试
http和https均可以连接。
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/进行测试.