Linux mint下HTTPS配置非常簡單,對大部分用戶而言,使用普通的自簽名證書,只需按照步驟進行就可以了,無需瞭解密鑰、證書的更多知識,更深的背景知識還有RSA算法、DES算法、X509規範、CA機構...等等,隨便哪個方向都夠學習一陣子的,所幸的是有了OpenSSL、OpenSSH等這些開源免費的軟件,把很多底層的算法、規範都集成了,對上層應用而言,只需一二三操作即可,至多到官網去查查一些特殊的命令集。
一、安裝Apache
$sudo apt-get install apache2
使用此方式安裝的APACHE,配置比較分散,一般如下:
- 默認站點在 /var/www/
- 配置文件在 /etc/apache2/
- 日誌在 /var/log/apache/
- 啓動腳本是 /usr/bin/apache2ctl 或者 /etc/init.d/apache2
二、安裝openssl
Ubuntu默認已經安裝了OPENSSL,如果沒安裝,
$sudo apt-get install openssl
三、開啓SSL模塊
$sudo a2enmod ssl
四、創建證書
創建證書有兩種:一種是自簽名證書,另外一種是第三方CA機構簽名證書。第一種隨便使用,只是沒有經過官方認可的機構認證而已,後一種則是正規的簽名證書,有發證機構簽名。其實很多所謂的大網站上使用的SSL證書,一樣都是自簽名的,主要是因爲這個證書只做爲在線驗證使用,保證傳輸數據安全即可,不過使用這種證書,對常規瀏覽器和一些軟件而言,一般均會彈出警告,讓你確認這個簽名證書的有效性。正規簽名證書也不過只是多了一重保障而已,而且瀏覽器、軟件等可以自己鑑別。
1、自簽名證書
可使用apache內置的工具創建默認的自簽名證書,通過-days參數指定有效期。
$sudo apache2-ssl-certificate
注意:上述命令可能在最新的apache中默認未安裝,如果使用的是LAMP套件,一般會有這個模塊。
不過我們還可以使用openssl命令(如果openssl是自編譯安裝的,沒有註冊該命令的話,可以使用絕對路徑,比如類似/usr/local/openssl/openssl這樣)創建:
1 |
$sudo openssl
req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999 |
2 |
3 |
Country
Name (2 letter code) [AU]:CN |
4 |
State or Province
Name (full name) [Some-State]:SH |
5 |
Locality
Name (eg, city) []:SH |
6 |
Organization
Name (eg, company) [Internet Widgits Pty Ltd]:ABC |
7 |
Organizational
Unit Name (eg, section) []:RD |
8 |
Common
Name (eg, YOUR name) []:myservername |
9 |
Email
Address []:[email protected] |
注意:在要求輸入Common Name (eg, YOUR name) 時,輸入你的服務器IP地址。
創建完成後,當前目錄下有個apache.pem文件,已經包含密鑰和證書。可以把這個證書拷貝到/etc/apache2/下創建一個ssl目錄然後拷貝到:
/etc/apache2/ssl/apache.pem
2、第三方CA機構簽署證書
生成此證書,需要向第三方提交一個“生成證書請求文件(CSR)”,生成這個CSR需要兩步:
- 生成私鑰KEY
- 生成請求CSR
A、運行如下命令生成私鑰:
01 |
[root@localhost
tmp]# openssl genrsa -des3 1024 -out server.key |
02 |
Generating
RSA private key,
1024 bit long modulus |
03 |
...++++++ |
04 |
.......................................................++++++ |
05 |
e
is 65537 (0x10001) |
06 |
Enter
pass phrase: |
07 |
Verifying
- Enter pass phrase: |
08 |
-----BEGIN
RSA PRIVATE KEY----- |
09 |
Proc-Type:
4,ENCRYPTED |
10 |
DEK-Info:
DES-EDE3-CBC,32BDD10A4F977F7E |
11 |
12 |
A7FOhETnGpQnRcCoe1VtOtb8yq12xi6ljq/6wYB6MsGGdGjhftF1FxnSMd9Jx4o2 |
13 |
gjyUJNQs4zYkrtAaY6WYdOMiswymxiSYlKnX3l3uA6d6NqUpoyFxN7mgxqvbrdjq |
14 |
EaGSLo1d63B6THIq9mOGNm3l1xKtiUZVwHqVaHdb1F/RD6YshwE9yE5bAXjKJKat |
15 |
sTewoVPxj0bjEDBz49K4m+epUrh7UQ7ZyjMiefvCgg0OxFB3H8zdG0SHa1sV4fG4 |
16 |
9R+4PPoIIlLty4oyAYRwNVUWV47qGV4Jub11s50azVwtS9CV31HZQt48zkcUZ9WF |
17 |
2PBRQ3c4AMkewzfvjEUIF7bfHcBMl9ugu4fZfJTUxJbA4vHvoVczXhvcTaf6awHn |
18 |
4YpEX/T3xWE8ObyOjvVh5Utl39INOqzxVKGoZF1ogLFm60SokYx0r+Y19jrz2084 |
19 |
Nri4mHlYNymY+tviTFUUIHZ+8FRnkq0vnW68ejiSzG0Xyr2DDzc7pi6J58bqQ3yR |
20 |
eNJuK8KVjXxkRn1HXtGL/C6ZpJ4qs6VVzX291vPrr7luWrXGsAcRudLWRFZDSoUB |
21 |
lFw1CY9ol2TOX2mvt6JryhoH08x3s2prlIen10N35sVELB/nb1/8kkpztCbPHiA/ |
22 |
IH2A3g/WexCAatmCMuqlxW8Cwe98AUZduuZsAZeDoyXk7VxD7YhPKZmKPKOx3gZv |
23 |
2S1ZpzsNgZh9HhpXsRxjwbYnyICtcUY+dQZXk1w //BP2syjcffXqqhp2FPK3SG7l |
24 |
PsvHIWQGeTUe5uILP7S/Bbi/KrFAkDguGJHge0mmHgL9gi8RvODtKQ== |
25 |
----- END RSA
PRIVATE KEY----- |
26 |
[root@localhost
tmp]# |
這裏使用了-des3參數,將會需要輸入一個密碼對私鑰進行加密,每次使用此私鑰也需要輸入此密碼,如不需對私鑰加密請不要使用-des3選項。輸入兩次密碼後,將會生成server.key私鑰文件。
B、生成請求文件
運行如下命令生成證書請求文件(CSR)
openssl req -new -key server.key –out server.csr
把這個CSR文件傳給CA機構,然後他們會使用此請求文件生成證書。
五、編輯HTTPS(SSL)配置
修改配置文件/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerAdmin webmaster@localhost
ServerName 192.168.2.69
六、重啓APACHE
# sudo service apache2 restart
驗證:輸入服務器IP地址,用 wifidog 連接authpuppy
wifidog.conf 配置如下:
AuthServer {
Hostname 192.168.2.69
SSLAvailable yes
Path /
}
wifidog 需要用支持ssl的方式編譯,詳見wifidog 編譯https通信、支持ssl加密、https通信