

如何在 Linux 正確建立自簽憑證並讓 ASP.NET Core 網站可以順利進行連線
source link: https://blog.miniasp.com/post/2021/09/27/How-to-create-TLS-certificate-in-Linux-and-make-Kestrel-works
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我最近漸漸的嘗試將各種前後端開發環境搬遷到 Linux 環境下,無論是在 WSL 或是原生的 Linux 的效能表現都比 Windows 來的出色。然而在微服務架構下,服務與服務間的通訊經常需要使用 TLS/SSL 憑證進行加密連線,但是自簽憑證在 Linux 底下預設是不受信任的,必須特別處理才能解決服務間的安全連線的信任問題。這篇文章我將說明這個過程與解決方法。
產生自簽憑證並註冊到 Linux 作業系統
-
安裝 mkcert 工具
我現在自簽憑證不太用 OpenSSL 了,因為 mkcert 實在太香、太好用了!?
mkdir -p ~/.local/bin curl -sSL https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 -o ~/.local/bin/mkcert chmod 755 ~/.local/bin/mkcert . ~/.profile
-
將 mkcert 產生的 Root CA 憑證加入到 system trust store
mkcert -install
這個命令會自動
sudo
並執行更新系統信任的憑證儲存區(system trust store),這個mkcert -install
命令等同於以下兩行指令:sudo cp ~/.local/share/mkcert/rootCA.pem /usr/local/share/ca-certificates/ sudo update-ca-certificates
產生 TLS 憑證並設定 ASP.NET Core 的 Kestrel 使用指定憑證
-
建立 ASP.NET Core Web API 專案
mkdir myapi; cd myapi; dotnet new webapi --exclude-launch-settings dotnet run
使用 cURL 連接 HTTPS 端點
curl https://localhost:5001/weatherforecast
此時會直接顯示以下錯誤,這是因為 .NET CLI 產生的自簽憑證沒有受信任的關係:
curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
-
使用
mkcert
產生 PKCS#12 憑證:localhost.pfx
以下設定
localhost
與127.0.0.1
為 TLS/SSL 憑證的 SAN (Subject Alternative Name),並儲存成localhost.pfx
檔案!mkcert -pkcs12 -p12-file localhost.pfx localhost 127.0.0.1
使用
mkcert
建立的 PKCS#12 憑證密碼寫死為changeit
而且不能指定其他密碼! -
調整 ASP.NET Core 的
appsettings.json
設定檔{ "Kestrel": { "Certificates": { "Default": { "Path": "localhost.pfx", "Password": "changeit" } } }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
-
啟動 ASP.NET Core 的 Kestrel 開發伺服器
dotnet run
-
使用 cURL 測試網站連線
curl https://localhost:5001/weatherforecast
此時應該就不會再出現任何錯誤了! ?
Recommend
-
56
使用 OpenSSL 製作萬用字元 SSL 憑證 2019-01-21 07:01 AM
-
14
SQL 連線加密觀察及加密憑證檢查 2021-08-14 10:26 AM 0 1,588 SQL Server 從很早的版本便支援加密傳輸(早期還支援 SSL,SQL Server 2016 起只支援 TL...
-
8
架設一個測試網站,最常見的需求就是一個網站(Azure Web App)外加一個資料庫(Azure SQL Database),如果有檔案儲存需求,頂多就再加一個儲存體帳戶(Azure Storage Account)就可以搞定。這篇文章我將分享如...
-
9
前幾天綠界 *.ecpay.com.tw 憑證爆掉的事情 前幾天社群蠻熱鬧在討論綠界的 *.ecpay.com.tw 憑證被上游 Sectigo 給 revoke,而導致
-
7
【茶包射手日記】Git 更新版本遇到 SSL 憑證無效問題-黑暗執行緒Git 工具內建更新功能,執行 git update-git-for-windows 指令即可自動下載更新。(參考:更新本機 Git 到最新版 by Poy
-
14
【茶包射手日記】.NET Core on Linux 無法存取 Let's Encrypt 憑證網站-黑暗執行緒 在 Linux (CentOS) 主機運作多時的 .NET Core 3.1 排程這幾個月失效,初步檢查是呼叫自訂 WebAPI 時出錯,錯誤訊息如下: Unhandled exception. System.Net.Http...
-
14
我這幾年有替幾位客戶實現 Windows 平台的自動化作業,我認為 Windows 在遠端檔案傳輸方面,一直都沒有內建非常理想的解決方案。內建的方案不外乎是開一堆 Ports 且預設傳輸沒加密的 FTP 服務、不太安全的
-
12
萬用字元 SSL/TLS 憑證為什麼不安全? 2022-02-18 08:55 PM 5 7,244 一般 SSL/TLS 憑證需明確註明網站 DNS 供特定網站使用,每次新增網站需申請新憑證...
-
4
我們公司採用 Microsoft 365 辦公協作環境,這也意味著背後一定使用了 Azure AD 目錄服務,因此我們可以直接拿 Azure AD 作為公司的 OAuth 2.0 + OpenId Connect (OIDC) 認證與授權平台,因此開發公司內部應用程式就變的非常容易。這篇文章我將說明要將一個 ASP...
-
4
Nic Lin's Blog喜歡在地上滾的工程師有時開發用或是自己防火牆內要用 HTTPS,就會需要用到自己簽 SSL 的部分通常我會在機器上的位置例如 /etc/certs/awesome.domain...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK