Linux之为Apache增加SSL安全保护

 为Apache增加SSL安全保护
     & 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.rg/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是你的网站域名,如 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服务中心。我们建立一个认证服务中心,就是为了能在我们的中国多媒体公众信息网上使用电子认证,以保证重要信息的安全。同时扩展该网的应用范围,把它建设成一个高速有效的企业单位联网平台。


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值