筆記:使用mkcert建立本機https測試環境

因為開發一些套件要在Ubuntu 20.04本機上測試需要使用https建立測試環境。

事前套件安裝

sudo apt-get install wget libnss3-tools

安裝mkcert

wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 

sudo mv mkcert-v1.4.3-linux-amd64 /usr/bin/mkcert

sudo chmod +x /usr/bin/mkcert

確認執行檔擺放正確

mkcert --version

如果沒有辦法直接用mkcert指令

安裝到瀏覽器

mkcert -install

用後請重啟你的瀏覽器restart your browser

建立https憑證

建立domain name為localhost, ip為127.0.0.1的憑證

mkdir -p certs && mkcert -key-file ./certs/key.pem -cert-file ./certs/cert.pem localhost 127.0.0.1

憑證內容可以使用 openssl 指令來確認產生出的憑證適用的網域

openssl x509 -in ./certs/cert.pem -text | grep DNS

如果你是要模擬線上某個網域,可以透過在改/etc/hosts,多加入一行本機IP(127.0.0.1) 空格 網域名稱(不包含http和路徑的那些部份)

舉例 sudo sh -c "echo '127.0.0.1 my-host.test.com' >> /etc/hosts"

hosts改好之後用ping看是否會導向本機 ping my-host.test.com

設定HTTP server

將憑證設定到你的http server,以centos的apache來說應該是替換掉下面這兩個路徑

  • /etc/pki/tls/certs/localhost.crt
  • /etc/pki/tls/private/localhost.key


參考: https://0xzx.com/zh-tw/2021081700281668036.html

留言

Mirochiu寫道…
如果server和cliient是不同的話:
1. mkcert安裝到client機器(目的是將root ca憑證會擺到瀏覽器/系統ca目錄裡頭)
2. 用client產生https憑證,ip就是你要連線的server ip,和你想要用的domain
3. 因為dns沒有註冊domain所以你就改client的host檔案,讓它走server ip
4. 把憑證放到server的設定檔裡頭
這樣就完成了