Sun Java System Instant Messaging 7.2 管理指南

第 12 章 使用 TLS 與舊有 SSL 為 Instant Messaging 提供安全性

Instant Messaging 支援 TLS (傳輸層安全性) 與舊有 SSL (安全傳輸層) 以提供安全通訊。本章下列各節介紹如何使用這些通訊協定來設定 Instant Messaging 安全性:

在 Instant Messaging 中使用 TLS 與舊有 SSL 的摘要

Instant Messaging 為實現用戶端對伺服器與伺服器對伺服器的加密通訊,以及伺服器間的憑證式認證,會針對傳輸層安全性 (TLS) 1.0 通訊協定使用 startTLS 延伸。此外,Instant Messaging 可實作舊有的 SSL 協定 (3.0 版) 以支援 Instant Messenger 與多重訊號組合器間進行加密通訊 。後者會使用憑證來驗證用戶端所連線的伺服器身份,但不會使用憑證進行認證。

多重訊號組合器與伺服器間的傳輸通訊不安全。當您的用戶端對伺服器通訊使用 TLS 時,多重訊號組合器僅會將位元組從用戶端來回傳送至伺服器,但不執行任何加密或解密。

TLS 與 SSL 完全相容,且包含所有必要的 SSL 功能。TLS 與 SSL 的作用類似於 XMPP 與 HTTP 應用程式層下的通訊協定層。


注意 – 注意 –

如果您將多重訊號組合器設定為僅使用舊有 SSL,Instant Messenger 僅會使用 SSL 連線至多重訊號組合器,且會略過從伺服器傳回的關於 TLS 可用性的任何資訊。然而,如果您選擇讓多重訊號組合器使用 SSL,則應將所有 XMPP/HTTP 閘道實例配置為直接與伺服器通訊,而非透過多重訊號組合器通訊。閘道不支援舊有 SSL。允許透過舊有 SSL 連線至多重訊號組合器然後請求 TLS 連線的協力廠商用戶端這樣做。

此外,多重訊號組合器會透過不安全的傳輸連線至伺服器。如果您想確保點對點間通訊的安全性 (透過多重訊號組合器與伺服器通訊的用戶端),請使用 TLS 而非舊有 SSL。


您必須安裝有 Java 1.5 (最低) Instant Messaging 伺服器才能使用 TLS。

如需有關 XMPP 中 TLS 與 StartTLS 的資訊,請參閱 RFC 3920 中「TLS 用法」的Extensible Messaging and Presence Protocol: Core。如需憑證、SSL 與 TLS 的摘要,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Introduction to Certificates and SSL」。本節中的程序假設您正使用 Sun JavaTM System Application Server 來產生憑證。如果您正在使用其他的 Web 容器,您會需要參考該 Web 容器的文件,以取得產生金鑰庫與憑證的特定指引。

為 Instant Messaging 伺服器設定 TLS

要為 Instant Messaging 伺服器對伺服器與用戶端對伺服器通訊啟用 TLS,必須遵循下列步驟:

  1. 使用 keytool 公用程式建立 Java 金鑰庫 (JKS) 與私密金鑰。

    如需關於 keytool 公用程式的摘要,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Tools for Managing Security」。如需使用 Sun Java System Application Server 產生 JKS 的詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Working with Certificates and SSL」

  2. 使用私密金鑰來產生 Instant Messaging 伺服器的伺服器憑證。

    如需說明,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Generating a Certificate Using the keytool Utility」

  3. 取得認證機構 (CA) 簽署的 Instant Messaging 伺服器憑證。

    如需說明,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Signing a Digital Certificate Using the keytool Utility」。在適用處,使用 Instant Messaging 來取代 Application Server。

  4. 重新啟動 Instant Messaging 伺服器。

    如需詳細資訊,請參閱啟動 Instant Messaging 元件

  5. 取得 CA 的根憑證。

    請連絡您的 CA 以取得關於獲取 CA 根憑證的指引。

  6. 將憑證匯入金鑰庫。

    您可如「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Using the keytool Utility」中所述,使用 keytool 公用程式,將 CA 根憑證與簽署的伺服器憑證匯入至金鑰庫。

  7. 藉由設定 iim.conf 中的適當參數,在伺服器中啟動 TLS。

    如需說明,請參閱在 Instant Messaging 伺服器上啟動 TLS

  8. 如果要實現伺服器對伺服器的 TLS 通訊,您需要對每個需要 TLS 通訊的伺服器,重複這些步驟。您不需要執行任何動作來將 Instant Messenger 配置為使用 TLS。您也不需要為多重訊號組合器配置 TLS,然而如果您想使用 TLS 的話,不得將多重訊號組合器設定為使用舊有 SSL 。

  9. 如果您正在部署中使用 XMPP/HTTP 閘道,請將閘道配置為直接與 Instant Messaging 伺服器而非透過多重訊號組合器來通訊。

如果您正在使用 Sun Java System Application Server,則在「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的「Working with Certificates and SSL」中記錄了步驟 1 至5。在在 Instant Messaging 伺服器上啟動 TLS中描述了步驟 6。

在 Instant Messaging 伺服器上啟動 TLS

您必須先按照為 Instant Messaging 伺服器設定 TLS中所述建立 JKS、取得與安裝簽署的伺服器憑證,並信任 CA 的憑證,才能在伺服器上啟動 TLS。當您想實現伺服器對伺服器和/或用戶端對伺服器的 TLS 通訊時,可在伺服器上啟動 TLS。

表 12–1 列出在 Instant Messaging 伺服器中啟動 TLS 的 iim.conf 參數。其中也包含這些參數的說明與預設值。

表 12–1 Instant Messaging 伺服器 TLS 配置參數

參數 

預設值 

說明 

iim_server.sslkeystore

無 

包含伺服器 Java 金鑰庫 (JKS) 的相對路徑與檔案名稱。例如:


/im-cfg-base/server-keystore.jks

iim_server.keystorepasswordfile

sslpassword.conf

包含擁有金鑰庫密碼之檔案的相對路徑與名稱。此檔案應該包含下列指令行: 

Internal (Software) Token:password

其中 password 是保護金鑰資料庫的密碼。

iim_server.requiressl

false

如果為 true,則在設定初始串流階段作業後,伺服器會終止不請求 TLS 連線的任何連線。

iim_server.trust_all_cert

false

如果此值是 true,則伺服器會信任所有的憑證,包含過期與自我簽署的憑證,並且也會將憑證資訊新增至記錄檔案。如果是 false,則伺服器不會記錄憑證資訊,並且僅會信任 CA 所簽署的有效憑證。

Procedure在 Instant Messaging 伺服器中啟動 TLS 通訊

使用下列方式執行此程序,配置 Instant Messaging 伺服器以進行 TLS 安全通訊:

開始之前

請確定您已按照為 Instant Messaging 伺服器設定 TLS所述建立 JKS、已取得並安裝伺服器憑證,以及將伺服器配置為信任 CA 憑證。

對於伺服器對伺服器 TLS 通訊,您必須在每個想要配置使用 TLS 的伺服器上完成此程序。

  1. iim.conf 中增加下列參數值。

    如果在 iim.conf 中尚沒有參數,請增加它們。


    iim_server.sslkeystore=server-keystore.jks
    iim_server.keystorepasswordfile=sslpassword.conf
    

    現在伺服器會以可透過 TLS 通訊的資訊,來回應來自任何用戶端或其他 Instant Messaging 伺服器的連線請求。正在請求的用戶端或伺服器,會接著選擇是否要透過 TLS 建立安全的連線。

  2. 如果您想要伺服器要求用戶端的所有連線都是 TLS 連線,請將下列參數增加至 iim.conf


    iim_server.requiressl=true

    如果您將此參數設定為 true,則伺服器會終止與任何不支援 TLS 的用戶端、遠端或對等伺服器之間的連線。使用此參數要求用戶端與伺服器之間進行 TLS 安全通訊。

    如需關於伺服器對伺服器通訊的詳細資訊,請參閱第 8 章, 聯合部署多個 Instant Messaging 伺服器

  3. 如果您想要求特定遠端或對等伺服器進行 TLS 通訊,請將下列參數增加至 iim.conf


    iim_server.coserver1.requiressl=true

    為每個您想要求 TLS 通訊的協同伺服器設定此參數。

    如果您將 iim_server.requiressl 設定為 true,則伺服器會要求任何與其通訊的伺服器使用 TLS 連線。在此例中,您不需要為特定協同伺服器設定此參數。

  4. (可選擇) 如果您想要伺服器信任所有其所收到的憑證,並將憑證資訊新增至記錄檔案,請將下列參數新增至 iim.conf


    iim_server.trust_all_cert=true

    注意 – 注意 –

    您可能需要在實際操作部署前,先使用此功能來測試部署。然而,通常您不應在已部署的系統上這麼做,因為這會造成嚴重的安全風險。如果此值是 true,則伺服器會信任所有的憑證,包含過期與自我簽署的憑證,並且也會將憑證資訊增加至記錄檔案。如果是 false,則伺服器不會記錄憑證資訊,且僅會信任 CA 所簽署的有效憑證。


  5. 使用 imadmin 重新整理伺服器配置。


    imadmin refresh server
    
  6. 驗證 TLS 是否運作正常。

    您可以幾種方式來這麼做,例如遵循呼叫 Instant Messenger 的安全版本中的步驟來執行。


範例 12–1 iim.conf 中的 TLS 配置

以下是 iim.conf 檔案範例區段,其中包含為伺服器對伺服器、用戶端對伺服器通訊所需要的 TLS 配置。此範例中的參數值與您所部署的會不一樣。


! Server to server communication port.
iim_server.port = "5269"
! Should the server listen on the server to server
! communication port
iim_server.useport = "True”
iim_server.coservers=coserver1
iim_server.coserver1.serverid=Iamcompany22
iim_server.coserver1.password=secretforcompany22
iim_server.coserver1.host=iim.i-zed.com:5269
iim_server.serverid=Iami-zed
iim_server.password=secret4i-zed
iim_server.trust_all_cert=true
iim_server.sslkeystore=/var/im/server_keystore.jks
iim_server.keystorepasswordfile=/var/im/sslpassword.conf

為多重訊號組合器與 Instant Messenger 設定舊有 SSL

如果您正在使用的 Instant Messaging 客戶端不支援 TLS ,用戶端對多重訊號組合器之間的通訊則仍可使用 SSL,但不能使用 TLS。如果您將多重訊號組合器配置為使用 SSL,則無法讓用戶端對伺服器之間的連線使用TLS。所有多重訊號組合器與伺服器間的通訊都會是以明碼文字形式進行的不安全傳輸。

如果您在多重訊號組合器上設定舊有 SSL,並使用 XMPP/HTTP 閘道,則您必須將閘道配置為直接與伺服器而非透過多重訊號組合器進行通訊。閘道不支援舊有 SSL。

要啟用多重訊號組合器與 Instant Messenger 間的 SSL 通訊,需要遵循下列步驟:

  1. 為 Instant Messaging 多重訊號組合器向 CA 請求 SSL 憑證

  2. 安裝憑證

  3. 在多重訊號組合器與 Instant Messenger 間啟用舊有 SSL

  4. 在 Instant Messaging 伺服器上啟動 TLS

  5. 呼叫 Instant Messenger 的安全版本

為 Instant Messaging 多重訊號組合器向 CA 請求 SSL 憑證

在多重訊號組合器中啟用 SSL,您需要請求憑證。

Procedure為 Instant Messaging 多重訊號組合器請求憑證

此節假設您正在使用 Sun Java System Web Server 或 Sun Java System Application Server 做為您的 Web 容器來請求憑證。

多重訊號組合器會使用 NSS 來管理憑證,因此您可使用 NSS 公用程式來建立、管理與使用憑證及憑證資料庫。

  1. 在網頁瀏覽器中,鍵入下列 URL 來啟動 Web 容器的管理伺服器:


    http://hostname.domain-name:administration-port
    

    會顯示一個視窗,詢問您的使用者名稱與密碼。

  2. 輸入在安裝 Web Server 或 Application Server 期間指定的管理使用者名稱與密碼。

    [管理伺服器] 頁面隨即出現。

  3. 建立單獨的 Web Server 或 Application Server 實例。

    如需安裝多個 Application Server 實例的詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Installation Guide」。如需安裝多個 Web Server 實例的詳細資訊,請參閱「Sun Java Communications Suite 5 Installation Guide」

  4. 建立信任資料庫以儲存公開和私人金鑰,也稱之為金鑰對檔案。

    會使用金鑰對檔案進行 SSL 加密。

    如需建立信任資料庫的資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的第 9 章「Configuring Security」以取得關於 Application Server 的資訊,以及「Sun Java System Web Server 7.0 Administrator’s Guide」中的第 6 章「Certificates and Keys」以取得關於 Web Server 的資訊。

  5. 向 CA 請求憑證。

    如需請求憑證的詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Administration Guide」中的第 9 章「Configuring Security」以取得關於 Application Server 的資訊,以及「Sun Java System Web Server 7.0 Administrator’s Guide」中的第 6 章「Certificates and Keys」以取得關於 Web Server 的資訊。

安裝憑證

在您收到認證機構所簽署的伺服器憑證後,需要安裝憑證並建立資料庫以實現安全連線。

Procedure為 Instant Messaging 多重訊號處理器安裝憑證

  1. 在網頁瀏覽器中,鍵入下列 URL 來啟動管理伺服器:


    http://hostname.domain-name:administration-port
    

    會顯示一個視窗,詢問您的使用者名稱與密碼。

  2. 輸入在安裝 Web Server 或 Application Server 期間指定的管理使用者名稱與密碼。

    [管理伺服器] 頁面隨即出現。

  3. 安裝該伺服器憑證。

    如需安裝憑證的詳細資訊,請參閱http://docs.sun.com中的 Web Server 或 Application Server 的產品文件。

  4. 變更至您的 Web Server 或 Application Server 中的 /alias 目錄。

  5. 將資料庫檔案從 /alias 目錄複製至 Instant Messaging 伺服器的 im-cfg-base 目錄。

    例如,在 Solaris 上:


    cp https-serverid-hostname-cert8.db /etc/opt/SUNWiim/default/config/cert8.db
    

    cp https-serverid-hostname-key3.db /etc/opt/SUNWiim/default/config/key3.db
    

    cp secmod.db /etc/opt/SUNWiim/default/config/secmod.db
    

    而在 Linux 上:


    cp https-serverid-hostname-cert8.db /etc/opt/sun/im/default/config/cert8.db
    

    cp https-serverid-hostname-key3.db /etc/opt/sun/im/default/config/key3.db
    

    cp secmod.db /etc/opt/sun/im/default/config/secmod.db
    

    備註 –

    您需要允許多重訊號處理器所使用的系統使用者擁有「讀取」cert7.db key3.dbsecmod.db 檔案的權限。此外,如果您已建立多個 Instant Messaging 實例,則 /default 目錄名稱會視實例而不同。


    如需 im-cfg-base 的預設位置,請參閱表 3–1

  6. 變更至您在多重訊號處理器主機上的 im-cfg-base

    如需找到 im-cfg-base 的資訊,請參閱Instant Messaging 伺服器目錄結構

  7. 使用您所選的文字編輯程式來建立名為 sslpassword.conf 的檔案。

  8. 將下列內容輸入 sslpassword.conf


    Internal (Software) Token:password
    

    其中 password 是當您建立信任資料庫時所指定的密碼。

  9. 儲存並關閉 sslpassword.conf

  10. 請確定所有 Instant Messenger 一般使用者都有對 sslpassword.conf 的「所有權」與「讀取」權限。

  11. 重新啟動多重訊號組合器。

  12. 驗證 SSL 是否運作正常。

    您可以幾種方式來這麼做,例如遵循呼叫 Instant Messenger 的安全版本中的步驟來執行。

  13. 以管理員身份登入 Web Server 或 Application Server。

  14. 移除您請求憑證時所建立的伺服器實例。

在多重訊號組合器與 Instant Messenger 間啟用舊有 SSL

您可藉由修改 iim.conf 中的參數,接著使用 Instant Messenger 用戶端安全版本連線至多重訊號組合器,為用戶端對多重訊號組合器的通訊啟用 SSL。

表 12–2 列出在 iim.conf 中用於在 Instant Messenger 與多重訊號組合器間啟用 SSL 的參數。其中也列出這些參數的說明與預設值。

表 12–2 Instant Messaging 多重訊號組合器 SSL 參數

參數 

預設值 

說明 

iim_mux.usessl

off

如果數值設定為 on,則在交換任何應用程式資料前,多重訊號組合器需要在每個它接受的連線中進行 SSL 訊號交換。

iim_mux.secconfigdir

Solaris:/etc/opt/SUNWiim/default/config

Linux:/etc/opt/sun/im/default/config

此目錄包含金鑰和憑證資料庫。它通常包含安全模組資料庫。此外,如果您已建立多個 Instant Messaging 實例,則 /default 目錄名稱會視實例而不同。如需詳細資訊,請參閱從單次 Instant Messaging 安裝中建立多個實例

iim_mux.keydbprefix

(空字串) 

此值應該包含金鑰資料庫檔名前置。金鑰資料庫檔名必須以 key3.db 結尾。

如果金鑰資料庫包含前綴,例如 This-Database-key3.db,則此參數的值為 This-Database

iim_mux.certdbprefix

(空字串) 

此值應該包含憑證資料庫檔名前置。憑證資料庫檔名必須以 cert7.db 結尾。

如果憑證資料庫包含前綴,例如 Secret-stuff-cert7.db,則此參數值為 Secret-stuff

iim_mux.secmodfile

secmod.db

此值應該包含安全模組檔案的名稱。 

iim_mux.certnickname

Multiplexor-Cert

此值應該包含您在安裝憑證時,您所輸入的憑證名稱。 

此憑證名稱區分大小寫。 

iim_mux.keystorepasswordfile

sslpassword.conf

此值應該包含含有金鑰資料庫密碼的相關路徑和檔案名稱。此檔案應該包含下列指令行: 

Internal (Software) Token:password

其中 password 是保護金鑰資料庫的密碼。

Procedure在 Instant Messenger 與多重訊號組合器間啟用 SSL

  1. 開啟 iim.conf

    如需找到並修改 iim.conf 的說明,請參閱iim.conf 檔案語法

  2. 表 12–2 中的值增加至 iim.conf 中的多重訊號組合器配置參數。


範例 12–2 iim.conf 中的舊有 SSL 多重訊號組合器配置

下列是含有多重訊號組合器配置參數的 iim.conf 檔案範例:


! IIM multiplexor configuration
! =============================
!
! Multiplexor specific options

! IP address and listening port for the multiplexor.
! WARNING: If this value is changed, the port value of ’-server’
! argument in the client’s im.html and im.jnlp files should 
! also be changed to match this.
iim_mux.listenport = "siroe.com:5222"

! The IM server and port the multiplexor talks to.
iim_mux.serverport = "siroe.com:45222"

! Number of instances of the multiplexor.
iim_mux.numinstances = "1"

! Maximum number of threads per instance
iim_mux.maxthreads = "10"

! Maximum number of concurrent connections per multiplexor process
iim_mux.maxsessions = "1000"

                         
iim_mux.usessl = "on"
iim_mux.secconfigdir = "/etc/opt/SUNWiim/default/config"
iim_mux.keydbprefix = "This-Database"
iim_mux.certdbprefix = "Secret-stuff"
iim_mux.secmodfile = "secmod.db"
iim_mux.certnickname = "Multiplexor_Cert"
iim_mux.keystorepasswordfile = "sslpassword.conf"

呼叫 Instant Messenger 的安全版本

Instant Messenger 會自動支援 TLS。如果您已如在 Instant Messaging 伺服器上啟動 TLS所述,將伺服器配置為使用 TLS,則當 Instant Messenger 連線至伺服器時,伺服器會與支援 TLS 階段作業的用戶端通訊。接著 Instant Messenger 就可請求變更連線以使用 TLS。

您可藉由從網頁瀏覽器存取 imssl.htmlimssl.jnlp 來呼叫舊有 SSL 版本。這些檔案位於資源目錄下,也就是儲存所有 Instant Messenger 資源的基底目錄下。

可以將這些 applet 描述元檔案的連結新增到 index.html 檔。

一旦您已為多重訊號組合器配置舊有 SSL,或為伺服器配置 TLS,就可驗證 Instant Messenger 用戶端是否已建立安全的連線。

Procedure驗證安全的 Instant Messenger 連線

  1. 請登入至 Instant Messenger。

    如果您正在使用舊有 SSL,請從您的網頁瀏覽器存取 imssl.htmlimssl.jnlp。如果您正在使用 TLS,請正常存取用戶端。如需相關資訊,請參閱呼叫 Instant Messenger

    如果 TLS 可用,且如果未將多重訊號組合器設定為使用舊有 SSL 的話,Instant Messenger 會一直使用 TLS。

  2. 請確定在 Instant Messenger 主視窗中可看見鎖定圖示。

    當 Instant Messenger 正在使用安全的傳輸如 SSL 或 TLS 時,鎖定圖示會顯示於主視窗的右下角。