linux 下CA服务器安装 .

leeknives 2011-10-12

分类:保密安全性2010-01-0422:011011人阅读评论(1)收藏举报

转载来自:http://hi.baidu.com/mx87/blog/item/32ca90fc715ffcfffd037f08.html

本文在LINUXAS3.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、到www.openssl.org下载openssl-0.9.7e.tar.gz(目前最新版)

2、卸载掉老的opensll库(如果卸载了出错,说找不到某些*.so.x的文件就不要卸载)

命令:

#rpm–e–-nodepsopenssl

3、解压:

命令:

#tarxzvfopenssl-0.9.7e.tar.gz

4、进入openssl目录,并安装,用--prefix指定openssl安装目录

命令:

#cdopenssl-0.9.7e

#./config--prefix="/usr/local/openssl"

#make

#maketest

#makeinstall

5、安装apache(如果安装系统的时候按需配置安装了apache也可以,我是这种方法)

至www.apache.org/dist下载apache最新版httpd-2.0.52.tar.gz

解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装

命令:

#tarzxvfhttpd-2.0.52.tar.gz

#cdhttpd-2.0.52

#./configure--prefix="PREFIX"--enable-ssl--enable-rewrite--enable-so--with-ssl="/usr/local/openssl"

#make

#makeinstall

步骤二:签证

安装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

要求输入如下信息:

CountryName(2lettercode)[GB]:CN

StateorProvinceName(fullname)[Berkshire]:zhejiang

LocalityName(eg,city)[Newbury]:hangzhou

OrganizationName(eg,company)[MyCompanyLtd]:xiongwei

OrganizationalUnitName(eg,section)[]:xw

CommonName(eg,yournameoryourserver'shostname)[]:ipman.cn

EmailAddress[]:[email protected]

当OpenSSL提示你“CommonName”时,确保您输入了服务器的FQDN("FullyQualifiedDomainName",即,当您为一个以后用https://www.foo.dom/访问的网站生成一个CSR时,这里输入"www.foo.dom"。

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

3、签署服务器证书

生成服务器私钥:

命令:

#opensslgenrsa-des3-outserver.key1024

生成服务器证书请求

命令:

#opensslreq-new-keyserver.key-outserver.csr

会要求输入信息

CountryName(2lettercode)[GB]:CN

StateorProvinceName(fullname)[Berkshire]:zhejiang

LocalityName(eg,city)[Newbury]:hangzhou

OrganizationName(eg,company)[MyCompanyLtd]:xiongwei

OrganizationalUnitName(eg,section)[]:xw

CommonName(eg,yournameoryourserver'shostname)[]:ipman.cn

EmailAddress[]:[email protected]

当OpenSSL提示你“CommonName”时,确保您输入了服务器的FQDN("FullyQualifiedDomainName",即,当您为一个以后用https://www.foo.dom/访问的网站生成一个CSR时,这里输入"www.foo.dom"。

Pleaseenterthefollowing'extra'attributes

tobesentwithyourcertificaterequest

Achallengepassword[]:yourpassd

Anoptionalcompanyname[]:xw

最后把server.crt文件mv成newreq.pem,然后用CA.sh来签证

命令:

#mvserver.csrnewreq.pem

#./CA.sh-sign

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

把newcert.pem改名成server.crt

命令:

#mvnewcert.pemserver.crt

4、处理客户端:

生成客户私钥:

命令:

#opensslgenrsa-des3-outclient.key1024

请求:

命令:

#opensslreq-new-keyclient.key-outclient.csr

签证:

命令:

#opensslca-inclient.csr-outclient.crt

把证书格式转换成pkcs12格式

命令:

#opensslpkcs12-export-clcerts-inclient.crt-inkeyclient.key-outclient.pfx

5、这时就有了三张证书和三个私钥,一个是demoCA下的根证书,ssl.crt下的服务器证书和客户证书。及demoCA/private下的根key,ssl.crt下的服务器key和客户key,在conf下的ssl.conf下指定证书的位置和服务器key的位置并将所有的key和证书放到这里

命令:

#cpdemoCA/cacert.pemcacert.pem

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

命令:

#cpcacert.pemca.crt

步骤三、编辑ssl.conf

命令:

#cd/usr/local/apache/conf

#vissl.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请求

SSLVerifyClientrequire

SSLVerifyDepth1

启动ssl

命令:

/usr/local/apache/bin/apachectlstartssl

会要求输入server.key的密码

启动,这样一个默认的SSL服务器及http服务器就启动了。

步骤四、安装和使用证书

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

ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器

相关推荐