apache2 配置安裝ssl證書
根據自己的網站伺服器來選擇下載不同的ssl證書包括:
1_root_bundle.crt # 證書檔案
2_xxx.xxx.xxx.crt # 證書檔案
3_xxx.xxx.xxx.key # 私鑰檔案
配置證書
在這裡,我假設你已經會配置基本的/etc/apache2/sites-available/000-default.conf這個檔案來達到已經可以通過 http 的方式來訪問你的站點。
在/etc/apache2這個目錄下,有兩個有關的目錄sites-available和sites-enabled,我們進入sites-enabled目錄下可以發現,裡面有一個檔案000-default.conf
lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf
實質上這個檔案是/etc/apache2/sites-available/000-default.conf這個檔案的軟連結。
我們要配置另 ssl 證書,要依靠另一個檔案,也就是default-ssl.conf,首先我們需要設定一個軟連結,把這個檔案連結到sites-enabled這個資料夾中:
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
然後去修改這個檔案000-default-ssl.conf,因為已經做了軟連結,其實這時候修改000-default-ssl.conf或default-ssl.conf都一樣。
這個檔案沒有做任何修改前長這樣子(去除自帶的註釋之後):
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost>
然後把下載好的證書(3個檔案)傳到你自定義的目錄中
然後我們需要修改一下,修改成這樣:
DocumentRoot /var/www/你的目錄
ServerName 你的域名
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
# 注意,需要新增這三行
SSLCertificateFile 你自定義的路徑/2_xxx.xxx.xxx.crt
SSLCertificateKeyFile 你自定義的路徑/3_xxx.xxx.xxx.key
SSLCertificateChainFile 你自定義的路徑/1_root_bundle.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
重要的三個引數的作用如下表:
配置檔案引數 | 說明 |
---|---|
SSLEngine on | 啟用 SSL 功能 |
SSLCertificateFile | 證書檔案 |
SSLCertificateKeyFile | 私鑰檔案 |
SSLCertificateChainFile | 證書鏈檔案 |
改好之後儲存。
然後這時,我們載入一下 Apache2 的 SSL 模組:
sudo a2enmod ssl #載入模組
sudo service apache2 restart # 重啟服務
這時,在瀏覽器輸入https://你的域名應該已經可以通過 https 的方式來訪問網站了,這時瀏覽器那裡應該也已經有了一個綠色的小鎖。
但是,但是…這還不夠,因為我們如果不主動輸入https://的話,直接輸入域名,還是會直接跳轉到 80 埠的普通的 http 方式訪問,所以我們需要強制使用 https 來訪問
強制使用https
我們只需要開啟/etc/apache2/sites-available/000-default.conf這個檔案,在你的VirtualHost*:80這個標籤內隨便一個地方加上三行:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
然後儲存,然後啟動 Apache2 的重定向:
sudo a2enmod rewrite
然後再重啟 Apache2,至此大功告成:
sudo service apache2 restart
然後,開啟瀏覽器直接輸入域名,就會自動跳轉到 https 的方式。