网络安全 频道

Web服务器

5.1 简介
Netscape公司提出的安全套接层(Secure Sockets Layer)的概念,简称SSL。顾名思义,这是一个建立在Socket层的安全协议,它屏蔽了高层协议如telnet、ftp、http的区别,把安全建立在了传输之上。目前该协议以被广泛采纳,它所定义的很多功能都成了下一代IP协议IPV6的一部分。
5.2 所需资源
1.2.1 所需包
1. Apache 1.3.19.tar.gz 
下载网址: 
http://www.tux.org/pub/net/apache/dist/apache_1.3.17.tar.gz 
2. openssl 0.9.6 要用他来生成密钥和签署证书 
下载网址:
http://www.openssl.org/source/openssl-0.9.6.tar.gz 
3. mod_ssl 2.8.0 
下载网址:
http://www.modssl.org/source/mod_ssl-2.8.0-1.3.19.tar.gz 
1.2.2 安装过程
1. 编译 OpenSSL: 
cd /usr/local
tar zxvf openssl-0.9.6.tar.gz
cd /usr/local/openssl-0.9.6 
./config --prefix=/usr/local/openssl 
#注意,这里是 config 而不是 configure。 
make 
make test 
make install 
2. 编译MOD_SSL 
cd /usr/local
tar zxvf mod_ssl-2.8.0-1.3.19
cd /usr/local/mod_ssl-2.8.0-1.3.19 
./configure --with-apache=../apache_1.3.19
3. 编译apache
cd /usr/local
tar zxvf apache_1.3.19
cd /usr/local/apache_1.3.19
SSL_BASE=../openssl-0.9.6 \ 
./configure --prefix=/usr/local/apache_1.3.19 \ 
--enable-module=ssl \ 
--enable-shared=ssl 
make 
4.生成CA
make certificate TYPE=custom 
说明:这一步要生成你自己的 CA (如果你不知道,我也不能细说了,简单地说就是认证中心),和用它来为你的服务器签署证书。 
STEP 0: 
选择算法,使用缺省的 RSA 
STEP 1: 
生成 ca.key,CA的私人密钥 
STEP 2: 
为CA生成X.509的认证请求 ca.csr 
要输入一些信息: 
Country Name: cn 国家代码,两个字母 
State or Provice name: An Hui 省份 
Locality Name: Bengbu 城市名 
Organization Name: Home CA 组织名,随便写吧 
Organization Unit Name: Mine CA 
Common Name: Mine CA 
Email Address: sunstorm@263.net 我的Email 
Certificate Validity: 4096 四千多天,够了吧 
STEP 3: 
生成CA的签名,ca.crt 
STEP 4: 
生成服务器的私人密钥,server.key 
STEP 5: 
生成服务器的认证请求,server.csr 
要输入一些信息,和STEP 2类似, 
不过注意 Common Name是你的网站域名,如 http://www.mydomain.com/ 
Certificate Validity不要太大,365就可以了。 
STEP 6: 
为你的服务器签名,得到server.crt 
STEP 7-8 
为你的 ca.key 和 server.key 加密,要记住pass phrase。 
下面完成apache的安装 
make install 
vi /usr/local/apache/conf/httpd.conf 
修改BindAddress 和 ServerName 
如果要改变 DocumentRoot 要记得把httpd.conf里SSL Virtual Host Context部分的DocumentRoot设定也改掉。 
SSLCertificateFile和SSLCertificatKeyFile的设定也在SSL Virtual Host Context部分。 
它可能是这样设定的:
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache_1.3.19/conf/ssl.key/server.key 
要注意ssl.key ssl.crt等目录和文件的权限! 
所有的key,csr,crt,prm文件都应该设为 400 属性! 
5.3 手工签署证书
虽然在安装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 
可以 apachectl startssl 试一下了。 
5.4 测试及管理办法
cd /usr/local/apache_1.3.19 
bin/apachectl startssl 
提示输入pass phrase(就是你前面输入的,不知道你还记不记得) 
输入后就启动了一个支持SSL的apache 
在IE里输入https://192.168.0.1/ 试试,注意是https而不是http! 
5.5 小结
用电子认证服务器,可以进行公共密钥认证的管理、签署和废止。她使用的是X.509标准。 
使用电子认证服务器,就可以自己管理公共密钥的认证,而不用依赖国外的CA服务中心。我们建立一个认证服务中心,就是为了能在我们的中国多媒体公众信息网上使用电子认证,以保证重要信息的安全。同时扩展该网的应用范围,把它建设成一个高速有效的企业单位联网平台。http://netadmin.77169.com/HTML/20031106205300.html

0
相关文章