在本機端測試的時候,如果有連到遠端 https 來源資源的需求,可能會愈到連線的限制,因為遠端資源會將 http 視為不安全的連線因而拒絕連線請求,此時若能為 localhost 產生一個 SSL 連線的偽裝,就可以方便的載入這些資源,並且也能更接近實際上線後 https 的連線情況。
利用 mkcert 這套工具,就可以在電腦中製作一份本地的證書,因此就可以利用此證書來為自己本機上的各種域名建立 https 的安全連線啦!
安裝憑證建立工具
首先我們需要利用 homebrew 來安裝憑證產生工具,如果沒有 homebrew 記得先去安裝。
$ brew install mkcert
製作 SSL 憑證
接著我們要先利用這個工具產生本機的 CA。
$ mkcert -install
然後就可以來製作本機網域用的安全憑證,可以一次製作多個網域用的
$ mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
做好後會在同資料夾內產生 2 個憑證檔案,分別是 certificate 的 example.com+5.pem
檔案跟金鑰的example.com+5-key.pem
。
有了這兩個檔案,就可以開始為我們的虛擬伺服器建立安全連線啦!
建立安全連線
在 Apache 伺服器中,虛擬伺服器是利用 vhost 設定檔來實現,因此現在我們一樣要來到這裡新增安全連線設定。
$ sudo vi /etc/apache2/extra/httpd-vhosts.conf
在最下面加入以下設定
<VirtualHost *:443>
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
SSLEngine on
SSLCertificateFile "/path/to/example.com+5.pem"
SSLCertificateKeyFile "/path/to/example.com+5-key.pem"
</VirtualHost>
再重新啟動伺服器,就好。