Ubuntu 20 Apache2 配置安裝ssl證書
事由:我最近有一個新想法,關於使用Mpay的數據分析項目要進行,所以我決定由0開始建立一個平台,由買Domain 到 架server,再到把domain 安裝上ssl 証書...

改好之後保存。
然後這時,我們加載一下 Apache2 的 SSL 模塊:
背景:
1. 去阿里雲買了mpay.work 的domain:
2. 去Cloudflare設定一個mpay.work的domain
- 要在阿里雲設定DNS
- 在Cloudflare 設定原本的A項指向你的server ip
- 在Cloudflare 可以設定防火牆 和 看到流量等等資料
3. 去阿里雲買了mpay.work 的ssl or 買免費ssl cert:
根據自己的網站服務器來選擇下載不同的ssl證書
# 包括以下:
1_root_bundle.crt # 證書文件
2_xxx.xxx.xxx.crt # 證書文件
3_xxx.xxx.xxx.key # 私鑰文件
4. 配置證書
在這裡,我假設你已經會配置基本的/etc/apache2/sites-available/000-default.conf這個文件來達到已經可以通過 http 的方式來訪問你的站點。
在/etc/apache2這個目錄下,有兩個有關的目錄sites-available和sites-enabled,我們進入sites-enabled目錄下可以發現,裡面有一個文件000-default.conf
$ ll 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="" php="" phtml="" shtml=""> SSLOptions +StdEnvVars </filesmatch> <directory cgi-bin="" lib="" usr=""> SSLOptions +StdEnvVars </directory> </virtualhost> </ifmodule>然後把從阿里雲上面下載好的證書(3個文件)傳到你自定義的目錄中 然後我們需要修改一下,修改成這樣:
<ifmodule mod_ssl.c=""> <virtualhost _default_:443=""> ServerAdmin 你的邮箱 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="" php="" phtml="" shtml=""> SSLOptions +StdEnvVars </filesmatch> <directory cgi-bin="" lib="" usr=""> SSLOptions +StdEnvVars </directory> </virtualhost> </ifmodule>
重要的三个参数的作用如下表:
配置文件参数 | 说明 |
---|---|
SSLEngine on | 启用 SSL 功能 |
SSLCertificateFile | 证书文件 |
SSLCertificateKeyFile | 私钥文件 |
SSLCertificateChainFile | 证书链文件 |
sudo a2enmod ssl #加載模塊 sudo service apache2 restart # 重啟服務這時,在瀏覽器輸入https://你的域名應該已經可以通過 https 的方式來訪問網站了,這時瀏覽器那裡應該也已經有了一個綠色的小鎖。 但是,但是…這還不夠,因為我們如果不主動輸入https://的話,直接輸入域名,還是會直接跳轉到 80 端口的普通的 http 方式訪問,所以我們需要強制使用 https 來訪問 強制使用https 我們只需要打開/etc/apache2/sites-available/000-default.conf這個文件,在你的這個標籤內隨便一個地方加上三行:
RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]然後保存,然後啟動 Apache2 的重定向:
sudo a2enmod rewrite然後再重啟 Apache2,至此大功告成:
sudo service apache2 restart然後,打開瀏覽器直接輸入域名,就會自動跳轉到 https 的方式。
Comments
Post a Comment