当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 使用自建的证书服务器安装SSL(apache)转贴

Unix/Linux
mysql+httpd+gd+php+zend
automake 小回顾
unix黑客精神的最好诠释
www
sun t3存储的设置
RPM简明中文手册
Linux爱好者入门教程 序章 (持续更新)
第一章 Linux基础知识 (飘心)
linux下进程与线程
浅谈如何学习linux
第二章 Linux安装
硬件安装指南
Windows 2000 的桌面不見了的解決方法
部分的ADSL路由器默认帐号密码
如何设定安全log服务器呢?
iptables 规则速查
网友学习 Linux 的七点忠告
sniffer的含义及原理
Linux编程白皮书 第二章 内存管理
Linux编程白皮书 第二章 内存管理 2.1.1 请求调页 --2.1.5 访问控制

Unix/Linux 中的 使用自建的证书服务器安装SSL(apache)转贴


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 173 ::
收藏到网摘: n/a


本文章在LINUX9+apache2.0.52,openssl0.97上实验通证本文的目的是为了交流,如有出错的地方,请指教
使用自建的证书服务器安装SSL(apache)笔记 本文章在LINUX9+apache2.0.52,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库 代码:#rpm –e –-nodeps openssl 3、解压:代码:#tar xzvf openssl-0.9.7e.tar.gz4、进入openssl目录,并安装,用--prefix指定openssl安装目录代码:#cd openssl-0.9.7e#./config --prefix=/usr/local/openssl#make#make test#make install 5、安装apache至http://www.apache.org/dist下载apach...d-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/目录代码:[root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh2、运行CA.sh -newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private/cakey.pem就是CA的key文件啦,./demoCA/cacert.pem就是CA的crt文件了代码:[root@win ssl.crt]# ./CA.sh -newca要求输入如下信息:引用:Country Name (2 letter code) [GB]:CNState or Province Name (full name) [Berkshire]:FUJIANLocality Name (eg, city) [Newbury]:FUZHOUOrganization Name (eg, company) [My Company Ltd]:FJJMOrganizational Unit Name (eg, section) []:FDCommon Name (eg, your name or your server's hostname) []:WINEmail Address []:[email protected] 这样就建好了一个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]:CNState or Province Name (full name) [Berkshire]:FUJIANLocality Name (eg, city) [Newbury]:FUZHOUOrganization Name (eg, company) [My Company Ltd]:FJJMOrganizational Unit Name (eg, section) []:FDCommon Name (eg, your name or your server's hostname) []:WINEmail Address []:[email protected] enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:WINAn optional company name []:WING最后把server.crt文件mv成newreq.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.crt4、处理客户端:生成客户私钥:代码:[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