ubuntu20.04 apache2 配置安裝ssl證書


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訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM