微信小程序 Https免費證書配置

微信小程序❶羣微信小程序❶羣微信小程序❶羣

微信小程序開發必須使用https證書,同時網站必須備案後纔可以使用,

國內一般都是阿里雲、騰訊雲服務器,也可免費證書的安裝
這裏是我使用的永久免費的證書相關簡介

Let’s Encrypt

如果要啓用HTTPS,我們就需要從證書授權機構處獲取一個證書,Let’s Encrypt 就是一個證書授權機構。我們可以從 Let’s Encrypt 獲得網站域名的免費的證書。

Certbot
  Certbot是Let’s Encrypt推出的獲取證書的客戶端,可以讓我們免費快速地獲取Let’s Encrypt證書。

開始部署

安裝Certbot

進入Certbot的官網,選擇你所使用的軟件和系統環境,然後就會跳轉到對應版本的安裝方法,以Ubuntu + Nginx爲例

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot 

獲取證書

安裝完成後執行:

certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com

#####這條命令的意思是爲以/var/www/example爲根目錄的兩個域名example.com和www.example.com申請證書。

如果你的網站沒有根目錄或者是你不知道你的網站根目錄在哪裏,可以通過下面的語句來實現:

certbot certonly --standalone -d example.com -d www.example.com

使用這個語句時Certbot會自動啓用網站的443端口來進行驗證,如果你有某些服務佔用了443端口,就必須先停止這些服務,然後再用這種方式申請證書。

證書申請完之後,Certbot會告訴你證書所在的目錄,一般來說會在/etc/letsencrypt/live/這個目錄下。

###配置Nginx啓動HTTPS 找到網站的Nginx配置文件nginx.conf,找到listen 80;,修改爲listen
###443;在這一行的下面添加以下內容:

ssl on;
ssl_certificate XXX/fullchain.pem; # 修改爲fullchain.pem所在的路徑
ssl_certificate_key XXX/privkey.pem; # 修改爲privkey.pem所在的路徑
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

保存退出後,通過nginx -t來檢查配置文件是否正確,有錯誤的話改之即可。配置文件檢測正確之後,通過nginx -s
reload來重載配置文件。

然後通過訪問https://example.com來查看是否配置成功。

如果發現無法訪問或者是加載不出來的話檢查一下443端口有沒有開啓!

設置HTTP強制跳轉HTTPS

上一步成功之後大家可能會發現通過原來的http://example.com無法訪問網頁了,因爲HTTP默認走的是80端口,我們剛纔將其修改爲443端口了。在這裏我們可以在配置文件的最後一行加入以

server {
    listen 80;
    server_name example.com; # 這裏修改爲網站域名
    rewrite ^(.*)$ https://$host$1 permanent;
}

一個通過80端口訪問的請求都會強制跳轉到443端口,這樣一來訪問http://example.com的時候就會自動跳轉到https://example.com了。

###設置證書自動續期
有心的小夥伴可能會留意到我們剛纔申請的整數的有效期只有90天,不是很長,可是我們可以通過Linux自帶的cron來實現自動續期,這樣就相當於永久了。

開始部署

隨便找一個目錄,新建一個文件,名字隨便起,在這裏以example爲例,在裏面寫入

0 */12 ** * certbot renew–quiet –renew-hook “/etc/init.d/nginx reload"

保存。

然後在控制檯裏執行crontab
example一切都OK了。原理是example裏存入了一個每天檢查更新兩次的命令,這個命令會自動續期服務器裏存在的來自Certbot的SSL證書。然後把example裏存在的命令導入進Certbot的定時程序裏。

附:

Nginx相關命令:

nginx -t # 驗證配置是否正確
service nginx start #啓動
Nginx nginx -s stop # 快速停止或關閉
Nginx nginx -s quit # 正常停止或關閉Nginx
nginx -s reload # 重新載入配置文件

crontab相關命令:

cat /var/log/cron # 查看crontab日誌
crontab -e#編輯crontab列表
systemctl status crond.service # 查看crontab服務狀態
systemctlrestart crond.service # 重啓crontab

備註:

安裝證書的時候如果出現如下錯誤:

let’s Encrypt 證書之安裝故障 Could not bind to IPv4 or IPv6.

Problem binding to port 80: Could not bind to IPv4 or IPv6. 則原因是 nginx
佔用了80端口,輸入 service nginx stop。然後再次執行證書安裝命令,即可順利安裝。

安裝完畢後,輸入 service nginx start,重啓 nginx 服務。

問題二:如果瀏覽器顯示證書不安全也會導致,開發的時候可以請求到數據,但是線上無法獲取到數據,

並且瀏覽器 Provisional headers are shown
無法向後臺發送請求,建議在微信小程序開發的時候在app.json中打開,”debug”:true。 這樣可以方便查看詳細錯誤

總結

Tips:

如果在查看本文的時候有什麼問題,可以在評論區留言,或者加我微信(不閒聊),拉你進羣一起討論:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章