原文网址: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 info@mydomain.com
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
搞定。