网普技术论坛 网普科技  
» 游客:   网普主页 | 注册 | 登录 | 帮助
 

作者:
标题: 转:Apache HTTP 安全服务器配置 上一主题 | 下一主题
网普科技
网普管理员

网普科技人民公仆


积分 3080
发贴 2863
注册 2004-6-26
来自 网普科技
状态 离线
#1  转:Apache HTTP 安全服务器配置

作者:佚名

20.1. 介绍
本章提供了关于启用了 mod_ssl 安全模块来使用 OpenSSL 库和工具包的 Apache HTTP 服务器 服务器的基本信息。Red Hat Linux 提供的这三个部件的组合在本章中将会被称为安全万维网服务器或安全服务器。

mod_ssl 模块是 Apache HTTP 服务器 的安全模块。 mod_ssl 模块使用由 OpenSSL 计划提供的工具来给 Apache HTTP 服务器 添加一项重要功能 — 加密通信的能力。与之相反,使用常规 HTTP,浏览器和万维网服务器间的通讯就会使用纯文本,它们在浏览器和服务器之间的路线上可能会被其它人截取并偷阅。

本章并不是这些程序的完全或唯一的文档。若你想获取关于某主题的更深入的文档,本章在合适的地方会为你指引途径。

本章将会向你显示如何安装这些程序。你还需要掌握生成密钥、证书请求、如何生成自我签名的证书、以及如何安装证书来用于你的安全服务器的必要步骤。

mod_ssl 配置文件位于 /etc/httpd/conf.d/ssl.conf 。要载入这个文件而使 mod_ssl 能够工作,你必须在 /etc/httpd/conf/httpd.conf 中包括 Include conf.d/*.conf 这条声明。在 Red Hat Linux 9中,该声明被默认包括在默认的 Apache HTTP 服务器 配置文件中。

20.2. 与安全相关的软件包概述
要启用安全服务器,你至少需要安装以下软件包:

httpd
httpd 软件包包含 httpd 守护进程和相关的工具、配置文件、图标、Apache HTTP 服务器 模块、说明书(man)页和其它被 Apache HTTP 服务器 使用的文件。

mod_ssl
mod_ssl 软件包包括 mod_ssl 模块,它通过安全套接字 层(SSL)和传输层安全(TLS)协议为 Apache HTTP 服务器 提供了强大的加密能力。

openssl
openssl 软件包包含 OpenSSL 工具包。OpenSSL 工具包实现 SSL 和 TLS 协议,还包括一个常规目的的加密库。

除此之外,其它包括在 Red Hat Linux 中的软件包也可以提供一定程度的安全功能(但不是安全服务器运行所必需的):

httpd-devel
httpd-devel 软件包包含 Apache HTTP 服务器 的包含文件、头文件和 APXS 工具程序。如果你打算载入额外的模块(不是该产品所提供的),你需要以上所有文件和程序。请参阅 《Red Hat Linux 参考指南》 来获取关于使用 Apache HTTP 服务器 的 DSO 功能来把模块载入安全服务器的详细信息。

如果你不打算在 Apache HTTP 服务器 中载入额外模块,你不安装该软件包。

httpd-manual
httpd-manual 软件包包含 HTML 格式的 Apache 计划的 Apache User's Guide 说明指南。该指南还可在 http://httpd.apache.org/docs-2.0/ 中找到。

OpenSSH 软件包
The OpenSSH 软件包提供了一组用来在远程机器上登录和执行命令的 OpenSSH 网络连接工具集合。OpenSSH 工具加密所有交通(包括口令),因此你可以避免被窃听,防范截取连接和其它对你的机器和远程机器间通信的攻击。

openssh 软件包包括 OpenSSH 客户程序和 服务器都需要的核心文件。 openssh 软件包还包括 scp ,它是 rcp (用来在机器间复制文件)和 ftp (用来在机器间传输文件)的安全替换。

openssh-askpass 软件包支持对话框窗口的显示。该窗口在使用 OpenSSH 代理时提示你输入口令。

openssh-askpass-gnome 软件包可以在 OpenSSH 程序提示你输入口令时和 GNOME 桌面环境一起使用来显示图形化对话窗口。如果你运行的是 GNOME,并使用 OpenSSH 工具,你应该安装该软件包。

openssh-server 软件包包括 sshd 安全 shell 守护进程和相关文件。 安全 shell 守护进程是 OpenSSH 套件的服务器一方,如果你 想允许 SSH 客户连接到你的主机,你必须在主机上安装该软件包。

openssh-clients 软件包包含进行加密 SSH 服务器连接所需的客户程序,其中包括: ssh ( rsh 的安全替换); sftp ( ftp 的安全替换,用来在机器间传输文件); slogin (用于远程登录的 rlogin 和通过 Telnet 协议与另一主机通信的 telnet 的安全替换)。

关于 OpenSSH 的详细信息,请参阅第15章、 《Red Hat Linux 参考指南》 、以及 OpenSSH 的网站: http://www.openssh.com

openssl-devel
openssl-devel 软件包包含编译带有各类加密算式和协议支持的应用程序所需的静态库和包含文件。你只有在开发包括 SSL 支持的应用程序时,才需要安装该软件包 — 仅使用 SSL 不必安装该软件包。

stunnel
stunnel 软件包提供了 Stunnel SSL 会绕程序。Stunnel 支持 TCP 连接的 SSL 加密,因此它可以为无 SSL 的守护进程和协议(如 POP、IMAP 和 LDAP)提供加密,却不需对守护进程的编码做任何修改。

表 20-1 显示了安全服务器软件包的摘要,并向你表明每个软件包对安全万维网服务安装是否必不可少。

软件包名称 是否可选可不选?  
httpd  否  
mod_ssl  否  
openssl  否  
httpd-devel  是  
httpd-manual  是  
openssh  是  
openssh-askpass  是  
openssh-askpass-gnome  是  
openssh-clients  是  
openssh-server  是  
openssl-devel  是  
stunnel  是  

表 20-1. 安全软件包

20.3. 证书和安全概述

你的安全服务器使用安全套接字层(SSL)和(多数情况下)来自证书权威(CA)的数码证书的组合来提供安全性。SSL 处理浏览器和你的安全服务器间的加密通讯和互相验证。CA 认可的数码证书为你的安全服务器提供验证(CA 以它的名誉担保对你的机构组织身份的认证)。当你的浏览器使用 SSL 加密通讯时,你会看到导航栏上的划一资源定位(URL)的开头有一个“https://”前缀。

加密依赖于钥匙的使用(你可以把它们当做数据格式的秘密编码和解码钥匙)。传统的或对称的加密术中,事务的两端都使用同一把钥匙,它们可以用这把钥匙来破译彼此的传输。在公共或非对称加密术中,有两把钥匙并存:公钥和密钥。某人或某机构把他们的密钥保密,只公布他们的公钥;使用密钥编码的数据只能用公钥才能解码。

要设置你的安全服务器,你将会使用公共加密术来创建公钥和密钥对。在多数情况下,你会向某 CA 发送证书请求(包括你的公钥)、你的公司身份的证据、以及付款。CA 将会校验你的证书请求和身份,然后把你的安全万维网证书寄回给你。

安全服务器使用证书来向万维网浏览器标明身份。你可以生成你自己的证书(叫做“自签”证书),或者你可以从证书权威中获取证书。来自有声望的 CA 的证书会担保与某一特定公司或机构相连的网站的身份。

另外,你也可以创建你自己的自签证书。然而请注意,自签证书不应该被用在多数生产环境中。自签证书不会被用户的浏览器自动接受 — 浏览器将会征询用户是否要接受该证书并创建安全连接。请参阅 第 20.5 节 来获取关于自签和 CA 签名的证书区别的详细信息。

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

20.4. 使用已存钥匙和证书

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

如果你改变了你的 IP 地址和域名 — 证书是向特定 IP 地址和域名对颁发的。如果你改变了域名或 IP 地址,你需要申请一份新证书。

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

如果你改变了以上任一参数(譬如,从前你使用了另一个安全服务器产品,现在你想使用这个安全服务器),你为从前的配置所获取的 VeriSign 证书将无法在新配置中使用。你必须获取一份新证书。

如果你有可以使用的已存钥匙和证书,你将不必生成新钥匙或获取新证书。然而,你可能需要转移并更名包含钥匙和证书的文件。

把你的现存钥匙文件转移到:

/etc/httpd/conf/ssl.key/server.key  

将你的现存证书文件转移到:

/etc/httpd/conf/ssl.crt/server.crt

在你转移了钥匙和证书之后,跳到 第 20.9 节 。

如果你要升级 Red Hat 安全万维网服务器,你的旧钥匙( httpsd.key )和证书( httpsd.crt )将会位于 /etc/httpd/conf/ 下。你将需要转移并重命名你的钥匙和证书,因此安全服务器才能使用它们。使用以下两个命令来转移并重命名钥匙和证书文件:

mv /etc/httpd/conf/httpsd.key /etc/httpd/conf/ssl.key/server.key mv /etc/httpd/conf/httpsd.crt /etc/httpd/conf/ssl.crt/server.crt

然后,使用下面的命令来启动安全服务器:

/sbin/service httpd start  

要启动安全服务器,你会被提示输入口令句。当你键入口令句后按 [Enter] 键,服务器就会启动。

20.5. 证书类型

如果你从 Red Hat Linux 提供的 RPM 中安装了安全服务器,一个随机钥匙和测试证书就会被生成并放置在适当的目录中。然而,在你使用安全服务器之前,你需要生成你自己的钥匙并获取正确识别你的服务器的证书。

你需要钥匙和证书才能操作安全万维网服务 — 这意味着你可以生成一个自签的证书或从某 CA 处购买一份由 CA 签名的证书。这两者间有什么区别呢?

由 CA 签名的证书为你的服务器提供两项重要能力:

浏览器(通常)会自动识别证书,并且不必提示用户就能够允许开通安全连接。

当某 CA 颁发了签名的证书,他们是在向浏览器担保提供网页的机构的身份。

如果你的安全服务器被广大公众所访问,你的安全服务器需要有 CA 签名的证书,因此访问你的网站的用户可以信任该网站的确是声明拥有它的建构所拥有。在签发证书前,CA 校验申请证书的机构确实如他们所言。

多数支持 SSL 的万维网浏览器有一个它们会自动接受证书的 CA 列表。如果浏览器遇到一份来自列表之外的授权 CA 的证书,浏览器会询问用户是否要接受连接。

你可以为你的安全服务器生成一份自签的证书,但是请留意,自签证书将不会提供和 CA 签发的证书相同的功能。自签证书将不会被用户的浏览器自动识别,而且它将不会担保提供网站的机构的身份。由 CA 签发的证书为安全服务器提供这两项重要的能力。如果你的安全服务器将会用在生产环境中,你可能会需要 CA 签发的证书。

从 CA 获取证书的手续非常简单。下面是对其步骤的简单描述:

创建加密的公钥和密钥对。

根据公钥创建证书请求。证书请求包括关于你的服务器和主持它的公司的信息。

向某 CA 发送证书请求,以及证明你的身份的文档。我们不能向你建议该选择哪个 CA。你的决定可以建立在过去的经验上,或者你的朋友或同事的经验上,或者单从经济上考虑。

当你选定了一个 CA 后,你需要遵循他们提供的说明来获取证书。

当 CA 对你的身份的真实性满意后,他们就会给你寄发一份数码证书。

在你的安全服务器上安装该证书,然后开始处理安全事务。

不论你是从 CA 处获取证书,还是使用自签的证书,第一个步骤都是生成钥匙。请参阅 第 20.6 节 来获取生成钥匙的指示。

20.6. 生成钥匙
你必须是根用户才能生成钥匙。

首先, cd 到 /etc/httpd/conf 目录中,使用下面的命令删除在安装中生成的假钥匙和证书:

rm ssl.key/server.key rm ssl.crt/server.crt

其次,你需要生成你自己的随机钥匙。改换到 /usr/share/ssl/certs 目录中,键入以下命令:

make genkey  

你的系统会显示和以下输出相似的消息:

umask 77 ; \ /usr/bin/openssl genrsa -des3 1024 > /etc/httpd/conf/ssl.key/server.key Generating RSA private key, 1024 bit long modulus .......++++++ ................................................................++++++ e is 65537 (0x10001) Enter PEM pass phrase:  

现在,你需要键入口令句。要获得最佳安全性,你的口令应至少包括八个字符,包括数字和标点,且不是词典中的现成词汇。另外请记住,你的口令是区分大小写的。

<  注记:你在每次启动安全服务器的时候都需要输入这个口令,因此请将它牢记在心。


重新键入口令来校验它是否正确。一旦你正确地键入了,一个包括你的钥匙,叫做 >/etc/httpd/conf/ssl.key/server.key 的文件就会被创建。

注意,如果你不想在每次启动安全服务器的时候都输入口令,你将需要下面这两条命令,而不是 make genkey 来创建钥匙。

使用下面的命令来创建你的钥匙:

/usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key  

然后使用这条命令来确定钥匙的权限被正确设置:

chmod go-rwx /etc/httpd/conf/ssl.key/server.key

在你使用以上命令创建钥匙后,你将不需要使用口令句来启动安全服务器。

小心:在你的安全服务器中禁用口令功能是一种安全风险。我们不提倡你禁用安全服务器的口令功能。


不使用口令所造成的问题和主机的安全维护休戚相关。譬如,若有人危害了主机上的常规 UNIX 安全系统,他就可以获取你的密钥( server.key 文件的内容)。该钥匙可以用来提供似乎是来自你的安全服务器的网页。

如果 UNIX 安全系统在主机上被认真维护(及时安装操作系统的补丁和更新;不操作不必要的或冒险的服务等等),安全服务器的口令可能就不是很必要。然而,由于你的安全服务器应该没必要被频繁重新启动,输入口令所能带来的额外保险在多数情况下是值得一行的。

server.key 文件应该被系统的根用户拥有,不应该被其它用户访问。给该文件备份,将备份副本存放在安全之处。你需要备份的原因是,如果你在使用钥匙创建了证书请求后丢失了 server.key 文件,你的证书就不会再生效,而 CA 对此也爱莫能助。你只能再申请(并购买)一份新证书。

如果你打算从 CA 处购买证书,请继续阅读 第 20.7 节 。如果你打算生成 自签的证书,请继续阅读 第 20.8 节 。

20.7. 生成发送给 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) [GB]: US State or Province Name (full name) [Berkshire]: North Carolina Locality Name (eg, city) [Newbury]: Raleigh Organization Name (eg, company) [My Company Ltd]: Test Company Organizational Unit Name (eg, section) []: Testing Common Name (your name or server's hostname) []: test.example.com Email Address []: admin@example.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

默认回答紧随在每项要求后面的括号内 ( [] )。例如, 第一项要求的信息是证书要被用于的国家,如下所示:

Country Name (2 letter code) [GB]:  

默认的输入出现在括号内,是 GB 。要接受默认值,只需按 [Enter] ,或填入你的国家的两个字母的代号。

你必须得键入剩下的值。这些输入都是不言而喻的,但是你需要遵从以下准则:

不要用地域或州省的缩写。用全称(如, St. Louis 应该被写成 Saint Louis)。

如果你要把该 CSR 寄发给 CA,请确保在所有的字段内都提供了正确的信息,特别是 Organization Name 和 Common Name 这两项。CA 检查 CSR 中提供的信息以判定你的机构是否对你所提供的 Common Name 负责。CA 将会拒绝包括他们认为无效的信息的 CSR。

对于 Common Name ,请确定你键入了你的安全服务器的 真实 名称(有效的 DNS 名称),而不是服务器的别名。

Email Address 应该是网主或系统管理员的电子邮件地址。

请避免 @、#、&、! 之类的特殊字符。某些 CA 将会拒绝包含特殊字符的请求。因此,如果你的公司名称包含 &,把它拼写为“and”而不使用“&”。

不要使用这两项附加属性: A challenge password 和 An optional company name 。要不输入这些字段而继续,只需按 [Enter] 键来接受空白的默认值即可。

信息输入完毕后,一个叫做 /etc/httpd/conf/ssl.csr/server.csr 的文件就会被创建。该文件是你的证书请求,可以随时寄发给你的 CA。

在你选定了CA 后,按照他们在网站提供的说明行事。这些说明会告诉你如何发送证书请求,你还需要哪些文档以及付款信息。

在你满足了 CA 的要求后,他们就会给你寄发证书(通常通过电子邮件)。将它们寄发的证书保存为(或剪贴为) /etc/httpd/conf/ssl.crt/server.crt 。请确定给该文件保留一份备份。

20.8. 创建自签的证书
你可以创建自签的证书。请注意,自签的证书将不会提供由 CA 签发的证书所提供的安全担保。关于证书的详细信息,请参阅 第 20.5 节 。

如果你想制作自签的证书,你首先需要按照 第 20.6 节 中提供的指示来创建随机钥匙。一旦创建了钥匙,请确定你位于 /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) [GB]: US State or Province Name (full name) [Berkshire]: North Carolina Locality Name (eg, city) [Newbury]: Raleigh Organization Name (eg, company) [My Company Ltd]: My Company, Inc. Organizational Unit Name (eg, section) []: Documentation Common Name (your name or server's hostname) []: myhost.example.com Email Address []: myemail@example.com  

提供了正确信息后,自签的证书就会在 /etc/httpd/conf/ssl.crt/server.crt 中被创建。生成证书后,你需要使用以下命令来重新启动安全服务器:

/sbin/service httpd restart?

20.9. 测试证书
要测试默认安装的测试证书、CA 签发的证书、以及自签的证书,把你的万维网服务器转到以下主页(把 server.example.com 替换成你的域名):

https:// server.example.com  
注记:注意 http 后面的 s 。 https: 前缀被用在安全 HTTP 事务中。


如果你使用的是由知名 CA 签发的证书,你的浏览器可能会自动接受该证书(不必提示你输入)并创建安全连接。你的浏览器不会自动识别测试或自签的证书,因为这些证书不是由 CA 签发的。如果你没有使用来自 CA 的证书,请遵循浏览器的指示来接受证书。

你的浏览器接受了证书后,你的安全服务器就会显示默认的主页。

20.10. 访问服务器
要访问你的安全服务器,使用和以下相似的 URL:

https:// server.example.com  

你的非安全服务器可以使用和以下相似的 URL 来访问:

http:// server.example.com  

安全万维网通讯的标准端口是端口 443。非安全万维网通讯的标准端口是端口 80。安全服务器默认配置对这两个端口都监听。因此,你不必在 URL 中指定端口号码(端口号码会被假定)。

然而,如果你配置了你的服务器监听非标准的端口(除 80 和 443 之外的),你必须在每个 URL 中指定旨在非标准端口上连接服务器的端口号码。

例如,你可能给你的服务器做了相应配置,因此你在端口 12331 上运行一个非安全的虚拟主机。任何旨在连接该虚拟主机的 URL 都必须在 URL 中指定端口号码。下面的 URL 例子会试图连接在端口 12331 监听的非安全万维网服务器:

http:// server.example.com :12331

20.11. 其它资料
有关 Apache HTTP 服务器 的额外参考资料请参阅 第 19.7 节 。

20.11.1. 安装了的文档
mod_ssl documentation — 在安装了 httpd-manual 软件包并运行 Apache HTTP 服务器 的服务器上打开万维网浏览器,然后转到 URL http://localhost/manual/mod/mod_ssl.html

20.11.2. 有用的网站
http://www.redhat.com/mailing-lists/ — 你可以在这个 URL 上订阅 redhat-secure-server 邮件列表。

你还可以通过给 < redhat-secure-server-request@redhat.com > 这个地址发送电子邮件,并在主题栏中包括 subscribe 这个词来订阅 redhat-secure-server 邮件列表。

http://www.modssl.org — mod_ssl 网站是关于 mod_ssl 的权威性信息。该网站具有丰富的文档资料,其中包括 User Manual ,位于 http://www.modssl.org/docs



天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。



网普科技,优质美国主机服务!
美国Linux主机,美国虚拟主机
支持PHP+MYSQL+cPanel+EMAIL
为用户负责,拒绝反动、赌博及色情内容! QQ:126818

发送QQ消息
2004-11-29 02:47 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部
茱莉娅
THE BODY SHOP美容顾问

茱莉娅美体小铺


积分 3080
发贴 2863
注册 2009-5-21
来自 茱莉娅美体小铺
状态 离线
#1  赞助商信息The body shop

茱莉娅美体小铺
茱莉娅美体小铺淘宝店
茱莉娅美体小铺


茱莉娅美体小铺淘宝店
2004-11-29 02:47 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转:  




Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.011129 second(s), 7 queries, Gzip enabled
------------------------------------------------------------------------------
本论坛属网普科技交流与技术支持论坛!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
美国主机, 美国虚拟主机, cPanel+PHP+Mysql+Ftp+Email+Zend+GD2+国际域名支持
技术支持 QQ: 126818 EMail & MSN: support[AT]netpu.net
[ 联系我们 ] - [ 网普科技 ]