配置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

搞定。


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