分类: 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的配置文件。
为了建立安全服务器,至少需要以下的软件包
在你有了自签的证书或来自 CA 的证书后,你需要把它安装在你的安全服务器上。
如果你已有现存的钥匙和证书(例如,如果你要安装安全服务器来替换另一家公司的安全服务器产品),你可能将能够在安全服务器中使用你现存的钥匙和证书。在下面这两种情况下,你将无法使用现存的钥匙和证书:
如果你改变了以上任一参数(譬如,从前你使用了另一个安全服务器产品,现在你想使用这个安全服务器),你为从前的配置所获取的 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 获取证书的手续非常简单。下面是对其步骤的简单描述:
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.
你可以创建自签的证书。请注意,自签的证书将不会提供由 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。安全服务器默认配置对这两个端口都监听。因此,你不必在