教你秒建受信任的本地 SSL 證書,徹底解決開發測試環境的無效證書警告煩惱!

  • 2019 年 10 月 7 日
  • 筆記

您是否厭倦了在本地開發項目中使用不受信任的 SSL 證書?維護自己的證書頒發機構(CA)是一個痛苦的事情,這過程中需要用到神秘的程序和命令。在本指南中,我將向您展示一種在沒有 CA 的情況下在本地開發計算機上使用受信任 SSL 證書的簡單方法。

mkcert 是一個簡單的零配置工具,由 Filippo Valsorda 使用 Go 編寫,用於製作具有您喜歡的任何名稱的本地可信開發證書,無需任何配置。這將對您有所幫助,因為無法從可信證書頒發機構獲取沒有有效 DNS 記錄的本地名稱的證書。讓我們深入研究安裝和使用 mkcert

項目地址:https://github.com/FiloSottile/mkcert

在不同平台下安裝 mkcert

  1. 如何在 Ubuntu / Debian 上安裝 mkcert

要在任何 Ubuntu 或 Debian 系統上安裝 mkcert,首先要安裝 certutil 依賴項:

$ sudo apt-get updatesudo apt install wget libnss3-tools

安裝完成後,下載 mkcert 來自 Github 的二進制包。檢查 mkcert 發佈頁面以獲取最新版本。在撰寫本文時,最新版本是。v1.4.0

$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64

下載文件後,使文件可執行並將二進制文件放在 /usr/local/bin 下面。

$ chmod +x  mkcert  $ sudo mv mkcert /usr/local/bin
  1. 如何在 CentOS / Fedora 上安裝 mkcert

在 CentOS 和 Fedora 上安裝 mkcert 類似於 Ubuntu / Debian 安裝,您只需要先安裝 nss-tools工具。

安裝 nss-tools

$ sudo yum install nss-tools

安裝完成後,下載 mkcert 二進制包,就像安裝 Ubuntu 一樣。

$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64

下載文件後,使文件可執行並將二進制文件放在 /usr/local/bin 下面。

$ chmod +x  mkcert  $ sudo mv mkcert /usr/local/bin
  1. 如何在 Arch Linux 上安裝 mkcert

對於 Arch Linux,您可以使用上述過程或使用 AUR 安裝 mkcert。對於通過 AUR 安裝你需要使用 AUR 助手,推薦 yayyay 是 Arch Linux / Manjaro 的最佳 AUR 助手。

安裝 yay 後,使用以下命令安裝 mkcert

$ yay -S --noconfirm --needed go  $ yay -S --noconfirm --needed mkcert
  1. 如何在 macOS 上安裝 mkcert

對於 macOS 用戶,您可以下載二進制包或者從中 brew 安裝 mkcert

$ brew install mkcert  $ brew install nss # if you use Firefox

對於二進制安裝:

$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64

下載文件後,使文件可執行並將二進制文件放在 /usr/local/bin 下面。

$ chmod +x  mkcert  $ sudo mv mkcert /usr/local/bin

如何使用 mkcert 生成本地受信任的 SSL 證書

  1. 生成本地受信任的 SSL 證書

mkcert 支持以下根存儲:

  • macOS system store
  • Windows system store
  • update-ca-trust (Fedora、RHEL、CentOS)
  • update-ca-certificates (Ubuntu、Debian)
  • Firefox(僅限macOS和Linux)
  • Chrome and Chromium
  • Java( JAVA_HOME )

要獲取 mkcert 的幫助頁面,請傳遞該選項 --help

Usage of mkcert:    $ mkcert -install  Install the local CA in the system trust store.    $ mkcert example.org  Generate "example.org.pem" and "example.org-key.pem".    $ mkcert example.com myapp.dev localhost 127.0.0.1 ::1  Generate "example.com+4.pem" and "example.com+4-key.pem".    $ mkcert '*.example.com'  Generate "_wildcard.example.com.pem" and "_wildcard.example.com-key.pem".    $ mkcert -pkcs12 example.com  Generate "example.com.p12" instead of a PEM file.    $ mkcert -uninstall  Uninstall the local CA (but do not delete it).    Change the CA certificate and key storage location by setting $CAROOT,  print it with "mkcert -CAROOT".

您需要首先在系統信任庫中安裝本地 CA.

$ mkcert -install    Created a new local CA at "/home/myfreax/.local/share/mkcert" ?  The local CA is now installed in the system trust store! ⚡️

完成後,您可以開始為您的域名生成 SSL 證書。例如,我將生成一個對以下名稱有效的新證書。

"mydomain.com"  "*.mydomain.co"  "myapp.net"  "localhost"  "127.0.0.1"  "::1"

你可以使用如下命令對上面的域名生成證書。

$ mkcert mydomain.com '*.mydomain.co' myapp.net localhost 127.0.0.1 ::1

命令執行後,會輸出以下內容。

Using the local CA at "/root/.local/share/mkcert" ✨    Created a new certificate valid for the following names ?  - "mydomain.com"  - "*.mydomain.co"  - "myapp.net"  - "localhost"  - "127.0.0.1"  - "::1"  The certificate is at "./mydomain.com+5.pem" and the key at "./mydomain.com+5-key.pem" ✅

證書生成完後,你也可以查看證書的內容。

$ cat ./mydomain.com+5.pem
  1. 測試 mkcert 證書

現在讓我們使用一個簡單的 Nginx 配置文件測試 mkcert 證書。這個例子是在 Ubuntu 16.04 系統上完成的。

  1. 安裝一個 Nginx 服務器
$ sudo apt-get install nginx
  1. 創建一個簡單的網頁
$ echo 'Hello Hi-Linux.com !' > /var/www/test/index.html
  1. 配置一個簡單的 HTTPS 服務器
$ cat /etc/nginx/conf.d/test.conf  server {     listen 80;     server_name mydomain.com myapp.net;     root /var/www/test;  }    server {     listen *:443 ssl http2;     root /var/www/test;     server_name mydomain.com myapp.net;     ssl_certificate /home/jmutai/mydomain.com+5.pem;     ssl_certificate_key /home/jmutai/mydomain.com+5-key.pem;  }
  1. 確保您的 /etc/hosts 文件包含已使用域名的記錄。
$ cat/etc/hosts    127.0.0.1 myapp.net  127.0.0.1 mydomain.com

打開瀏覽器並使用提供的域名,你應該得到一個帶有綠色安全圖標的地址欄,至此創建一個受信任的本地 SSL 證書就完成了。

來源:myfreax 原文:http://t.cn/AiRQ3uFJ 題圖:來自谷歌圖片搜索 版權:本文版權歸原作者所有 投稿:歡迎投稿,郵箱: [email protected]