Chinaunix首页 | 论坛 | 博客
  • 博客访问: 489077
  • 博文数量: 127
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1972
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-01 12:42
文章分类

全部博文(127)

文章存档

2009年(33)

2008年(94)

我的朋友

分类: LINUX

2008-06-11 09:51:52

转载:wingger
本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上实验通证

首先在安装之前要明白一些基本概念

1
SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CAVerisign  Thawte签署证书。


2
、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。

因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。

3
、签发证书的问题:很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。

openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,有兴趣的可以参考一下openssl手册。


步骤一:安装opensslapache
1
、到下载openssl-0.9.7e.tar.gz(目前最新版)
2
、卸载掉老的opensll 

#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最新版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/apache2/conf下,建立一个ssl.crt目录,将CA.sh文件copy/usr/local/apache/conf/ssl.crt/目录

[root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache2/conf/ssl.crt/CA.sh



2
、运行CA.sh -newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private/cakey.pem就是CAkey文件啦,./demoCA/cacert.pem就是CAcrt文件了

[root@win ssl.crt]# ./CA.sh -newca



要求输入如下信息:
引用:Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM


这样就建好了一个CA服务器,有了一个根证书的私钥cakey.pem及一张根证书cacert.pem,现在就可以cacert.pem来给签证了

3
、签署服务器证书
生成服务器私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024


生成服务器证书请求

[root@win ssl.crt]# openssl req -new -key server.key -out server.csr


会要求输入信息

Country Name (2 letter code) [GB]:CN


State or Province Name (full name) [Berkshire]:FUJIAN


Locality Name (eg, city) [Newbury]:FUZHOU


Organization Name (eg, company) [My Company Ltd]:FJJM


Organizational Unit Name (eg, section) []:FD


Common Name (eg, your name or your server's hostname) []:WIN


Email Address []:WIN@WIN.COM


Please enter the following 'extra' attributes


to be sent with your certificate request


A challenge password []:WIN


An optional company name []:WING



最后把server.crt文件mvnewreq.pem,然后用CA.sh来签证就可以了

[root@win ssl.crt]# mv server.csr newreq.pem


[root@win ssl.crt]# ./CA.sh -sign

这样就生成了server的证书newcert.pem
newcert.pem改名成server.crt

[root@win ssl.crt]# mv newcert.pem server.crt




4
、处理客户端:
生成客户私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024


请求

[root@win ssl.crt]# openssl req -new -key client.key -out client.csr


签证:

[root@win ssl.crt]# openssl ca -in client.csr -out client.crt


把证书格式转换成pkcs12格式

[root@win ssl.crt]# 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的位置.

conf下建立一个ssl.crt目录,并将所有的key和证书放到这里

#cp demoCA/cacert.pem cacert.pem


同时复制一份证书,更名为ca.crt

#cp cacert.pem ca.crt





步骤三、编辑ssl.conf

#cd /usr/local/apache/conf


编辑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访问HTTPhttps服务器。

阅读(1179) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~