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中心签名的证书备份目录
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列表
[ 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列表
相关阅读 更多 +