2015年8月1日 星期六

Ubuntu Apache 2.4 啟動SSL

環境:
OS:Ubuntu 14.04 Server
Apache:2.4

Ubuntu Apache 2.4 是以啟用SSL虛擬主機之方式設定SSL服務。
本設定是以自行發行金鑰及憑證。


1. 安裝openssl。
    $sudo apt-get install openssl

2. 建立SSL資料夾,存放私鑰及憑證。
    $sudo mkdir /etc/apache2/ssl

2. 產生私鑰及憑證,使用自己的私鑰替自己的憑證簽章。
1. 切換目錄
$cd  /etc/apache2/ssl

2. 產生RSA Private Key,建議不要設密碼,否則 Apache 伺服器程式啟動時,讀取憑證和 Private Key 時就會詢問一次密碼。(key)
$sudo openssl genrsa -out apache.key 2048
$sudo chmod og-rwx apache.key

3. 產生憑證申請書。(csr)
憑證申請書,是把您的資料,和這個 Public Key 夾在一起,以便認證中心審核,簽上簽名用的。
$sudo openssl req -new -key apache.key -out apache.csr

Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan R.O.C
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:  //憑證的名稱(*重要*)
Email Address []:                                 //申請單位的聯絡信箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:按 Enter 直接跳過           //申請書的密碼
An optional company name []:按 Enter 直接跳過   //憑證代辦公司的名稱

檢查csr,Signature Algorithm是不是sha256WithRSAEncryption。
$openssl req -text -in apache.csr -noout

4. 產生有效期1年的伺服器憑證,繞過 CA 自己簽名的證書。(crt)
$sudo openssl x509 -req -days 365 -in apache.csr -signkey apache.key -out apache.crt

檢查crt,Signature Algorithm是不是sha256WithRSAEncryption。
$openssl x509 -text -in apache.crt -noout

5. 簽完憑證,憑證申請書就不用了,可以刪掉。
$sudo rm apache.csr

3. Apache啟動SSL模組,並重新啟動apache服務。
    $sudo a2enmod ssl
    $sudo service apache2 restart

4. 產生虛擬主機設定檔(複製預設檔)
    $cd /etc/apache2/sites-available
    $sudo cp default-ssl.conf ssl.conf

5. 修改sites-available/ssl.conf,設定憑證位置。
    $sudo vim /etc/apache2/sites-available/ssl.conf
SSLCertificateFile        /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile        /etc/apache2/ssl/apache.key

6. 修改mods-available/ssl.conf,停用SSLv3協定、停用RC4加密套件。(SSLv3 加密協定存在中間人攻擊弱點,RC4加密套件有漏洞,如果網站有使用HTTPS,強烈建議關閉)
    $nmap --script ssl-enum-ciphers -p 443        檢查SSL、加密套件資訊
$sudo vim /etc/apache2/mods-available/ssl.conf

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4 (在此屬性後面增加「:!RC4」)
SSLProtocol all -SSLv3

7. 啟用SSL虛擬主機,並重新啟動apache服務。
    $sudo a2ensite ssl
    $sudo service apache2 restart

8. 檢查port開放狀態,檢查/etc/apache2/ports.conf檔案,是否已設定port 443。    
    $netstat -atulnp
    $sudo vim /etc/apache2/ports.conf
Listen 80
<IfModule ssl_module>
       Listen 443
</IfModule>