文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>OpenSSL 相关配置

OpenSSL 相关配置

时间:2010-12-26  来源:lksj

0.准备工作     SSL的原理见http://blog.chinaunix.net/u/4940/showart_2344164.html     需要三台机器,分别扮演不同的角色:     a. 192.168.0.48  ca.example.com   CA证书中心     b. 192.168.0.49  server.example.com  服务器,以dovecot服务器为例     c. 192.168.0.50  client.example.com  客户端
ps.其实两台,甚至1台都可以,但是新手估计会很混乱的,这东西有一点点绕人
1.配置CA     修改openssl配置文件/etc/pki/tls/openssl.cnf,做如下修改:     [ CA_default ]      dir = /etc/pki/CA   #CA中心的目录     crl_dir = $dir/crl  #被吊销证书的目录     database = $dir/index.txt  #证书索引文件
    new_certs_dir =$dir/newcerts  #经过CA中心签名的证书备份目录
    certificate = $dir/my-ca.crt  # CA的公钥文件名     serial = $dir/serial  # CA中心的颁发证书序列号     crlnumber = $dir/crlnumber #已吊销证书序列号          crl = $dir/my-ca.crl  #证书吊销列表     private_key = $dir/private/my-ca.key #CA私钥文件          ...     default_days = 365 #证书有效期          [ policy_match]     此段为证书相关信息选项,其中match指定的项,要求被签名证书一定要与CA的对应项一致。
    [ req_distinguished_name ]     此段为CA证书的默认配置
    下面开始配置,先建立CA中心的各个文件和目录,且umask 使用077     #(umask 077;mkdir -p /etc/pki/CA/{certs,crl,newcerts,private})     #touch /etc/pki/CA/{crl,serial,crlnumber}     #echo 00 > /etc/pki/CA/serial 
    然后生成CA的私钥和公钥
    #(umask 077;openssl genrsa -out /etc/pki/CA/private/my-ca.key -des3 2048)     由私钥生成公钥     #openssl req -new -x509 -key /etc/pki/CA/private/my-ca.key -days 365 > /etc/pki/CA/my-ca.crt
    将my-ca.crt,即公钥放到ftp或者http等服务器,供其他人下载
2.配置服务器          安装dovecot,配置dovecot只提供imaps服务,修改/etc/dovecot.conf的protocol项,并取消以下两行的注释:     #ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem     #ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
    此时dovecot已经在这两个地方提供了证书,但是证书信息是默认的,所以需要重新生成,生成证书的方法有很多,CE的课程里使用make命令生成pem的对称密钥,这里我们使用dovecot自带的脚本工具生成非对称加密的一对密钥:     复制/usr/share/doc/dovecot-1.7.0/examples/mkcert.sh到root家目录,不复制直接改也行,复制以下保险一点     修改mkcert.sh的OPENSSL、SSLDIR、OPENSSLCONFIG几项,如:     OPENSSL=/usr/bin/openssl     SSLDIR=/etc/pki/dovecot     OPENSSLCONFIG=/etc/pki/tls/openssl.cnf  #此处可以事先更改openssl.cnf          删除/etc/pki/dovecot/certs/dovecot.pem和/etc/pki/dovecot/private/dovecot.pem,执行mkcert.sh生成新的服务器密钥,此时的公钥是自签名的,文件位置跟刚才删除的一样,然后启动服务
3.客户端mutt配置
    在客户端新建用户,如alice,此用户在服务器上也有。     使用alice登录,如果没有~/.mutt目录则新建,然后新建~/.mutt/muttrc文件,加入如下几行,指明改用的mutt目录,以及使用imaps服务,否则mutt不能使用imaps,只能用不加密的imap。          set folder=imaps://server.example.com/     set spoolfile=imaps://server.example.com/     set imap_force_ssl=yes
    运行mutt,此时会提示证书自签名,不被信任,但是仍旧可以看到邮件。下面将dovecot服务器的证书发到CA中心进行授权。
    ps.这里也可以使用Thunderbird或Evolution进行测试,图形化界面,比mutt更容易配置。
4.CA对DOVECOT证书签名授权          重新生成dovecot的私钥,用原来的也行,不过不太安全。     #(umask 077;openssl genrsa 2048 > ~/dovecot.key)     由这个私钥生成csr(证书签名请求)文件:     #(umask 077;openssl req -new -key ~/dovecot.key -out dovecot.csr)
    查看这个请求的内容     #openssl req -in deovecot.csr -noout -text          将dovecot.csr发送到CA中心,在CA中心对其进行签名:     #openssl ca -in devecot.csr -out dovecot.crt 
    ps.CA中心每对一个证书进行签名,serial会自动加1,签过名的证书会保存在newcerts目录,以备以后吊销时使用,index.txt文件里会记录所有证书的相关信息
    将签过名的证书还给dovecot服务器,并用新的一对密钥替换掉老的          #cp ~/dovecot.key /etc/pki/dovecot/private/dovecot.pem     #cp ~/dovecot.crt /etc/pki/dovecot/certs/dovecot.pem 
     重启服务,使新证书生效
5.在将CA中心的证书导入mutt            下载CA的证书,wget http://ca.example.com/certs/my-ca.crt      修改.muttrc文件,加入如下行:      set certificate_file=~/.mutt/my-ca.crt        再次打开mutt,证书提示不见了,因为此时的dovecot证书已经过CA中心的签名,mutt已经可以识别了
6.吊销证书
     假设dovecot的私钥被窃取,导致经CA签名的证书变得不可靠,所以CA中心吊销此证书的签名授权。
     先在服务器上查出证书的序列号,主题信息:      #openssl x509 -in /etc/pki/dovecot/certs/dovecot.pem -noout -serial -subject            查看CA中心里证书的状态:      more /etc/pki/CA/index.txt       此时证书状态为 V,表示可用
     CA中心得到证书的序列号和subject就可以定位证书并注销:      #openssl ca -revoke /etc/pki/CA/newcerts/00.pem 
     更新被吊销证书列表文件:      #openssl ca -gencrl -out /etc/pki/CA/crl/my-ca.crl       此时证书才真正被吊销,index.txt中证书状态变为R,标明revoked。      查看被吊销证书:      #openssl crl -in my-ca.crl -noout -text
     firefox,thunderbird只支持DER格式的crl,所以还需要生成另外一个crl文件      #openssl crl -in my-ca.crl -outform DER -out my-ca-der.crl
     复制my-ca.crl和my-ca-der.crl文件到http服务器,供别人下载,否则客户端仍旧不知道哪些证书被吊销了

7.在客户端导入crl列表            mutt没找到如何使用crl,所以这里使用ThunderBird。
     在“属性”下导入crl列表,填入crl文件的地址就行了:      http://ca.example.com/crl/my-ca-der.crl
     配置完成后重启ThunderBird,会收到提示,说证书已失效。



以上是openssl的配置过程,涉及的关键命令如下:           openssl genrsa 2048 my-ca.key #生成私钥 openssl req -new -x509 -key my-ca.key > my-ca.crt #生成公钥
mkcert.sh 生成自签名公钥证书
openssl req -new -key dovecot.key -out dovecot.csr # 生成证书签名请求文件 openssl ca -in dovecot.csr -out dovecot.crt #对证书进行签名
openssl ca -revoke 00.pem #吊销证书
openssl ca -gencrl -out my-ca.crl #更新crl列表



      
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载