點燈坊

失くすものさえない今が強くなるチャンスよ

在本機以 HTTPS 測試 Vue

Sam Xiao's Avatar 2020-08-15

如詢問是否開啟 Camera 只有在 HTTPS 才會發生,因此在本機開啟 HTTPS 模式成為開發測試所必須,Vue CLI 並沒有內建 HTTPS,需另外加已設定。

Version

macOS Catalina 10.15.6
Vue 2.6.11
Vue CLI 4.5.3
Mkcert 1.4.1

mkcer

$ brew install mkcert

使用 Homebrew 安裝 mkcert。

https000

Install Local CA

$ mkcert -install

使用 mkcert 將 localhost CA 安裝到系統。

https001

Create Project

$ vue create vue-https

使用 Vue CLI 建立 project。

$ mkcert localhost

在 project 目錄下使用 mkcert 對 localhost 產生 certificate。

https002

https003

在 project 的 root folder 下會發現新增了 localhost-key.pemlocalhost.pem 兩個 file。

Vue Configuration

vue.config.js

let fs = require("fs")

module.exports = {
  devServer: {
    https: {
      key: fs.readFileSync(`${__dirname}/localhost-key.pem`),
      cert: fs.readFileSync(`${__dirname}/localhost.pem`)
    }
  }
}

在 project 的 root folder 新增 vue.config.js 使用 localhost-key.pemlocalhost.pem

https004

Dev Server

$ yarn serve

啟動 Dev Server 會發現 https 已啟動。

https005

Localhost

https006

https://localhost:8080 因為已經有 localhost CA,所以看得到鎖頭。

IP Address

https009

https://192.168.11.3:8080 也能正常顯示,因為沒有 CA 所以顯示 Not Secure

Serve

$ serve dist --ssl-cert localhost.pem --ssl-key localhost-key.pem

若要使用 serve 執行 dist 目錄下的檔案,且以 HTTPS 執行,可加上 --ssl-cert--ssl-key 參數。

https010

Localhost

https011

https://localhost:5000 因為已經有 localhost CA,所以看得到鎖頭。

IP address

https012

https://192.168.11.3:5000 也能正常顯示,因為沒有 CA 所以顯示 Not Secure

Conclusion

  • 配合 mkcert 產生 certificate,Dev Server 與 Serve 都能以 HTTPS 執行

Reference

Ares, Mkcert - 本地端使用 https (Live Server & Vue CLI & Nuxt.js