Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103688040
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-05 16:46:56

 
 

Apache服务器可以通过mod_ssl模块来使用OpenSSH库以及工具包,从而构建一个安全的网络服务环境。 mod_ssl是Aapche提供的一个很重要的模块,它可以利用OpenSSH等工具包为网络连接提供一个加密的环境,防止信息内容在网络上的泄露。 mod_ssl缺省的配置文件在/etc/httpd/conf.d/ssl.conf中,为了能够是Apache能够使用mod_ssl模块,必须在Aapche的配置文件/etc/httpd/conf/httpd.conf中加入Include conf.d/*.conf这样的语句,将mod_ssl的配置文件包含进Apache的配置文件。

为了建立安全服务器,至少需要以下的软件包

  • httpd:包中包含了服务器的运行程序,帮助文件等。
  • mod_ssl:它通过SSL和TLS来为上层软件提供加密算法。
  • openssl:它实现了SSL和TLS协议,作为安全系统的底层库来使用。
  • httpd-devel:提供了httpd的开发库和头文件。
  • httpd-manual:提供了html格式的Apache的文档。
  • OpenSSH程序组:这个程序组包含了若干个包,它们共同提供了一套安全网络连接方式。其中openssh提供了ssh这样的远程登录程序。
  • openssl-devel:提供openssl的开发库以及头文件等。
  • stunnel:提供了基于SSL协议的socket接口服务。为上层软件利用SSL进行网络编程提供了方便。

  • 安全服务器使用安全套接字层(SSL)和(多数情况下)来自证书权威(CA)的数字证书的组合来提供安全性。SSL 处理浏览器和安全服务器间的加密通讯和互相验证。CA 认可的数字证书为安全服务器提供验证。
  • 加密依赖于钥匙的使用(你可以把它们当做数据格式的秘密编码和解码钥匙)。传统的或对称的加密术中,事务的两端都使用同一把钥匙,它们可以用这把钥匙来破译彼此的传输。在公共或非对称加密术中,有两把钥匙并存:公钥和密钥。某人或某机构把他们的密钥保密,只公布他们的公钥;使用密钥编码的数据只能用公钥才 能解码。
  • 要设置你的安全服务器,你将会使用工具来创建公钥和密钥对。在多数情况下,你会向某 CA 发送证书请求(包括你的公钥)、你的公司身份的证据、以及付款。CA 将会校验你的证书请求和身份,然后把你的安全万维网证书寄回给你。
  • 另外,你也可以创建你自己的自签证书。然而请注意,自签证书不应该被用在多数商业环境中。自签证书不会被用户的浏览器自动接受。

在你有了自签的证书或来自 CA 的证书后,你需要把它安装在你的安全服务器上。

如果你已有现存的钥匙和证书(例如,如果你要安装安全服务器来替换另一家公司的安全服务器产品),你可能将能够在安全服务器中使用你现存的钥匙和证书。在下面这两种情况下,你将无法使用现存的钥匙和证书:

  • 如果你改变了你的 IP 地址和域名 — 证书是向特定 IP 地址和域名对颁发的。如果你改变了域名或 IP 地址,你需要申请一份新证书。
  • 如果你有一份来自 VeriSign 的证书,但想改变服务器软件。如果你已有一份由于其它原因而获得的 VeriSign 证书,你可能会考虑在你的新安全服务器中使用现有的 VeriSign 证书,然而,你将不会被允许使用它。这是因为 VeriSign 依据特定服务器软件和 IP 地址/域名组合来颁发证书。

如果你改变了以上任一参数(譬如,从前你使用了另一个安全服务器产品,现在你想使用这个安全服务器),你为从前的配置所获取的 VeriSign 证书将无法在新配置中使用。你必须获取一份新证书。 当你获得了新的钥匙对和证书以后,把你的钥匙文件转移到/etc/httpd/conf/ssl.key/server.key中,将证书文件转移到/etc/httpd/conf/ssl.crt/server.crt。然后就可以测试证书,测试方法稍后会有介绍。 最后,使用service httpd restart来重新启动服务器以便激活安全服务器。

在使用安全服务器之前,你需要生成你自己的钥匙并获取正确识别你的服务器的证书。 证书有两种类型:

浏览器(通常)会自动识别证书,并且不必提示用户就能够允许开通安全连接 当某 CA 颁发了签名的证书,他们是在向浏览器担保提供网页的机构的身份。 如果你的安全服务器被广大公众所访问,你的安全服务器需要有 CA 签名的证书,因此访问你的网站的用户可以信任该网站的确是他自己所声明的。在签发证书前,CA 校验申请证书的机构也必须确认网站的声明的真实与否。 多数支持 SSL 的万维网浏览器有一个它们会自动接受证书的 CA 列表。如果浏览器遇到一份来自列表之外的授权 CA 的证书,浏览器会询问用户是否要接受连接。

另一种证书类型是自签型证书,也就是证书是由服务者本身所签发的,但是自签证书将不会提供和 CA 签发的证书相同的功能。自签证书将不会被用户的浏览器自动识别,而且它将不会担保提供网站的机构的身份。

因此,如果你的服务器是要应用于商业或者是生产环境下的,你应该使用CA 签发的证书。从CA 获取证书的手续非常简单。下面是对其步骤的简单描述:

  • 创建加密的公钥和密钥对。
  • 根据公钥创建证书请求。证书请求包括服务器和它所属公司的信息。
  • 向某 CA 发送证书请求,以及证明你的身份的文档。 当你选定了一个 CA 后,你需要遵循他们提供的说明来获取证书。
  • 当 CA 对你的身份的真实性核对无误后,他们就会给你寄发一份数字证书。
  • 在你的安全服务器上安装该证书,然后开始处理安全事务。
  • 不论你是从 CA 处获取证书,还是使用自签的证书,第一个步骤都是生成钥匙。

  • rm ssl.key/server.key
  • rm ssl.crt/server.crt
  1. umask 77
  2. /usr/bin/openssl genrsa -des3 1024 > /etc/httpd/conf/ssl.key/server.key

Generating RSA private key, 1024 bit long modulus …….++++++ ……………………………………………………….++++++ e is 65537 (0×10001) Enter PEM pass phrase: 此时,需要你输入口令,每次启动安全服务器的时候都需要这个口令进行验证,因此请确保这个口令的安全性。口令的长度至少需要包含8个字符,同时口令是区分大小写的。 当成功输入口令后,在目录/etc/httpd/conf/ssl.key/下会生成server.key文件。这个就是你的钥匙文件,请妥善保管。 如果在启动安全服务器的时候不想输入口令的话,可以使用下面的方法来生成钥匙文件,首先使用openssl产生钥匙: /usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key 然后使用命令chmod来确保该钥匙文件的权限是正确的。 chmod go-rwx /etc/httpd/conf/ssl.key/server.key 使用以上的命令生成钥匙文件以后,则再次启动安全服务器不会提示输入口令。但是需要提醒的一点是,不进行口令检验是一种具有潜在风险的操作,因此,商业用户还是应该采用输入口令的方式启动安全服务器。 生成的钥匙文件server.key应该被根用户所拥有,不应该被其它用户访问,并且应该为该文件备份,将备份副本存放在安全的地方。钥匙文件需要备份的原因是,如果你在使用钥匙创建了证书请求后丢失了 server.key 文件,你的证书就不会再生效,而 CA 对此也爱莫能助。你只能再申请(并购买)一份新证书。

一旦你创建了钥匙,下一步就是生成证书请求,你需要把该请求发送给选中的 CA。请确定你位于 /usr/share/ssl/certs 目录,并键入下面的命令:make certreq。这时系统会显示下列输出,然后还会请你输入口令句 (除非你禁用了口令选项)。 umask 77 ; \ /usr/bin/openssl req -new -key /etc/httpd/conf/ssl.key/server.key -out /etc/httpd/conf/ssl.csr/server.csr Using configuration from /usr/share/ssl/openssl.cnf Enter PEM pass phrase: 键入你在生成钥匙时选择的口令。你的系统将会显示一些指示,然后向你询问一系列问题。你的输入会被包括在证书请求中。所显示的输出和示例回答,看起来和下面相似: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.


  • Country Name (2 letter code) [

    你可以创建自签的证书。请注意,自签的证书将不会提供由 CA 签发的证书所提供的安全担保。如果你想制作自签的证书,你首先需要按照前面章节所述的过程来创建随机钥匙。一旦创建了钥匙,请确定你位于 /usr/share/ssl/certs 目录中,再键入下面的命令: make testcert 你将会看到以下输出,你会被提示输入口令句(除非你生成了无口令的钥匙): umask 77 ; \ /usr/bin/openssl req -new -key /etc/httpd/conf/ssl.key/server.key -x509 -days 365 -out /etc/httpd/conf/ssl.crt/server.crt Using configuration from /usr/share/ssl/openssl.cnf Enter PEM pass phrase: 输入口令句后(如果你创建了无口令的钥匙则没有提示),你会被要求输入更多信息。计算机的输出以及一组示例输入与以下的显示相仿(你需要为你的主机和机构提供正确的信息): You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.


    Country Name (2 letter code) [

    要测试默认安装的测试证书、CA 签发的证书、以及自签的证书,将你的主页替换成为具有https://头的主页名称。如果你使用的是由知名 CA 签发的证书,你的浏览器可能会自动接受该证书(不必提示你输入)并创建安全连接。你的浏览器不会自动识别测试或自签的证书,因为这些证书不是由 CA 签发的。如果你没有使用来自 CA 的证书,请遵循浏览器的指示来接受证书。你的浏览器接受了证书后,你的安全服务器就会显示默认的主页。

    要访问你的安全服务器,使用和以下相似的 URL: 安全万维网通讯的标准端口是端口 443。非安全万维网通讯的标准端口是端口 80。安全服务器默认配置对这两个端口都监听。因此,你不必在

阅读(485) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~