選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (551 個字)

以自簽憑證搭配-hashicorp-vault

以自簽憑證搭配-hashicorp-vault

過去筆者在幾篇文章中,陸續都有提到 HashiCorp Vault 的入門應用。但不知有沒有人在實際操作時,發現每次在 Vault Client 下任何指令前,都要先設置一個 VAULT_ADDR 環境變數指向 Vault Server,如果是本機既是 Vault Server 又是 Vault Client 的話,這環境變數內容是 http://127.0.0.1:8200 或 http://localhost:8200 都可以,有點麻煩不是嗎?

先介紹一下為何都要設這個環境變數:在預設情況下,Vault Client 會向本機的 8200 埠發出 https Request 試圖與 Vault Server 通訊。注意,是 https 喔!正因為我們之前的 Vault 組態很陽春,並不支援 https 協定,所以在沒有達到 HashiCorp Vault 預設的前提下,每次就多了額外指定 Server URL 的工作。

那如果在 Vault Server / Client 都在本機的狀況下,要怎麼省去環境變數,也就是讓 Vault Client 能經由 https 協定在本機的 8200 埠與 Server 端通訊呢?答案就是自簽憑證了。自簽憑證有許多工具可以製作,之後要分別部署在 Server Client 兩端。這次我們就來介紹,如果你和筆者一樣也是開發人員的話,是不是都已經裝了 Git for Windows + VS Code 了呢?有,很好。沒有?那就麻煩你先裝一下 Git for Windows 或是 OpenSSL 囉。

我們這次產生的自簽憑證,要同時能接受 https://localhost 與 https://127.0.0.1,這看來簡單,但一般並不會考慮得這麼完整。細節不談了,指令是

  • "C:\Program Files\Git\usr\bin\openssl.exe" req -x509 -nodes -days 365 -subj '/CN=localhost' -addext 'subjectAltName = IP:127.0.0.1' -keyout key.pem -out cert.pem

這樣就會在當前目錄下產生自簽憑證相關的兩個檔案 key.pem 以及 cert.pem,想了解內容嗎?可以用下面的指令(但非必要)

  • "C:\Program Files\Git\usr\bin\openssl.exe" x509 -in cert.pem -text

對於每個 Vault Client,要信任自簽憑證。在提升管理權限開啟的命令列下指令

  • certutil -addstore ROOT cert.pem

再來就是 Vault Server 起 Process 時,要包含自簽憑證。延續之前的簡易組態內容,如今應該是註解一行又小漲兩行

  • storage "File" {
  •     path = "C:\\Users\\david\\Documents\\vault\\file"
  • }
  • listener "TCP" {
  •     #tls_disable = true
  •     tls_cert_file = "C:/Users/david/Documents/vault/cert.pem"
  •     tls_key_file = "C:/Users/david/Documents/vault/key.pem"
  • }

這裡我在路徑分隔符號的寫法不一樣?故意的,這兩種在 Windows 都可以。以上的工作完成後,我們就可以在下 vault 指令前,不用先準備環境變數囉。

為什麼程式需要單元測試? - 視覺化篇
Autofac 如何協助 Dot NET Core MVC 應用程式達成DI - 概述圖解
 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/04/19, 週五

Captcha 圖像