一、简单描述一下证书的原理与作用。
        所谓证书,就是使用私钥进行了数字签名的一个文件,文件里包含了用户的一些信息和公钥。认证者可以从证书中取得公钥,从而对用户进行身份认证。
        很明显,证书就相当于一张×××,让人可以对其进行身份认证。
        证书身份认证方式是采用的是密码学中非对称密钥方式,私钥加密,公钥解密,所以任何人都可以对其进行身份认证。与数据传输中的非对称密钥加密方式正好相反,公钥加密,私钥解密,任何人都可以给发送加密的数据,而只有我能够正确解密。
        做一个证书并不难,就像做一个假的×××一样,大街上随处可见。所以要有权威的机构来发行证书,所谓的权威机构,就是它发行的证书就是真的,你只要验证这个证书是它发行的就可以了,就像只有某某公安局发行的×××才是真的一样。那么权威机构自己也有一张证书,这个证书就是CA证书。CA证书可以给其他用户签署用户证书。从理论上讲,CA证书和用户证书也没什么太大区别,原理都是一样的。
        当采用证书方式进行身份认证时,如果认证者不验证用户证书的颁发机构,那只要用户有一张证书就可以了;如果需要验证用户证书的颁发机构,那认证者需要有一张用户证书颁发机构的CA证书,用户的证书也必须是由同一机构所颁发(即,用同样的CA证书签署过的)。
 
        二、下面说一下证书在无线网络世界里的应用。
        在无线网络世界里,经常需要使用证书的方式进行身份认证。简单的列举几种方式:
        1、EAP-TLS。这种方式采用了双向安全认证,即,服务器要对用户进行认证,用户也要对服务器进行认证。这双向认证都是在采用非对称加密的安全方式进行的,也就是证书方式。这种方式应用并不很广泛,其原因就是没个用户都要安装证书,比较繁琐。
        2、EAP-PEAP/EAP-TTLS。这种方式只需要服务器端安装证书,也就是用户对服务器的认证是采用证书认证的。单向安全认证完毕后,双方建立加密的安全隧道,而服务器对用户的认证是在安全隧道中完成的,采用的是传统的认证方式,如,PAP/CHAP/MS-CHAP等。
 
        三、再讲一下如何使用OpenSSL制作证书。
        作为学习或测试使用,我们当然不需要花钱去权威机构申请证书,只要自己做一个就可以了。OpenSSL可以帮你完成这项工作。
        1、先做一张CA证书,有了它,你就是所谓的权威机构,你就可以给别人签发证书了。
§ openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
        这里有两个输出文件(ca.key和ca.crt)和一个输入文件(openssl.cnf)。ca.crt就是ca证书了,ca.key就是ca证书的私钥,不过是经过加密的了。openssl.cnf就是openssl的config文件了。值得说明的是,还有几个文件是所必须的,先罗列一下。文件:index.txt,dh,index.txt.attr,random,serial;目录:certs,private,crl,newcerts。
        2、为用户生成私钥
§ openssl genrsa -des3 -out client.key 1024
        des3是一种对称加密方式,这里是对生成的私钥进行加密的。当然你也可以采用其它的方式进行加密,如,aes等。
        3、为用户生成证书请求文件
openssl req -new -key client.key -out client.csr -config openssl.cnf
        4、使用CA证书对用户的证书请求文件进行签署,生成用户证书
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
        至此,用户的证书已经生成完毕。通常情况下,对于ms-window的客户端来说,证书都是采用pkcs12的格式,这样更容易安装。
        5、生成pkcs12格式的证书文件
openssl pkcs12 –export –inkey client.key –in client.crt –out client.p12
openssl pkcs12 –export –inkey ca.key –in ca.crt –out ca.p12
        这样,你就可以将client.p12和ca.p12拿到你的window机器上安装了,安装方式很简单,只要双击就可以了,按提示进行。ca.p12要放到受信任的根证书下。
 
        对于Freeradius来说,也需要证书,我暂且把它叫做server证书。其生成方式和用户证书一样。(其实只是取的名字不一样,原理都一样)。需要说明的是,Freeradius一般识别的是pem类型文件,所以将私钥和证书合并成一个pem文件。
        6、生成Freeradius需要的pem文件
cat ca.crt ca.key > ca.pem
cat server.crt server.key > server.pem
        ca.pem和server.pem就是Freeradius所需要的了,完毕。
 
        四、Freeradius的EAP配置
        其实主要是指定证书的位置就好了。
        tls {
                     
                        certdir = /usr/local/etc/raddb/cert_kun
                        cadir = /usr/local/etc/raddb/cert_kun
                        private_key_password = trapeze
                        private_key_file = ${certdir}/server.pem
                        CA_file = ${cadir}/ca.pem
                        dh_file = ${certdir}/dh
                        random_file = ${certdir}/random
                       ....
             }
 
        完毕!