阿里云ECS服務器Ubuntu主機給Apache配置SSL證書之前把博客網站搭建在樹莓派上,就放在床頭,除了吵點兒,運行沒有什么太大的問題,用了內網穿透,外網訪問也okay,樹莓派搭建博客的文章:樹莓派搭建wordpress博客,但是我就是喜歡折騰,總喜歡搞點兒自己從來沒有搞過的,在對比了幾家云服務商之后感覺都差不多,因為我的域名是在阿里云購買的,省的麻煩,就買了阿里云的服務器,可真是不便宜啊,但還是續費了三個月的,總共一百多,直接購買三年的好像最劃算,不過要一千兩百多,鑒于最近一貧如洗,還是少買了點兒;最坑爹的是,我買完第二天就看到了百度云搞活動,一樣的配置一年八十幾,心在滴血……所以啊,以后還是要考慮清楚了再下手哇。廢話不多說,進入正題。
今天之所以要記這篇博客,是因為我花了半天時間搞這玩意兒,本來很簡單的步驟,被我搞得很復雜,特此記錄下來,以防以后我再遇到相同的問題到處搜索,焦頭爛額,也希望這篇文章能幫助一些和我一樣的小伙伴。
1. 申請免費的ssl證書
在阿里云ssl證書控制臺購買免費版的個人ssl證書,前提是你要有一個在阿里云買的域名,購買成功之后就可以在控制臺下載證書,下載下來是一個zip的壓縮包,先不要解壓,等待會兒上傳到服務器再解壓。
2. 上傳SSL證書
我用的是putty上傳的,因為在網上找了xshell竟然要錢,這怎么行。在putty安裝目錄里面有個pscp.exe的程序,打開windows命令行或powershell命令行,切換到putty的安裝目錄,比如我的是 cd ‘C:\Program Files\PuTTY\’,然后運行命令:
pscp 要上傳的文件路徑 root@服務器主機IP地址:要存入的主機的路徑
比如我的就是:
pscp D:\下載\xxx_apache.zip root@xxx:/home/wenxiao/zips.zip
運行完這個命令之后,文件就被上傳到指定位置了,我用的是密鑰對登錄,沒有輸密碼,如果云服務器沒有綁定密鑰對的話,可能需要輸入密碼。證書上傳到服務器之后,接下來的事情就好辦多了。
3. 安裝openssl
sudo apt-get install openssl
4. 部署ssl證書
關于部署ssl證書,阿里云ssl證書管理控制臺有非常全面的幫助文檔,所以這一塊的內容大多是來自幫助文檔。我著重記錄我所遇到的問題和解決方法。
1.在apache2的配置目錄下新建ssl文件夾,并把剛才上傳的證書文件copy到該文件夾下面,用unzip程序解壓(如果提示沒有unzip程序,apt-get install unzip 安裝即可)。
cd /etc/apache2? ? ? ? ? ? ? ? ? # 切換到apache2的配置目錄
sudo mkdir ssl? ? ? ? ? ? ? ? ? ? ? ? # 創建ssl文件夾
cd ./ssl? ? ? ? ? ? ? ? ? ? ? ? # 切換到ssl文件夾
sudo cp /home/wenxiao/zips.zip ./? ? # 將上傳的證書文件復制到ssl文件夾中
sudo unzip zips.zip? ? ? ? ? ? ? ? ? # 解壓證書壓縮包
2. 啟動ssl模塊
sudo a2enmod ssl
ssl模塊啟動后切換到/etc/apache2/sites-available文件夾,查看default-ssl.conf文件
3.修改ssl配置文件
sudo vim /etc/apache2/sites-available/default-ssl.conf
#在文件中找到以下字段,并修改
<IfModules mod_ssl.c>
<VirtualHost *:443>?
ServerName? #修改為證書綁定的域名www.YourDomainName.com。
SSLCertificateFile /etc/apache2/ssl/www.YourDomainName_public.crt? #將/etc/apache2/ssl/www.YourDomainName.com_public.crt替換為證書文件路徑+證書文件名。
SSLCertificateKeyFile /etc/ssl/apache2/www.YourDomainName.com.key? #將/etc/apache2/ssl/www.YourDomainName.com.key替換為證書密鑰文件路徑+證書密鑰文件名。
SSLCertificateChainFile /etc/apache2/ssl/www.YourDomainName.com_chain.crt? #將/etc/apache2/ssl/www.YourDomainName.com_chain.crt替換為證書鏈文件路徑+證書鏈文件名。
4. 使用以下命令將修改好的配置文件映射到sites-enable文件夾下面
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
5. 運行以下命令重新加載Apache 2配置文件。
sudo /etc/init.d/apache2 force-reload
或
service apache2 force-reload
6. 運行以下命令重啟apahce服務
sudo /etc/init.d/apache2 restart
到這一步,ssl證書就部署完成了,在瀏覽器中輸入:https://你的域名應該就可以登錄,瀏覽器地址欄左邊會顯示一把小鎖,這就表明你的主機apache服務的https開通成功了。就可以去網站的主頁配置和相對鏈接設置中把地址改成https的了。
7.依然存在的問題
在開通https之后,可以通過https://域名 來訪問網站,但是http:域名 也是可以訪問網站的,而且,在瀏覽器地址欄直接輸入域名后,還是會跳轉到非https網頁,這樣總是不完美的,在網上查找了一番并問了一些網友之后,好像要通過url重寫,這塊我還不是很懂,好在不是特別緊急的事,先放著吧,等我搞明白了在來設置。
5. 總結和問題反思
這次部署過程中,在幾個問題上花費了大量的時間,最后都發現是非常蠢的事情。
①在部署完之后,要重啟apache2的時候報錯,提示查看systemctl status apache2.service,這是查看錯誤報告的,出來一大堆英文,根本就沒看,在網上搜了老久,沒有一個解決問題的方案。最后沒轍,只能硬著頭皮把錯誤報告仔細的看了一遍,發現里面有一句話,非常清楚的指出了那個配置文件的哪一行出現了問題:
AH00526: Syntax error on line 9 of /etc/apache2/ports.conf:
多么明顯的指示,順著路找回去發現ports.conf文件中第九行果真有一句之前不知道從網上哪里看到的添加的一句話,注釋掉再重啟就不會再報錯了。所以啊,如果遇到了問題,一定要看程序錯誤報告,冷靜的分析,不要跟個無頭蒼蠅一樣到處亂撞,浪費時間,還顯得很沒有水準。
②在/etc/apache2/sites-available/default-ssl.conf文件中,對證書的路徑一定要設置準確,不然也是不能成功的,這些都是細節,在排錯中要非常仔細。
③網站目前依然存在的問題,非常詭異,就是不能上傳圖片,它不是一直不能上傳,有時候能,有時候不能,前兩天我還上傳了個視頻呢,這兩天上傳的圖片只能存在幾秒鐘,也就是剛上傳上來還好,過一會兒就編程了一個空白的,不過以前上傳的文件都好好的。暫時還搞不明白,懷疑是阿里云盾或者什么安全服務搞得鬼,以后解決了這個問題再來補充更新。看到的朋友如果知道這鬼問題怎么解決的話一定請在評論區指教,謝謝。
這篇ubuntu的部署筆記,我認為適用于大多數基于debian的系統,而且,原理明白了,就算是不同的系統,也不會很難,網絡上從來都不缺這類的內容,而我認為最重要的是要學會去看程序錯誤報告,這是解決問題的最佳捷徑!