創建一個帶有自簽名證書的 Express HTTPS 伺服器
如何為 Node.js 創建一個自簽名的 HTTPS 證書以在本地測試應用程式
要能夠從本地主機上提供 HTTPS 的網站,您需要創建一個自簽名證書。
自簽名證書足以建立一個安全的 HTTPS 連接,用於開發目的。儘管瀏覽器會報錯說該證書是自簽名的(並且因此不受信任)。
要創建證書,您必須在系統上安裝 OpenSSL。
您可能已經安裝了它,只需在終端中嘗試鍵入 openssl
即可。
如果沒有,在 Mac 上,您可以使用 brew install openssl
(如果您使用的是 Homebrew)。否則,請在 Google 上搜索“如何在 ”。
安裝了 OpenSSL 之後,運行以下命令:
1 | openssl req -nodes -new -x509 -keyout server.key -out server.cert |
您會被提示回答幾個問題。第一個是國家名稱:
1 | Generating a 1024 bit RSA private key |
然後是您的州或省份:
1 | State or Province Name (full name) [Some-State]: |
您的城市:
1 | Locality Name (eg, city) []: |
…以及您的組織名稱:
1 | Organization Name (eg, company) [Internet Widgits Pty Ltd]: |
您可以將這些都留空。
只需記住將其設置為 localhost
:
1 | Common Name (e.g. server FQDN or YOUR name) []: localhost |
…並添加您的電子郵件地址:
1 | Email Address []: |
完成!現在您在運行原始命令的文件夾中有兩個檔案:
server.cert
是自簽名證書檔案server.key
是證書的私鑰
建立 HTTPS 連接時需要這兩個檔案,根據您將如何設定伺服器,使用它們的過程將有所不同。
這是一個使用 https
核心模組和 Express 的範例:
1 | const https = require('https') |
如果不添加證書,如果我連接到 https://localhost:3000
,瀏覽器將顯示以下內容:
安裝了證書後:
1 | const fs = require('fs') |
Chrome 將告訴我們該證書無效(因為它是自簽名的),並要求我們確認後才能繼續(但是,HTTPS 連接仍然有效):
tags: [“Node.js”, “Express”, “HTTPS”, “self-signed certificate”, “OpenSSL”]