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,設定憑證位置。
6. 修改mods-available/ssl.conf,停用SSLv3協定、停用RC4加密套件。(SSLv3 加密協定存在中間人攻擊弱點,RC4加密套件有漏洞,如果網站有使用HTTPS,強烈建議關閉)
$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
$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> |