Chinaunix首页 | 论坛 | 博客
  • 博客访问: 705287
  • 博文数量: 140
  • 博客积分: 5097
  • 博客等级: 大校
  • 技术积分: 991
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-05 19:13
文章分类

全部博文(140)

文章存档

2018年(1)

2015年(5)

2014年(5)

2013年(2)

2011年(16)

2010年(6)

2009年(9)

2008年(45)

2007年(26)

2006年(25)

分类: LINUX

2013-06-21 14:57:30

本文在LINUX AS3.0+apache2.0.x,openssl0.97上实验通过 
首先在安装之前要明白一些基本概念 
1、SSL所使用的证书可以自己生成,也可以通过一个商业性CA(如Verisign 或 Thawte)签署证书。 
2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。 因此:在此环境中,至少必须有三个证书:根证书,服务器证书,客户端证书。 
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。 

3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。 用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl手册。 
步骤一:安装openssl和apache 
1、到下载openssl-0.9.7e.tar.gz(目前最新版) 
2、卸载掉老的opensll库(如果卸载了出错,说找不到某些*.so.x的文件就不要卸载) 
命令: 
#rpm –e –-nodeps openssl 
3、解压: 
命令: 
#tar xzvf openssl-0.9.7e.tar.gz 
4、进入openssl目录,并安装,用--prefix指定openssl安装目录 
命令: 
#cd openssl-0.9.7e 
#./config --prefix="/usr/local/openssl" 
#make 
#make test 
#make install 
5、安装apache (如果安装系统的时候按需配置安装了apache也可以,我是这种方法) 
至下载apache最新版httpd-2.0.52.tar.gz 
解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装 
命令: 
#tar zxvf httpd-2.0.52.tar.gz 
#cd httpd-2.0.52 
#./configure --prefix="PREFIX" --enable-ssl --enable-rewrite --enable-so --with-ssl="/usr/local/openssl" 
#make 
#make install 

步骤二:签证 
安装openssl后,在openssl下有一个CA.sh文件,就是利用此文件来签证,来签三张证书,然后利用这三张证书来布SSL服务器。 
1、在/usr/local/apache/conf下,建立一个ssl.crt目录,将CA.sh文件copy至/usr/local/apache/conf/ssl.crt/目录 
命令: 
#cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh 
2、运行CA.sh -newca,他会找您要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要您的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录
../demoCA/private/cakey.pem就是CA的key文件 
./demoCA/cacert.pem就是CA的crt文件 
命令: 
# ./CA.sh -newca 

要求输入如下信息: 

Country Name (2 letter code) [GB]:CN 
State or Province Name (full name) [Berkshire]:zhejiang 
Locality Name (eg, city) [Newbury]:hangzhou 
Organization Name (eg, company) [My Company Ltd]:xiongwei 
Organizational Unit Name (eg, section) []:xw 
Common Name (eg, your name or your server's hostname) []:ipman.cn 
Email Address []:foolkaka@hotmail.com 
当OpenSSL提示你“CommonName”时,确保您输入了服务器的FQDN("Fully Qualified Domain Name" ,即,当您为一个以后用访问的网站生成一个CSR时,这里输入""。 
这样就建好了一个CA服务器,有了一个根证书的私钥cakey.pem及一张根证书cacert.pem,现在就可以cacert.pem来给签证了

3、签署服务器证书 
生成服务器私钥: 
命令: 
# openssl genrsa -des3 -out server.key 1024 
生成服务器证书请求 
命令: 
# openssl req -new -key server.key -out server.csr 
会要求输入信息 

Country Name (2 letter code) [GB]:CN 
State or Province Name (full name) [Berkshire]:zhejiang 
Locality Name (eg, city) [Newbury]:hangzhou 
Organization Name (eg, company) [My Company Ltd]:xiongwei 
Organizational Unit Name (eg, section) []:xw 
Common Name (eg, your name or your server's hostname) []:ipman.cn 
Email Address []:foolkaka@hotmail.com 
当OpenSSL提示你“CommonName”时,确保您输入了服务器的FQDN("Fully Qualified Domain Name" ,即,当您为一个以后用访问的网站生成一个CSR时,这里输入""。 
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:yourpassd 
An optional company name []:xw 

最后把server.crt文件mv成newreq.pem,然后用CA.sh来签证 
命令: 
# mv server.csr newreq.pem 
# ./CA.sh -sign 
这样就生成了server的证书newcert.pem 
把newcert.pem改名成server.crt 
命令: 
# mv newcert.pem server.crt 

4、处理客户端: 
生成客户私钥: 
命令: 
# openssl genrsa -des3 -out client.key 1024 
请求: 
命令: 
# openssl req -new -key client.key -out client.csr 
签证: 
命令: 
# openssl ca -in client.csr -out client.crt 
把证书格式转换成pkcs12格式 
命令: 
# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx 

5、这时就有了三张证书和三个私钥,一个是demoCA下的根证书,ssl.crt下的服务器证书和客户证书。及demoCA/private下的根key,ssl.crt下的服务器key和客户key,在conf下的ssl.conf下指定证书的位置和服务器key的位置并将所有的key和证书放到这里 
命令: 
#cp demoCA/cacert.pem cacert.pem 
同时复制一份证书,更名为ca.crt 
命令: 
#cp cacert.pem ca.crt 

步骤三、编辑ssl.conf 
命令: 
#cd /usr/local/apache/conf 
#vi ssl.conf 
指定服务器证书位置 
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt 
指定服务器证书key位置 
SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key 
证书目录 
SSLCACertificatePath /usr/local/apache/conf/ssl.crt 
根证书位置 
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem 
开启客户端SSL请求 
SSLVerifyClient require 
SSLVerifyDepth 1 
启动ssl 
命令: 
/usr/local/apache/bin/apachectl startssl 
会要求输入server.key的密码 
启动,这样一个默认的SSL服务器及http服务器就启动了。 

步骤四、安装和使用证书 
把刚才生成的证书:根证书ca.crt和客户证书client.pfx下载到客户端,并安装。 

ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器
阅读(964) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~