Mkcert – 在 Linux 上為本地開發創建 SSL 證書

在本文中,我將解釋如何在我們最新的 Ubuntu 系統上安裝 mkcert,這是一個零配置工具。 Mkcert 是一個簡單的工具,可用於製作本地可信證書。 它不需要任何配置。 使用來自真實證書頒發機構的證書總是很危險或不可能的 localhost or 127.0.0.1. 即使使用自簽名證書也同樣不推薦,因為它們會導致信任錯誤。

Mkcert 通過管理自己的 CA 為我們提供了最佳解決方案。 這將自動在系統根存儲中創建和安裝本地 CA,並生成本地信任的證書。 讓我們看看安裝 mkcert 的步驟。

先決條件

  • 配置良好的服務器,具有 Go 1.10+ 和 root 權限。
  • 證書數據庫工具 (Certutil)

安裝 Golang

Go 是一種通用系統編程語言,我們可以使用它構建各種應用程序。 Go 語言及其工具包在我們的默認存儲庫中可用。 我們可以通過運行這個命令在 Ubuntu 18.04 中安裝 Go 語言。

#apt install golang
# go version
go version go1.10.1 linux/amd64

現在我們可以創建一個文件“/etc/profile.d/goenv.sh”來在服務器範圍內設置Go環境變量,如下所示:

# cat /etc/profile.d/goenv.sh
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

# source /etc/profile.d/goenv.sh

安裝證書

證書數據庫工具或 Certutil 是一個簡單的命令行實用程序,可以創建/修改證書及其密鑰數據庫。 它可以專門用於列出、生成、修改或刪除證書。 它甚至可以用於創建或更改密碼,生成新的公鑰/私鑰對。 此外,它顯示密鑰數據庫的內容或刪除密鑰數據庫中的密鑰對。 在我們的 Ubuntu 服務器中,我們可以通過運行以下命令來安裝它:

#apt install libnss3-tools

安裝 Mkcert

根據我們的操作系統平台和要求,我們需要下載源文件 mkcert 工具 這裡。

#wget https://github.com/FiloSottile/mkcert/archive/v1.0.0.tar.gz
# cd mkcert-1.0.0/
#make

現在我們可以將這個 mkcert 二進製文件從安裝文件夾複製到 /usr/bin/ 文件夾以在服務器範圍內使用它。

#cd mkcert-1.0.0/bin/
#cp mkcert /usr/bin/

最後,我們可以使用以下命令生成本地 CA 以生成證書:

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

出根 CA 將被創建並保存在路徑下 /root/.local/share/mkcert. 通常,CA 證書及其密鑰存儲在用戶主目錄中的應用程序數據文件夾中。 也可以通過命令獲取位置 mkcert -CAROOT.

# mkcert -CAROOT
/root/.local/share/mkcert

現在我們可以根據需要使用這個工俱生成本地可信的開發證書:

# mkcert example.com '*.example.org' myapp.dev localhost 127.0.0.1 ::1
Using the local CA at "/root/.local/share/mkcert" ✨

Created a new certificate valid for the following names ?
- "example.com"
- "*.example.org"
- "myapp.dev"
- "localhost"
- "127.0.0.1"
- "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

正如此命令執行中所報告的,生成的本地可信證書保存在我們運行此命令的路徑中。 就我而言,我的證書是在 /root 本身創建的。 我只是將這些文件移動到 /etc/ssl 文件夾如下:

#cp /root/example.com+5.pem /etc/ssl/certs/
#cp /root/example.com+5-key.pem /etc/ssl/private/

在 Apache2 上啟用證書

我們的下一步是安裝我們的 Web 服務器並啟用 SSL 以使用此本地受信任的開發證書。 我安裝了 Apache2 並啟用了 SSL 以利用它。

#apt install apache2
#systemctl enable apache2
#systemctl start apache2

其次,編輯位於以下位置的默認 SSL 文件 /etc/apache2/sites-available/default-ssl.conf 使用我們本地生成的 SSL 證書和密鑰詳細信息如下:

SSLCertificateFile /etc/ssl/certs/example.com+5.pem
SSLCertificateKeyFile /etc/ssl/private/example.com+5-key.pem

現在您可以啟用 SSL 模塊並重新啟動 Apache2 服務以使這些更改生效。

# a2enmod ssl
# a2ensite default-ssl.conf
Enabling site default-ssl.
To activate the new configuration, you need to run:
systemctl reload apache2
#systemctl reload apache2
#systemctl restart apache2

最後,我們可以嘗試瀏覽 https://localhost 以確認它是否正常工作。

另請閱讀:

  • 如何在 Ubuntu 18.04 上安裝 Let’s Encrypt SSL 證書

你好! 我們已準備好使用本地受信任的證書。 Mkcert 僅用於開發目的,不推薦用於生產,因此不應在最終用戶的機器上使用它,出於安全原因,您不應導出或共享 rootCA-key.pem。 我希望這篇文章對你有用和有用! 請就此發表您的寶貴意見和建議。