1. 獲取SSL證書
根據自己的網站服務器類型來獲取相應的ssl證書,我的服務器是ubuntu20.04。證書如下:
1 00_***.key ## 私鑰文件 2 01_CERTIFICATE_***_***.crt ## 證書文件 3 02_INTERMEDIATE_***.crt ## 證書鏈文件
將證書上傳到你的服務器上,我是在/etc/ssl/目錄下新建了一個文件夾。
2. 配置證書
首先,進入/etc/apache2/sites-available目錄,如下:
原先只有000-default.conf和default-ssl.conf兩個文件,“.old”結尾的文件用於備用原有配置文件。
做好備份后,我們需要設置一個軟鏈接,把這個文件鏈接到sites-enabled這個文件夾中,可以使用絕對路徑,也可以使用相對路徑。我使用的是絕對路徑,命令如下:
1 sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
然后去修改這個文件default-ssl.conf,因為已經做了軟鏈接,所以這時候修改這兩個文件夾下的default-ssl.conf都一樣。
初始文件內容如下(去除注釋):
1 <IfModule mod_ssl.c> 2 <VirtualHost _default_:443> 3 ServerAdmin webmaster@localhost 4 5 DocumentRoot /var/www/html 6 7 ErrorLog ${APACHE_LOG_DIR}/error.log 8 CustomLog ${APACHE_LOG_DIR}/access.log combined 9 10 SSLEngine on 11 12 SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem 13 SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 14 15 <FilesMatch "\.(cgi|shtml|phtml|php)$"> 16 SSLOptions +StdEnvVars 17 </FilesMatch> 18 <Directory /usr/lib/cgi-bin> 19 SSLOptions +StdEnvVars 20 </Directory> 21 22 </VirtualHost> 23 </IfModule>
修改后內容如下(修改的內容后有注釋):
1 <IfModule mod_ssl.c> 2 <VirtualHost _default_:443> 3 ServerAdmin ***@***.** ## 你的郵箱,不修改也可以 4 5 DocumentRoot /var/www/html/policy ## 你的應用目錄 6 7 ErrorLog ${APACHE_LOG_DIR}/error.log 8 CustomLog ${APACHE_LOG_DIR}/access.log combined 9 10 SSLEngine on 11 12 ## 下面三行配置證書文件 13 SSLCertificateFile /etc/ssl/***/01_CERTIFICATE_***_***.crt ## 證書文件,/etc/ssl/***是步驟1中的自定義文件夾 14 SSLCertificateKeyFile /etc/ssl/***/00_***.key ## 私鑰文件 15 SSLCertificateChainFile /etc/ssl/***/02_INTERMEDIATE_***.crt ## 證書鏈文件, 該行在原始文件中是被注釋的 16 17 18 <FilesMatch "\.(cgi|shtml|phtml|php)$"> 19 SSLOptions +StdEnvVars 20 </FilesMatch> 21 <Directory /usr/lib/cgi-bin> 22 SSLOptions +StdEnvVars 23 </Directory> 24 25 </VirtualHost> 26 </IfModule>
重要的4個參數,作用如下:
1 SSLEngine on ## 啟用 SSL 功能 2 SSLCertificateFile ## 證書文件 3 SSLCertificateKeyFile ## 私鑰文件 4 SSLCertificateChainFile ## 證書鏈文件
改好之后,保存;然后加載一下 Apache2 的 SSL 模塊:
1 sudo a2enmod ssl ## 加載模塊 2 sudo systemctl restart apache2 ## 重啟服務
此時在瀏覽器輸入https://域名,應該已經可以直接通過 https 的方式來訪問網站了。
但是如果不主動輸入https://的話,直接輸入域名,還是會直接跳轉到 80 端口的普通的 http 方式訪問,所以想要強制https訪問,需要做如下設置。
3. 強制 https 訪問
打開/etc/apache2/sites-available/000-default.conf文件,在VirtualHost標簽內添加如下三行:
1 RewriteEngine on 2 RewriteCond %{HTTPS} !=on 3 RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
保存,再依次輸入如下命令:
1 sudo a2enmod rewrite ## 啟動Apache2重定向 2 sudo systemctl restart apache2 ## 重啟Apache2
至此大功告成。 刷新一下網頁,輸入域名,就會直接跳轉HTTPS訪問。