原文網址: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
搞定。