Apache安装MOD_SSL的补充--手工签署证书的方法
		
		
		
		
				 虽然在安装MOD_SSL时已经使用 make certificate 命令建立了服务器 
的证书签名,但是有时你可能需要改变它。 
当然有很多自动的脚本可以实现它,但是最可靠的方法是手工签署 
证书。 
首先我假定你已经安装好了openssl和MOD_SSL,如果你的openssl安装时 
的prefix设置为/usr/local/openssl,那么把/usr/local/openssl/bin加入 
执行文件查找路径。还需要MOD_SSL源代码中的一个脚本,它在MOD_SSL的 
源代码目录树下的pkg.contrib目录中,文件名为 sign.sh。 
将它拷贝到 /usr/local/openssl/bin 中。 
先建立一个 CA 的证书, 
首先为 CA 创建一个 RSA 私用密钥, 
[S-1] 
openssl genrsa -des3 -out ca.key 1024 
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。 
生成 ca.key 文件,将文件属性改为400,并放在安全的地方。 
[S-2] 
chmod 400 ca.key 
你可以用下列命令查看它的内容, 
[S-3] 
openssl rsa -noout -text -in ca.key 
利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构) 
[S-4] 
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 
然后需要输入下列信息: 
Country Name: cn 两个字母的国家代号 
State or Province Name: An Hui 省份名称 
Locality Name: Bengbu 城市名称 
Organization Name: Family Network 公司名称 
Organizational Unit Name: Home 部门名称 
Common Name: Chen Yang 你的姓名 
Email Address: sunstorm@263.net Email地址 
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方。 
[S-5] 
chmod 400 ca.crt 
你可以用下列命令查看它的内容, 
[S-6] 
openssl x509 -noout -text -in ca.crt 
下面要创建服务器证书签署请求, 
首先为你的 Apache 创建一个 RSA 私用密钥: 
[S-7] 
openssl genrsa -des3 -out server.key 1024 
这里也要设定pass phrase。 
生成 server.key 文件,将文件属性改为400,并放在安全的地方。 
[S-8] 
chmod 400 server.key 
你可以用下列命令查看它的内容, 
[S-9] 
openssl rsa -noout -text -in server.key 
用 server.key 生成证书签署请求 CSR. 
[S-10] 
openssl req -new -key server.key -out server.csr 
这里也要输入一些信息,和[S-4]中的内容类似。 
至于 'extra' attributes 不用输入。 
你可以查看 CSR 的细节 
[S-11] 
openssl req -noout -text -in server.csr 
下面可以签署证书了,需要用到脚本 sign.sh 
[S-12] 
sign.sh server.csr 
就可以得到server.crt。 
将文件属性改为400,并放在安全的地方。 
[S-13] 
chmod 400 server.crt 
删除CSR 
[S-14] 
rm server.csr 
最后apache设置 
如果你的apache编译参数prefix为/usr/local/apache, 
那么拷贝server.crt 和 server.key 到 /usr/local/apache/conf 
修改httpd.conf 
将下面的参数改为: 
SSLCertificateFILE /usr/local/apache/conf/server.crt 
SSLCertificateKeyFile /usr/local/apache/conf/server.key
		
		
		
		
		
		
		openssl自建证书SSL+apache
		
		 本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上实验通证
本文的目的是为了交流,如有出错的地方,请指教
转载请注明出处,并保持文章的完整性
现在开始安装
首先在安装之前要明白一些基本概念
1、SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CA如Verisign 或 Thawte签署证书。
2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。
因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。
3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。
用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl手册。
步骤一:安装openssl和apache1、到www.openssl.org下载openssl-0.9.7e.tar.gz(目前最新版)
2、卸载掉老的opensll库
CODE: #rpm –e –-nodeps openssl   | 
3、解压:
CODE: #tar xzvf openssl-0.9.7e.tar.gz  | 
4、进入openssl目录,并安装,用--prefix指定openssl安装目录
CODE: #cd openssl-0.9.7e #./config --prefix=/usr/local/openssl #make #make test #make install   | 
5、安装apache
至www.apache.org/dist下载apache最新版httpd-2.0.52.tar.gz
解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装
CODE: #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/目录
CODE: [root@win ssl]# 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文件了
CODE: [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、签署服务器证书
生成服务器私钥:
CODE: [root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024  | 
生成服务器证书请求
CODE: [root@win ssl.crt]# openssl req -new -key server.key -out server.csr  | 
会要求输入信息
CODE: 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文件mv成newreq.pem,然后用CA.sh来签证就可以了
CODE: [root@win ssl.crt]# mv server.csr newreq.pem [root@win ssl.crt]# ./CA.sh -sign  | 
这样就生成了server的证书newcert.pem
把newcert.pem改名成server.crt
CODE: [root@win ssl.crt]# mv newcert.pem server.crt  | 
4、处理客户端:
生成客户私钥:
CODE: [root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024  | 
请求
CODE: [root@win ssl.crt]# openssl req -new -key client.key -out client.csr  | 
签证:
CODE: [root@win ssl.crt]# openssl ca -in client.csr -out client.crt  | 
把证书格式转换成pkcs12格式
CODE: [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和证书放到这里
CODE: #cp demoCA/cacert.pem cacert.pem  | 
同时复制一份证书,更名为ca.crt
CODE: #cp cacert.pem ca.crt  | 
步骤三、编辑ssl.conf
CODE: #cd /usr/local/apache/conf  | 
编辑ssl.conf
CODE: 指定服务器证书位置 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
CODE: /usr/local/apache/bin/apachectl startssl  | 
会要求输入server.key的密码
启动,这样一个默认的SSL服务器及http服务器就启动了,
步骤四、安装和使用证书把刚才生成的证书:根证书ca.crt和客户证书client.pfx下到客户端,并安装,
ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。
	
posted on 2006-11-29 15:47 
liunix 阅读(324) 
评论(0)  编辑  收藏