配置Ubuntu 10.10提供HTTPS服务和Digest认证

原文网址:http://www.qyjohn.net/?p=1147

假定你已经安装了Ubuntu 10.10操作系统和Apache,在浏览器里面访问http://localhost/能够看到It Works的提示。

$ sudo a2enmod ssl
$ sudo mkdir /etc/apache2/ssl
$ sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

回答一堆问题后,得到你的SSL证书。

修改一个配置文件

$ sudo pico /etc/apache2/ports.conf

可以看到这样的两行配置:

NameVirtualHost *:80
Listen 80
在其下方增加一行,其中127.0.0.1可以换成你的IP:

NameVirtualHost 127.0.0.1:443

再修改一个配置文件

$ sudo pico /etc/apache2/sites-available/default

在其末尾增加几行配置,其中127.0.0.1可以换成你的IP:
<VirtualHost 127.0.0.1:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

ServerAdmin [email protected]
ServerName www.mydomain.com
DocumentRoot /var/www/
</VirtualHost>

重新启动Apache:

$ sudo service apache2 restart

从浏览器访问https://127.0.0.1/,应该就搞定了。

建立一个受密码保护的文件夹

$ sudo mkdir /var/www/protected

$ sudo pico .htaccess

在.htaccess里面添加如下内容

AuthName “Password Needed”
AuthType Basic
AuthUserFile /opt/www/http.passwd
Require valid-user

重新启动Apache服务器

$ sudo service apache2 restart

这时候如果访问https://127.0.0.1/protected/,就会出现登录窗口。鉴于我们还没有配置身份认证文件,就无法访问该目录。

$sudo mkdir /opt/www

$cd /opt/www

假定我们需要允许名为hello的用户访问如上目录:

$sudo htpasswd -c http.passwd hello

两次输入密码,就生成相应的身份认证文件http.passwd。这时候再次访问https://127.0.0.1/protected/,输入用户名hello和刚才设定的密码就可以了。

如果我们需要增加另外一个用户,比如说hello2,的访问权限,可以执行同样的命令,只是要把-c参数给去掉。

$sudo htpasswd -c http.passwd hello2

上面的身份认证方式,用户名和密码都是通过明文的方式在网络上传输的,很容易被其他人通过嗅听的方式来截获。Digest认证方法对用户输入的密码进行MD5运算,将运算结果传输给服务器,从而避免了密码给直接截获的可能性。

接下来配置Digest认证。

$ sudo a2enmod auth_digest

修改相应目录的.htaccess文件:

$sudo pico /var/www/protected/.htaccess

将AuthType修改为Digest,保存。

删除原来的身份认证文件:

$ sudo rm /opt/www/http.passwd

创建新的身份认证文件:

$ cd /opt/www

$ sudo htdigest -c http.passwd realm  hello

重新启动Apache服务:

$ sudo service apache2 restart

搞定。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章