|
在网络上以明文传递敏感信息是相当不安全的。SSL提供了一种加密手段,在底层上为上层协议提供服务和加密方案,因此当用户在以HTTP协议传输数据时,窥探者将难以获取数据的信息。当然加密只是在传输过程中的,对用户是完全透明的。
安全站点使用安全套接字层(SSL)和来自证书权威(CA)的数码证书来提供安全性。SSL 处理浏览器和服务器间的加密通讯和互相验证。CA 认可的数码证书为安全服务器提供验证(CA 以它的名誉来担保你的机构组织的身份)。当浏览器使用SSL加密通讯时,资源定位(URL)的开头有一个“https://”前缀。
要设置安全站点,将会使用公共加密术来创建公钥和密钥对。在多数情况下,我们会向某CA发送证书请求(包括你的公钥)、公司身份的证据,并且付款。CA 将会校验我们的证书请求和身份,然后把我们的安全万维网证书寄回给我们。
安全站点使用证书来向万维网浏览器标明身份。可以生成自己的证书(叫做“自签”证书),或者可以从证书权威中获取证书。来自有声望的CA的证书会担保与某一特定公司或机构相连的网站的身份。
从CA获取证书的手续非常简单。下面是对其步骤的简单描述:
 创建加密的公钥和密钥对。
 根据公钥创建证书请求。证书请求包括关于的服务器和主持它的公司的信息。
 向某 CA 发送证书请求,以及证明身份的文档。至于选择哪个CA,可以建立在过去的经验上,或者朋友或同事的经验上,或者单从经济上考虑。
 当选定了一个 CA 后,需要遵循他们提供的说明来获取证书。
 当 CA 对我们身份的真实性满意后,他们就会给我们寄发一份数码证书。
 在我们的安全服务器上安装该证书,然后开始处理安全事务。
可以为安全服务器生成一份自签的证书,但自签证书将不会被多数用户浏览器自动识别,而且它将不会担保提供网站的机构的身份。
关于从CA申请证书的过程请参考《红帽企业 Linux 3: 系统管理指南》。这里我们以自签发证书为例,介绍安全站点的建立过程。
1.生成密钥
首先,使用 cd 命令转换到/etc/httpd/conf/目录中,使用下面的命令删除在安装中生成的假钥匙和证书:
#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 pass phrase:
现在,需要键入口令。口令应至少包括八个字符,包括数字和标点,且不是词典中的现成词汇。口令是区分大小写的。回车后需要重新键入口令来校验它是否正确。一旦正确地键入了,一个叫做 >/etc/httpd/conf/ssl.key/server.key 的钥匙文件就会被创建。
注意,如果不想在每次启动httpd服务器的时候都输入口令句,需要下面这两条命令,而不是 make genkey 来创建钥匙。
使用下面的命令来创建你的钥匙:
#/usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key
然后使用下面的命令来确定钥匙的权限被正确设置:
chmod go-rwx /etc/httpd/conf/ssl.key/server.key
在使用以上命令创建钥匙后,将不需要使用口令句来启动安全服务器。
2.创建自签的证书
一旦创建了钥匙,转入/usr/share/ssl/certs 目录中,再键入下面的命令:
#cd /usr/share/ssl/certs
#make testcert ---如果要从CA申请证书,需要使用make certreq命令。
将会看到以下输出,被提示输入口令句(除非生成了无口令句的钥匙):
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 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]:CN
State or Province Name (full name) [Berkshire]:China
Locality Name (eg, city) [Newbury]:XingTai
Organization Name (eg, company) [My Company Ltd]:XTVTC
Organizational Unit Name (eg, section) []:Net
Common Name (your name or server's hostname) []:www.syd168.com
Email Address []:webmaster@syd168.com
提供了正确信息后,自签的证书就会在 /etc/httpd/conf/ssl.crt/server.crt 文件中被创建。生成证书后,需要重新启动web服务器:
3.给站点启用SSL
一点生成了密钥和自签发证书,就可以配置Apache,其用https服务,支持SSL协议。Appache用443端口提供https服务,需要mod—ssl模块支持。
与https相关的配置文件为/etc/httpd/conf.d/ssl.conf。ssl.conf与httpd.conf的配置基本一致,也就是httpd.conf中可以使用的指令在ssl.conf中几乎都可以使用,所以这里就不再啰嗦ssl.conf的使用方法了。
用于SSL通信的私钥为/etc/httpd/conf/ssl.key/server.key,用于认证的为/etc/httpd/conf/ssl.cert/server.crt。这两个就是前面生成的。
要启用一个站点的SSL支持,只要将其虚拟主机配置部分(<VirtualHost IP:port>…</VirtualHost>)添加到/etc/httpd/conf.d/ssl.conf中即可。
需要注意以下几点:
1)虚拟主机的端口号应该为443,如果不是443,需要在ssl.conf中通过listen指令给出。
2)虚拟主机配置的ServerName的服务器域名或IP后也要跟上端口号。 |
|