荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: hellsolaris (qq), 信区: Security
标  题: 保护redhat8.0 apache站点
发信站: 荔园晨风BBS站 (Sat Mar  6 10:09:05 2004), 站内信件

保护redhat8.0 apache站点 ? 上一主题 | 下一主题 ?

ustcchenjian 发表于:2003-11-15 21:21

发帖: 6
积分: 0
注册: 2003-07-28
自己用apache建了个网站,对有些资源不想共享,那么怎么办呢?我们可以使用
Apache提供的认证功能,对知道用户名和用户口令的人才让他访问这些资源。步骤
如下:
1.添加一个用户名到用户文件/usr/local/etc/httpd/users
htpasswd /usr/local/etc/httpd/users username
敲入口令abcdef
2.在你要保护的目录/var/www/protected_dir下生成文件.htaccess,并添加以下
内容到.htaccess
AuthType Basic
AuthUserFile /usr/local/etc/httpd/users
require valid-user
AuthName "Protected Web Pages"
AllowOverride AuthConfig
这样浏览器访问目录/var/www/protected_dir或它的子目录时,就会弹出一对话框
,要求输入用户名和口令,所以只有知道username和口令abcdef的人才能存取该目
录下的内容。

以上的认证方式称为基本认证方式,它有个小问题,就是敲入的用户名和口令是以
明文的方式在网络上传播的,很容易被侦听到,所以apache还提供了另外一种认证
方式:Digest认证方式,这种方式使用MD5算法,可以防止用户名和口令被侦听到。
以下是利用Digest认证方式来保护一个目录的步骤:
1.添加一个用户名到用户文件/usr/local/etc/httpd/users.digest
htdigest -c /usr/local/etc/httpd/users.digest "Protected Web Pages"
username
敲入口令abcdef
2.在你要保护的目录/var/www/protected_dir下生成文件.htaccess,并添加以下内
容到.htaccess
require valid-user
AuthName "Protected Web Pages"
AuthType Digest
AuthDigestFile /usr/local/etc/httpd/users.digest
AllowOverride AuthConfig
注意AuthName后的参数"Protected Web Pages"一定要和htdigest的第三个参数
"Protected Web Pages"一样。

使用以上两种方式我们可以限制某些用户可以访问某些资源,但是在访问网页的过
程中,网页信息仍然是以明文从服务端到浏览器端的。我们可以开一个https服务
,就是HTTP over Secure Socket Layer,这样网页的传播就是经过加密处理的了
。在redhat8.0下打开https服务很容易,将/etc/httpd/conf.d/ssl.conf中的下列
几项打开,并确保在/etc/httpd/conf/httpd.conf中包含“Include conf.d/*.
conf”,就可以用/etc/init.d/httpd start启动https服务了。
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:
+EXP:+eNULL
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
SSLCACertificatePath /etc/httpd/conf/ssl.crt
SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca.crt
其中ca.crt是自签名的CA证书,server.crt用CA证书签发的https服务器证书,
server.key是https的服务器私钥.使用下列openssl提供的命令我们可以生成这些
文件.步骤如下:
1.生成自签名的CA证书ca.crt
/usr/bin/openssl genrsa -des3 1024 -out ca.key
/usr/bin/openssl req -new -x509 -days 365 -key ca.key -out ca.crt
2.生成密钥server.key后,使用CA密钥签发https服务器的证书server.crt
/usr/bin/openssl genrsa -out server.key 1024
/usr/bin/openssl req -new -key server.key -out server.csr
/usr/bin/openssl x509 -req -in server.csr -out server.crt -CA ca.crt
-CAkey ca.key -CAcreateserial -days 365
这样,当浏览器访问我们的站点时,就会弹出一个窗口寻问是否相信这个证书,这
实际是一个浏览器端认证服务器端的过程,一般我们都会选相信,如果我们在浏览
器端导入了文件ca.crt,那个窗口就不会弹出来,因为浏览器会自动用ca.crt来验
证它收到的server.crt是否可信。同样,我们的https服务器也可以要求验证浏览
器端的身份,这是一个服务器端验证浏览器端的过程,也就是说我们可以用这个方
法来要求浏览器出示某个东东我们才让它访问我们的站点,这个东东就是一张客户
证书client.p12,可以用下列步骤生成后分发给用户:
1.生成密钥client.key后,使用CA密钥签发client的证书client.crt
/usr/bin/openssl genrsa -out client.key 1024
/usr/bin/openssl req -new -key client.key -out client.csr
/usr/bin/openssl x509 -req -in client.csr -out client.crt -CA ca.crt
-CAkey ca.key -CAcreateserial -days 365
2.将client.key和client.crt转换成client.p12,IE和Mozilla都能识别这种格式
的客户证书
/usr/bin/openssl pkcs12 -export -in client.crt -inkeyfile client.key
-out client.p12 -name "Client Certificate"
3.最后注意的一点就是要在/etc/httpd/conf.d/ssl.conf打开 SSLVerifyClient
require,因为缺省状态下服务器是不要求验证浏览器端的身份的。
---

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.44.223]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店