使用阿里雲免費SSL證書實現全站HTTPS化

蘋果和小程序開發都開始要求使用https服務,並且運營商廣告注入也愈來愈瘋狂。因此,實現網站https很用必要。html

實現https就須要一個SSL證書。證書大部分都很貴,不過也有一些免費的證書服務供我的開發者使用,這是一個大好消息。好比騰訊雲,七牛雲,阿里雲。shell

咱們今天就拿阿里雲來實踐一下,由於個人服務器也在這裏。apache

原文連接:https://weiya.me/item/66.htmlubuntu

購買SSL證書

首先第一步就是獲取一個證書。來到阿里雲購買證書頁面。傳送門:阿里雲免費SSL地址小程序

選擇以下圖的配置。其餘的也買不起o(╯□╰)o瀏覽器

image

點擊當即購買,而後下一步,直接支付就能夠了。安全

image

看下支付成功服務器

image

以後,去阿里雲控制檯,選擇菜安全(雲盾)->證書服務,能夠找到剛剛的購買好的訂單。ide

image

剛剛買好的訂單,證書狀態爲待完成。須要點擊補全連接進行補全。網站

補全信息

補全信息就是填寫一些你的域名信息和你的我的信息,順帶驗證下域名是你的。

第一步是填寫域名。這裏不能寫通配符域名,須要寫普通域名,就是相似於www.baidu.com或者images.baidu.com這種。

因此,當你須要多個二級域名的時候,你須要購買多個免費的SSL證書。

image

下一步,填寫我的信息。

image

這裏面要注意,紅框內的域名驗證類型。

  • DNS:是在域名解析記錄裏面添加一條記錄來證實域名是你的。

  • 文件:是傳一個文件到你的域名根目錄方式來證實域名是你的。

其中若是選擇DNS的,而且域名在阿里雲的能夠直接勾選下面的複選框,這樣阿里雲就會自動幫你填寫域名解析記錄,全自動。

點擊下一步,進入生成CSR界面,這裏爲了簡單,選擇系統生成。點擊建立自動建立。

image

查看狀態

完成上面全部工做後。回到證書訂單列表,信息會顯示在審覈中狀態。點擊進度能夠查看以前步奏是否有問題。

以下狀態是成功:

image

若是點擊進度,彈出對話框以下。

image

注意紅色字。說明,系統在域名解析中添加TXT記錄存在衝突。那麼說明你的域名中存在同名的CNAME記錄。由於,CNAMETXT同名會衝突。

咱們去域名解析界面看下:

image

果真,這裏存在同名的CNAME。解決方案:

  1. 先刪除CNAME,添加TXT記錄,等到域名受權驗證經過。這時再刪除TXT,把CNAME寫回來。

  2. 先把CNAME改成A記錄(由於A記錄和TXT不衝突),而後添加TXT。等到審覈經過同上。

一切問題都解決了,下面就等簽發。

安裝服務器證書

等到簽發完成後,咱們直接點擊對應域名的下載連接。

image

跳轉到該界面,選擇你對應的服務器,下載證書。我這裏是apache

image

下載完成後,文件包內應該有4個文件。

image

咱們去服務器apache安裝的目錄建立一個文件夾cert,在裏面再建立一個文件夾admin(這裏爲了放多個域名證書,便於管理)。將剛剛下載的4個文件所有傳到服務器。

提示: ubuntu服務器的apache默認安裝目錄爲/etc/apache2

image

修改虛擬主機配置

證書文件傳好了以後,咱們須要使用證書。這裏是在apache的配置文件中引用。

首先看一下以前的apache虛擬主機配置:

<VirtualHost *:80>
    DocumentRoot /var/www/admin/
    ServerName admin.bidianer.com
    <Directory "/var/www/admin/">
        Options FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "/mnt/bidianer_error.log"
    CustomLog "/mnt/bidianer_runtime.log" common
</VirtualHost>

這裏的虛擬主機是80端口,而https走的是443接口,因此咱們不能再使用以前的80端口配置。須要從新配置。可是,若是咱們還想保留http訪問,也想用https訪問,那麼就保留這個配置,再新建一個配置。

<VirtualHost *:443>
    DocumentRoot /var/www/admin/
    ServerName admin.bidianer.com
    <Directory "/var/www/admin/">
        Options FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
        SSLEngine on
        SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLv3
        SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
        SSLCertificateFile cert/admin/public.pem
        SSLCertificateKeyFile cert/admin/214082306780502.key
        SSLCertificateChainFile cert/admin/chain.pem
    ErrorLog "/mnt/bidianer_error.log"
    CustomLog "/mnt/bidianer_runtime.log" common
</VirtualHost>

解釋: 上面這個配置是監聽443端口,因此當使用https訪問的時候會使用該配置。該配置大部分和上面的都相同,可是卻多了這一段代碼。

SSLEngine on
    SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLv3
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
    SSLCertificateFile cert/admin/public.pem
    SSLCertificateKeyFile cert/admin/21408*****0502.key # 這裏我隱藏了部分數字
    SSLCertificateChainFile cert/admin/chain.pem

這段代碼就是告訴服務器使用剛剛咱們下載好的證書。把其中的地址改成你的就能夠了(尤爲注意那串數字文件要記得改)

接下來重啓apache服務器

/etc/init.d/apache2 restart

打開瀏覽器,使用https協議訪問你的網站(這個https生效須要時間,時間不肯定,因此不會當即能夠訪問)。個人https://www.bidianer.com。綠色圖標出現,一切ok

image

CDN使用HTTPS

這部份內容不是必須的,是你使用了CDN服務纔會用到

若是你在阿里雲買了CDN,那麼如何使用HTTPS。這個方法很簡單,阿里雲已經提供了。

在開始以前,首先記得把你的相關域名解析到阿里雲的CNAME,這樣纔可使用CDN,再談CDN使用HTTPS

第一步,打開你的CDN域名列表

image

點擊相關域名的配置連接,進入配置頁面。

image

主要須要配置紅框內兩個內容。

回源設置

第一個回源設置

image

  • 其中源站信息,有3種選擇,這裏比較經常使用的是IP,選擇後填寫IP地址便可,端口選擇443端口

  • 回源HOST,開啓,選擇加速域名。

  • 回源方式,開啓協議跟隨回源

這裏說一下回源HOST,這個最好選擇默認的加速域名,不要選擇自定義,若是你當前的域名是www.bidianer.com,你自定義回源HOST爲bidianer.com,那麼在你網站中獲取的網站host信息就是bidianer.com而不是www.bidianer.com

好比PHP中$_SERVER['HTTP_HOST']就是bidianer.com,而不是www.bidianer.com,會出問題有時候。

HTTPS設置

第二個HTTPS設置

image

  • 點擊狀態開啓便可。

  • 選擇你以前建立的相關域名證書。

  • 強制跳轉能夠選擇本身想要的。

這裏說下證書名稱要和你的證書列表對應起來,不然會出錯。證書名稱在這裏:

image

開始你的多是一串亂七八糟的數字,最好修改一下,後面選擇證書不會出錯。

選錯了證書會有啥問題?

image

瀏覽器地址欄會提示:

image

用戶打開會是個警告頁面,網站就倒閉了。

最後提醒下,CDN使用HTTPS也會有很長時間的延遲,不要着急

嚴穎,星空幻穎

2017.4.27

相關文章
相關標籤/搜索