软讯网络 > 网络安全 > 安全知识 > Web服务器(五)为Apache增加SSL安全保护
【标 题】:Web服务器(五)为Apache增加SSL安全保护
【关键字】:
Web,Apache,SSL
【来 源】:http://blog.chinaunix.net/article.php?articleId=41006&blogId=7487
Web服务器(五)为Apache增加SSL安全保护
作者:联想电脑公司软件事业部 汤海京
简介
| Netscape公司提出的安全套接层(Secure Sockets Layer)的概念,简称SSL。顾名思义,这是一个建立在Socket层的安全协议,它屏蔽了高层协议如telnet、ftp、http的区别,把安全建立在了传输之上。目前该协议以被广泛采纳,它所定义的很多功能都成了下一代IP协议IPV6的一部分。 |
所需资源
| 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 |
| http://www.modssl.org/source/mod_ssl-2.8.0-1.3.19.tar.gz |
| tar zxvf openssl-0.9.6.tar.gz |
| cd /usr/local/openssl-0.9.6 |
| ./config --prefix=/usr/local/openssl |
| #注意,这里是 config 而不是 configure。 |
| 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 |
| cd /usr/local/apache_1.3.19 |
| SSL_BASE=../openssl-0.9.6 \ |
| ./configure --prefix=/usr/local/apache_1.3.19 \ |
| make certificate TYPE=custom |
| 说明:这一步要生成你自己的 CA (如果你不知道,我也不能细说了,简单地说就是认证中心),和用它来为你的服务器签署证书。 |
| Country Name: cn 国家代码,两个字母 |
| State or Provice name: An Hui 省份 |
| Locality Name: Bengbu 城市名 |
| Organization Name: Home CA 组织名,随便写吧 |
| Organization Unit Name: Mine CA |
| Email Address: sunstorm@263.net 我的Email |
| Certificate Validity: 4096 四千多天,够了吧 |
| 不过注意 Common Name是你的网站域名,如 www.mydomain.com |
| Certificate Validity不要太大,365就可以了。 |
| 为你的 ca.key 和 server.key 加密,要记住pass phrase。 |
| 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 属性! |
| 虽然在安装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 中。 |
| openssl genrsa -des3 -out ca.key 1024 |
| 系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。 |
| 生成 ca.key 文件,将文件属性改为400,并放在安全的地方。 |
| openssl rsa -noout -text -in ca.key |
| 利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构) |
| 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,并放在安全的地方。 |
| openssl x509 -noout -text -in ca.crt |
| 首先为你的 Apache 创建一个 RSA 私用密钥: |
| openssl genrsa -des3 -out server.key 1024 |
| 生成 server.key 文件,将文件属性改为400,并放在安全的地方。 |
| openssl rsa -noout -text -in server.key |
| 用 server.key 生成证书签署请求 CSR. |
| openssl req -new -key server.key -out server.csr |
| 至于 extra attributes 不用输入。 |
| openssl req -noout -text -in server.csr |
| 如果你的apache编译参数prefix为/usr/local/apache, |
| 那么拷贝server.crt 和 server.key 到 /usr/local/apache/conf |
| SSLCertificateFILE /usr/local/apache/conf/server.crt |
| SSLCertificateKeyFile /usr/local/apache/conf/server.key |
| 可以 apachectl startssl 试一下了。 |
| cd /usr/local/apache_1.3.19 |
| 提示输入pass phrase(就是你前面输入的,不知道你还记不记得) |
| 在IE里输入https://192.168.0.1/ 试试,注意是https而不是http! |
| 用电子认证服务器,可以进行公共密钥认证的管理、签署和废止。她使用的是X.509标准。 |
| 使用电子认证服务器,就可以自己管理公共密钥的认证,而不用依赖国外的CA服务中心。我们建立一个认证服务中心,就是为了能在我们的中国多媒体公众信息网上使用电子认证,以保证重要信息的安全。同时扩展该网的应用范围,把它建设成一个高速有效的企业单位联网平台。 |