超文本傳輸安全協議(Hypertext Transfer Protocol Secure
,縮寫爲HTTPS
)是一種網絡安全傳輸協議http
是HTTP
協議運行在TCP
之上,全部傳輸的內容都是明文,客戶端和服務器端都沒法驗證對方的身份https
是HTTP
運行在SSL/TLS
之上,SSL/TLS
運行在TCP
之上,全部傳輸的內容都通過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。HTTPS
經過TLS
層和證書機制提供了內容加密、身份認證和數據完整性三大功能,能夠有效防止數據被查看或篡改,以及防止中間人冒充,相比http而言更安全,愈來愈多的網站選擇了全站 HTTPS
html
經過騰訊雲申請免費的SSL證書
,爲期一年,申請地址:https://console.qcloud.com/ssl
我就不廢話了,直接上圖以下:
注意:域名這裏咱們填的是二級域名,由於騰訊雲僅支持單個非頂級域名的證書申請,若是咱們有多個子域須要申請屢次DNS
驗證能夠選擇自動和手動,若是自動失敗的話能夠再手動驗證,手動驗證操做以下,自動驗證經過可無視,查看證書詳情,看到以下信息:
這裏以DNSPOD解析爲例,其餘解析服務基本同樣,主機記錄
就是上圖標記①
中內容,記錄類型
選擇CNAME
,記錄值
選擇上圖標記②
的內容,點擊保存,而後等差很少一分鐘左右證書就申請下來了:
配置的話請參考證書安裝指南,須要上傳到服務器mysql
此時咱們訪問咱們的網站能夠發現加https
和不加https
均可以訪問到,那麼如何強制把網站重定向到https
頁面中去了,也就是接下來要說到的htaccess
文件了,能夠用來重定向頁面
咱們在服務器根目錄下新建一個.htaccess
文件,而後往其中添加如下幾行就會自動定向到https
中去linux
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
固然若是你須要你每一個子域都重定向到https
頁面中去,那麼能夠在每一個子域的根目錄下添加上面的.htaccess
文件,暫時我選用的就是這個笨辦法
此時你能夠發現直接重定向到https
頁面了,可是因爲以前引用的微博圖牀的圖片由於是http
協議,因此控制檯會報錯,提示Mixed Content
錯誤信息。若是圖片是直接輸出到頁面中的話,由於微博圖牀也支持https
引用,因此咱們能夠修改http
協議爲https
,此時控制檯就不會再報錯了。若是圖片信息是從數據庫裏獲取的話,咱們能夠在mysql
執行如下命令批量修改sql
update table set imgSrc=REPLACE(imgSrc,'http:','https:')
可是我建議的是不直接使用https
,而是採用無協議頭的用法,也即引用大多數CDN
所使用的方法
好了,到此全站https
的啓用就完成了,你會發現訪問個人網站時瀏覽器地址欄都加了一把小鎖了數據庫
參考資料:
超文本傳輸安全協議
Redirect HTTP to HTTPS automatically
25個有用.htaccess技巧
21個很是有用的.htaccess提示和技巧瀏覽器