問題
同事在開發環境中,使用 ASP.NET Core 開發,走 HTTPS 所以會使用 ASP.NET Core 的自我簽署憑證。
使用 React 開發前端 UI,使用 OIDC 跑起來,也需要 TLS 憑證,於是同事又透過 chocolatey 安裝 mkcert 來建立憑證。
即然 ASP.NET Core 已經有 TLS 憑證了,在本機跑起來也沒有問題,
那 Node.js 是否能用那個憑證呢?
解法
要讓 Node.js 使用 ASP.NET Core 的自我簽署憑證,就要先找到含金鑰憑證在那裡。
一般會是在 C:\Users\{user帳號}\.aspnet
裡面,可以找看看有沒有pfx的檔案。
如果沒找到就重新再建立一個(新的憑證要放到憑證-本機電腦-受信任的根憑證授權單位之中),
可以選擇需要的是 pfx
or PEM
檔,並要記得密碼。
確定 dotnet web 程式跑在 Browser 上沒問題,又有需要的 pfx or pem
,就可以在 Node.js 程式中設定要使用的 TLS 憑證,如下,
以下我使用 pfx 檔案,
1 | var https = require("https"); |
從 Browser 中,可以發現憑證是使用ASP.NET Core 的自我簽署憑證,如下,
- 註: 當 ASP.NET Core 的自我簽署憑證已在本機電腦-受信任的根憑證授權單位之中,本機 IIS 也可以直接選到它來使用哦。
參考資源
dotnet dev-certs
使用 .NET CLI 產生自我簽署憑證
Microsoft Visual Studio 無法將憑證新增至受信任的根憑證存放區 - 無法信任憑證
一手掩盡天下耳目: 因做錯了事,希望能瞞騙天下的人,是一種自欺欺人的行為。