bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
傳輸層安全性(簡稱 TLS)對於透過安全通道交換資料至關重要。對於生產環境,您絕不應透過 HTTP 公開 Keycloak 端點,因為敏感資料是 Keycloak 與其他應用程式交換的核心。在本指南中,您將學習如何設定 Keycloak 以使用 HTTPS/TLS。
可以設定 Keycloak 以使用 PEM 格式的檔案或 Java Keystore 載入所需的憑證基礎架構。當兩種替代方案都設定時,PEM 檔案的優先順序高於 Java Keystore。
當您使用一對匹配的憑證和 PEM 格式的私鑰檔案時,您可以使用以下命令設定 Keycloak 使用它們
bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
Keycloak 會從這些檔案在記憶體中建立一個金鑰儲存庫,並在之後使用這個金鑰儲存庫。
當沒有明確設定金鑰儲存庫檔案,但 http-enabled
設定為 false 時,Keycloak 會尋找 conf/server.keystore
檔案。
作為替代方案,您可以透過執行以下命令使用現有的金鑰儲存庫
bin/kc.[sh|bat] start --https-key-store-file=/path/to/existing-keystore-file
您可以使用 https-key-store-password
選項為您的金鑰儲存庫設定安全密碼
bin/kc.[sh|bat] start --https-key-store-password=<value>
如果未設定密碼,則會使用預設密碼 password
。
避免使用 CLI 或將密碼新增至 conf/keycloak.conf
檔案中以純文字設定密碼。而是使用良好的實務做法,例如使用金庫/掛載的密碼。有關更多詳細資訊,請參閱使用金庫和設定 Keycloak 用於生產環境。
預設情況下,Keycloak 不會啟用已棄用的 TLS 協定。如果您的用戶端僅支援已棄用的協定,請考慮升級用戶端。但是,作為臨時的解決方案,您可以透過執行以下命令啟用已棄用的協定
bin/kc.[sh|bat] start --https-protocols=<protocol>[,<protocol>]
若也要允許 TLSv1.2,請使用如下的命令:kc.sh start --https-protocols=TLSv1.3,TLSv1.2
。
Keycloak 在連接埠 8443
上監聽 HTTPS 流量。若要變更此連接埠,請使用以下命令
bin/kc.[sh|bat] start --https-port=<port>
預設情況下,Keycloak 會每小時重新載入在 https-*
選項中指定的憑證、金鑰和金鑰儲存庫。對於伺服器金鑰可能需要頻繁輪換的環境,這允許在不重新啟動伺服器的情況下發生。您可以使用 https-certificates-reload-period
選項覆寫預設值。重新載入 https-*
選項引用的金鑰儲存庫、信任儲存庫和憑證檔案的時間間隔。該值可以是 java.time.Duration 值、整數秒數或整數後跟一個時間單位 [ms
、h
、m
、s
、d
]。必須大於 30 秒。使用 -1
停用。
值 | |
---|---|
|
|
|
|
|
|
|
(預設) |
|
|
|
|
|
(預設) |
|
|
|
(預設) |
|
(預設) |
|
|
|
|
|
|
|
(預設) |