HTTPS和HTTP的區別
1.https協議需要到ca申請證書,一般免費證書很少,需要交費。
2.http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
3.http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
4.http的連接很簡單,是無狀態的。
5.HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
個人理解
HTTP和HTTPS是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443.HTTPS就是非對稱加密算法,客戶端首先會向服務端發起請求,這時服務端會給客戶端返回一個證書,證書里面包含產生的公鑰,這時,客戶端會隨機產生對稱密鑰,然后用服務端返回的公鑰對該密鑰進行加密,再傳輸給服務端,服務端用本地的私鑰進行解密,得到對稱密鑰。接下來,客戶端和服務端就使用對稱密鑰進行通信了.
免費獲取SSL證書的方式
我們去阿里雲網站獲取免費的SSL證書
點擊購買證書然后按照下圖所示你就能看到免費的SSL證書了
下載證書
- 這里購買免費的SSL證書,申請完成之后,直接在服務平台下載即可
- 下載完成后把下載好的證書文件上傳到 /etc/ssl這個目錄中並解壓
- 一定要注意位置,不然啟動nginx會出現文件沒有找到的錯誤
- 證書上傳成功后我們要去寫幾處配置
對wordpress文章內的圖片及后台強制https設置
wordpress上傳的圖片都寫入了絕對地址,也就是啟用https前所有上傳到文章的圖片都是以http://開頭的地址存儲
如果不轉換成https訪問網站時瀏覽器頂部的“小鎖”會在某些瀏覽器顯示安全警告
讓圖片變成https地址很簡單,只需要在當前主題的functions.php文件中添加以下代碼
/* 替換圖片鏈接為 https */ function my_content_manipulator($content){ if( is_ssl() ){ $content = str_replace('http://www.xxx.com/wp-content/uploads', 'https://www.xxx.com/wp-content/uploads', $content); } return $content; } add_filter('the_content', 'my_content_manipulator');
開啟登錄和后台https訪問
打開網站根目錄下的wp-config.php文件,在文件底部添加以下代碼
/* 強制后台和登錄使用 SSL */ define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
配置站點目錄的nginx配置文件
把下面配置寫入Nginx的配置文件nginx.conf
網站這時候雖然支持了 HTTPS 訪問,但是也可以使用 HTTP 來訪問
考慮到搜索引擎目前收錄的都是 HTTP 鏈接,需要將http重定向到https
server { listen 80; server_name blog.wgzll.cn; access_log logs/access.log main; error_log logs/error.log crit; rewrite ^(.*) https://$host$1 permanent; } server { listen 443; server_name blog.wgzll.cn; access_log logs/access.log main; error_log logs/error.log crit; index index.php index.html index.html; root /code; ssl on; ssl_certificate /etc/ssl/4248541_blog.wgzll.cn.pem; #/etc/sll下的.pem文件 ssl_certificate_key /etc/ssl/4248541_blog.wgzll.cn.key; #/etc/sll下的.key文件 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { expires 3d; access_log off; } location ~ ..(js|css)$ { expires 3d; access_log off; } }
檢查配置文件語法是否正確,然后重啟服務
nginx -t
systemctl restart nginx
出現404報錯解決方式
這個是偽靜態的問題,使用朴素鏈接可以解決此問題
網站后台--->設置--->固定鏈接
部署完成
網頁地址欄出現小鎖標志,表示證書安裝成功
SSL數字證書部署在服務器上后,用戶瀏覽器訪問網站時,展示如下
小結
證書安裝完成后,如果網站無法通過https正常訪問
需確認您安裝證書的服務器443端口是否已開啟或被其他工具攔截
如果您使用的是阿里雲ECS服務器,請前往ECS控制台安全組頁面配置放行443端口