Sun WebServer 安裝手冊 Solaris Easy Access Server 版

第 3章 SSL 配置

SSL 需求概觀

本區段說明站台使用「安全 Socket 階層(SSL)」時所需的主要元件,讓讀者概略瞭解需要有哪些東西,以及這些元件是如何搭配運作的。"SSL 配置程序" 列出了 SSL 的一些配置程序。

網站要使用 SSL 之前,必須先擁有公用鍵(public key)、私人鍵(private key)與 X.509 認證,以便傳給客戶機。認證含有站台的識別(其區別名稱)、發出者的識別、網站的公用鍵以及發出者的數位簽名。網站通常可向 VeriSign 之類的一般認證機構(CA)申請取得其簽名的認證,若客戶機也有同一個 CA 的公用鍵,便可相信該網站的識別已經過確認並證實可靠。


註解 -

本文件中的「授權等級」指的是鍵組--公用加密鍵與私人加密鍵-以及相關的認證。


Sun WebServer 含有執行 CA 的軟體,能為網站建立 SSL 授權等級。其他工具則可安裝 Sun WebServer 需要用到的網站授權等級,取得協力廠商認可的認證,以及安裝協力廠商的認證。

要執行 SSL 的站台必須做到以下幾件事:

Root 認證機構(Root CA)

您必須設立一個 Root CA,以便為您的網站建立授權等級。Root CA 使用者會為自己建立授權等級,並用此授權等級建立為您網路中的網站伺服器建立鍵組與認可認證。這些授權認證可儲存在「聯合命名服務」內,以方便其他機器存取,或者也可以只儲存在 Root CA 機器上的檔案內,對這些資料的存取加以設限。內定為儲存在 /var/fn 內。

Root CA 主機(就是建立授權等級的機器)不需要與 Sun WebServer 同一台電腦,而為了安全考量起見,最好將 Root CA 放在另一台機器上,甚至使用一台未連在網路上的機器亦可。


註解 -

以上步驟僅針對自己發出認證的狀況。若只使用協力廠商發出的認證,則不需要考慮以上步驟。


Root CA 使用者

除了 Root CA 主機上的 root (UID 0)以外,任何使用者名稱均可變成 Root CA 使用者。Root CA 使用者是有權替網站建立授權等級的唯一使用者。Root CA 使用者本身亦有自己的授權等級(以密碼保護著),以便在所有他建立的認證上加以簽名。

Root CA 授權等級鏈結於區別名稱(DN)。所有授權等級都會鏈結於某個 DN。Root CA 的區別名稱用到以下屬性:

 屬性類型 縮寫 範例
 一般名稱  cn cn=rootca
 電子郵件地址  em em=rootca@A.net
 序號  serial serial=no12345
 公司單位名稱  ou ou=web
 組織名稱 o o=A.net
 地點名稱  l l=internet
 州名或省名  st st=California
 國家名稱  c c=US

以上屬性在 DN 內是有一定順序的。DN 一開頭必須是較特定的屬性,以後漸漸列出較一般化的屬性,最後則是最通用的屬性。以上表格中各屬性的順序也是從較特定的屬性(一般名稱)逐一列到最通用的屬性(國家)。

所有授權等級都儲存在 Root CA 使用者擁有的一個目錄內,此目錄不可設定成任何人均可讀取。Root CA 使用者的授權等級(以及每個網站的授權等級)可透過「聯合命名服務」 FNS 取得。

Root CA Host

使用 SSL 或鍵組的所有電腦都需安裝安全工具套裝軟體,其中至少要有一台機器當作 Root CA 主機。此主機需具備以下條件:

Root CA 會為這台主機上的網站建立其授權等級並加以儲存。

Sun WebServer 不一定要在 Root CA 主機上執行。將網站的授權等級檔案從 Root CA 主機複製到執行 Sun WebServer 的機器上,便可讓 Sun WebServer 存取到網站的授權等級。

聯合式命名服務(FNS)

FNS 是 SSL 安全工具用來存取授權等級的介面。Sun WebServer 安全套裝軟體會建立一個名稱服務區,儲存及尋回檔案中的授權等級。

移除原有的 FNS 套裝軟體,換成 Sun WebServer 所附的 SUNWfns 套裝軟體。

安裝 Sun WebServer 之前便應該做好以上步驟。若未移除 SUNWfns 套件而且也還沒安裝 Sun WebServer 所附的套裝軟體,請立刻在要使用 SSL 的主機(包括 Root CA 主機)上進行。


註解 -

Solaris 2.6 所附的SUNWfns 套裝軟體無法與 SSL 搭配。移除此套裝軟體並不會導致任何資料遺失,且等到新的 SUNWfns 套裝軟體安裝好之後,原有的 FNS 區全部都不會有任何影響。雖然這兩個套裝軟體的版本都是 11.6.0,但新的套裝軟體用指令 pkginfo -l SUNWfns 列出的完整 VERSION 卻是 11.6.0,REV=1998.02.08.15.10


具備 SSL 功能的 Sun WebServer

要讓網站擁有 SSL 功能,必須執行含有全套 SSL 以及程式庫的 Sun WebServer,而且要使用 SSL 的每個 IP 位址的通訊埠上都必須啟動 SSL。

Root CA 建立授權等級之後,必須將授權等級安裝到網站所在的 Sun WebServer 機器上。

網站唯一的 IP

Root CA 使用者利用網站的主機名稱與 IP 位址替網站建立其授權等級。由於授權等級必須鏈結於唯一的主機名稱與 IP 位址,因此每個使用 SSL 的站台都必須有一個 SSL 通訊埠的唯一 IP 位址。

認證簽名

當客戶機連上網站具有 SSL 功能的通訊埠時,會要求取得該網站的授權等級。為了驗證授權等級是否正確,因此授權等級必須帶有 CA 的簽名,而且此 CA 必須是客戶機信任且擁有其公用鍵的 CA。

由於大部份客戶機都不會擁有您區域 Root CA 的公用鍵,因此您最好向 VeriSign 之類的著名 CA 申請有其簽名的站台授權等級。

SSL 配置程序

本小節列出配置 SSL 時應該遵循的最頂層程序,每個程序則各連結到更詳細的步驟說明。

若您不熟悉執行 SSL 所需的環境以及認證機構,請先參閱 "SSL 需求概觀 ",然後再進行以下程序:

  1. "Root CA 配置"

  2. "建立授權等級"

  3. "啟動網站上的 SSL "

  4. (選擇性的)"要求簽名認證 "

Root CA 配置

Root 認證機構(CA)必須替您網路上的網站建立鍵組與認證。若您不瞭解 Root CA 使用者以及 Root CA 機器這些觀念,請參閱 "SSL 需求概觀 "

請先配置 Root CA 機器,然後建立 Root CA 使用者,以便替網站建立授權等級。

配置 Root CA 機器
  1. 檢查機器上是否已經安裝產生授權等級所需的套裝軟體:

    SUNWhttp

    含有執行 Root CA 所需的工具與指令集。

    SUNWfns

    最新的聯合命名服務檔案。

    SUNWski

    SKI 程式庫。

    SUNWskica

    產生鍵組與認證的加密軟體。

    SUNWskicw

    Root CA 的授權軟體。

    SUNWskimc

    SKI 1.0 軟體(CA 手冊頁套裝軟體)

    SUNWskimu

    SKI 1.0 軟體(CA 手冊頁套裝軟體)

    SUNWssl

    SSL 1.0 軟體(全球版程式庫)

    SUNWskild

    SKI 1.0 套裝軟體(美國與加拿大版程式庫)

    SUNWssld

    SSL 1.0 軟體(美國與加拿大版程式庫)

    安裝 Sun WebServer 時,若選擇要安裝 SSL,則以上套裝軟體均會與 Sun WebServer 一併安裝到電腦上。

  2. Sun WebServer 的安裝處理會啟動產生安全鍵組與認證所需的行程。請檢查以下處理是否正在執行:

    • /usr/lib/security/skiserv

    • /usr/lib/security/cryptorand

  3. 選擇或建立要當作 Root CA 使用者的使用者。


    註解 -

    本文件一律將此使用者稱為 rootca,但您可選擇 /etc/passwd 中的任何 UNIX 使用者名稱。


  4. 建立 rootca 的目錄,以儲存授權等級。

    此目錄應設定成其他人無權讀取,例如:


    # mkdir /var/SSL_CERTS# chmod 700 /var/SSL_CERTS# chown rootca /var/SSL_CERTS
    
建立 Root CA
  1. 決定 Root CA 的區別名稱 (DN)。

    詳細說明請參閱 "Root CA 使用者"cn=rootca, o=A.net, st=California, c=US 便是一個 DN 的例子。

  2. 以 Root CA 使用者身份登入 Root CA 機器。

  3. 執行 create_rootca

    如果 /usr/bin 中沒有 create_rootca 這個指令,表示這台機器並未安裝 SUNWski 套裝軟體。

  4. 輸入 Root CA 的特定名稱(DN)。


    輸入「區別名稱」(如 "o=SUN, c=US")
    或按 q 跳出: cn=rootca, o=A.net, st=California, c=US
    
  5. 輸入儲存授權等級的目錄名稱。


    輸入儲存鍵組與認證
    的目錄路徑名稱,或按 q 跳出。
    
    目錄名稱? /var/SSL_CERTS
    

    此指令集會產生 Root CA 用的公用加密鍵與私人加密鍵。所有件組均以密碼保護,以防止未經授權的使用。

  6. 輸入 Root CA 鍵組密碼。


    keypkg: 輸入新的鍵組密碼: 
    keypkg: 再輸入一次新的鍵組密碼:
    
  7. 鍵組可以儲存在名稱服務內供其他機器取用,但必須先知道 root 的密碼才行。

    鍵組都是儲存在檔案內。若將鍵組放在名稱服務內,則其他安全工具不需要鍵組檔案的完整路徑名稱,只要透過名稱服務便可取得這些鍵。

    Root CA 現在已經配置好了,下個步驟則是產生出網站的鍵組與認證。

    請繼續進行以下配置程序,"建立授權等級"

  8. 如果您沒有選擇這個選項,請將授權等級存入 FNS,然後手動式儲存授權等級:


    # skistore -d 目錄名稱
    

    其中 目錄名稱 即為第五章中設定的目錄。

建立授權等級

Root CA 會替 Root CA 機器上的網站建立授權等級並加以儲存。此認證以後便可選擇性地由例如 VeriSign 的其他 CA 簽名。等授權認證建立之後,便會安裝在 Sun WebServer 機器上以便讓網站使用。


註解 -

本文件中所稱「授權等級」,指的是鍵組-公用加密鍵與私人加密鍵-以及其相關認證。


建立網站的授權等級
  1. 決定網站的區別名稱登錄,並以「完整且合格的領域名稱」(FQDN)作為其一般名稱(cn)。

    關於認證中區別名稱的詳細說明,請參閱 "Root CA 使用者"

  2. 以 Root CA 使用者身份登入 Root CA 機器。

  3. 建立一個目錄,以便儲存稍後要建立的授權等級資料。


    rootca % mkdir /var/SSL_CERTS/121.122.123.12/
    
  4. 執行 /usr/http/bin/setup_creds 指令,並加上適當的選項。

    可用選項如下:

    -d output_directory

    設定儲存授權等級資料的目錄,如: /var/SSL_CERTS/121.122.123.12/

    -f 信任檔案

    (非必要;設置時可用此檔案將其他信任 CA 的認證加入)設定含有 Root CA 認證之檔案的完整路徑,如: /export/skirca2/certs/skirca2.CERT

    -i IP位址

    設定要建立授權等級之網站的 IP 位址。

    -r rootca

    (選擇性的)設定 Root CA 使用者的名稱(即用來執行指令集的使用者名稱)。若未指定 -r 參數,則 setup_creds 指令會詢問您此系統上 Root CA 使用者的名稱。


    # /usr/http/bin/setup_creds -r rootca \
    -d /var/SSL_CERTS/121.122.123.12/ -i 121.122.123.12
    
  5. 輸入主機名稱且只當作網站名稱。接下來電腦會要求您輸入領域名稱。

    例如網站名稱為 www.V.com,則請輸入 www


    輸入執行 httpd 伺服器的主機名稱:
    (按 RETURN 鍵以使用本端主機)www
    
  6. 輸入網站的領域名稱。


    輸入伺服器的領域名稱(如 eng.sun.com)V.com
    
  7. 輸入網站的 DN 屬性,但不含一般名稱(cn)。


    輸入伺服器的「區別名稱字尾」(如 o=SUN, c=US):o="Company V", st=California, c=US
    
  8. 輸入此網站授權等級的新密碼。

    每個鍵組都有一個密碼,且不應與 Root CA 授權等級的密碼相同。


    請輸入加密伺服器私人鍵的密碼。
    安裝認證時會用到此密碼。
    請輸入密碼:
    再輸入一次密碼:
             使用配置檔案 '/tmp/try/host_config
    
    skilogin: 輸入您自己的鍵組密碼:
    
  9. 站台的鍵組與認證便會產生出來,並儲存在您指定的輸出目錄內。

    認證的位置為 output_directory/certs/IP_Address.cert,此範例中則是 /var/SSL_CERTS/121.122.123.12/certs/121.122.123.12.cert

    要將此認證安裝在另一台機器上時,會需要用到此認證。

  10. 重複步驟 1 到步驟 9,產生其他網站的授權等級。

現在您已經擁有一個「自己簽名」的認證了。如果與您網站連線的瀏覽程式將您的 Root CA 加入其信任 CA 列表內,便可使用此認證作 SSL 加密。這種作法可在公司內使用,因為可以要求公司內要使用 SSL 的所有瀏覽程式更新設定(例如若用 SSL 保護「Sun WebServer 管理控制台」)。但大部份的客戶機卻都是在 Internet 上,因此他們並不知道您設立的 Root CA,因此公用 SSL 站台的認證最好有協力廠商簽名比較恰當。在 Sun WebServer 機器上安裝好授權等級之後,請參考 "要求簽名認證 " 繼續進行。

請依照 "啟動網站上的 SSL " 中的程序繼續進行。

啟動網站上的 SSL

啟動網站上的 SSL 需經過三道手續:檢查 SSL 套裝軟體是否已經安裝到電腦上、將授權認證安裝到執行 Sun WebServer 的機器上、在網站可用的通訊埠上設定 SSL 配置。

建立站台授權等級

將站台授權等級安裝到 Sun WebServer 機器上
  1. 儲存此站台授權等級的目錄必須複製到 Sun WebServer 機器上。

    若 Root CA 機器與 Sun WebServer 機器是同一台,請跳過此步驟。

    您可以將此目錄移到磁片或其他可攜式儲存設備上,或者也可以透過 NFS 將此目錄開放給 Sun WebServer 機器共用。

    無論使用以上哪一種方法,請將當初設定為 setup_creds 輸出目錄與子目錄複製出來。此目錄中應含有:

    • certs/IP 位址.CERT

    • keypkgs/IP 位址.KEYPKG

    其中 IP位址 即為此網站的位址。

  2. 在 Sun WebServer 機器上以 root 身份執行 /usr/http/bin/install_certs 指令。

    請輸入授權等級的路徑、網站 IP 位址以及 Sun WebServer 執行時的使用者 ID (uid) 身份,如


    # /usr/http/bin/install_certs -p /floppy/cert_floppy -i \
    121.122.123.12 0
    
  3. 輸入此網站的鍵組密碼。

    此即 "建立授權等級" 中,步驟 8 所設定的密碼。


    /usr/bin/skilogin: 請輸入主機鍵組密碼
    

    這些授權等級便會儲存到 Sun WebServer 機器上,接下來請依照下一個程序將網站配置成使用 SSL。

配置網站以使用 SSL

在網站要使用 SSL 的 IP 位址上必須建立一個通訊埠。SSL 連線內定使用的通訊埠為 443。

以下步驟假設您使用的是「Sun WebServer 管理控制台」,但您也可以透過編輯網站伺服器配置檔案(如 /etc/http/sws_server.httpd.conf)的方法設定通訊埠。如果您要編輯配置檔案,請參閱 httpd.conf(4) 的線上援助頁。

配置網站以使用 SSL
  1. 連接到「Sun WebServer 管理控制台」並登入。

    關於連接到「Sun WebServer 管理控制台」並登入。有關連接的資訊,請參閱 第 2章, 配置管理伺服器

  2. 在「伺服器列表」中找出此網站所在的伺服器實例。如果配置頁並未列出,請按一下 + 將該資料夾展開。

  3. 若您不知道網站的 IP 位址,請選擇「網站」頁。

    網站使用的 IP 位址便會顯示在此列表內。


    註解 -

    此 IP 位址不可讓多個網站共用,因為 SSL 認證鏈結於唯一的 IP 位址與主機名稱。


  4. 按一下「IP / 通訊埠」頁,以便將通訊埠加入網站的 IP 位址。

    此時網路連線列表會顯示在右邊,列出此伺服器使用的所有 IP 位址與通訊埠。

  5. 按一下「新增」,用此網站的 IP 位址與通訊埠 443 建立「網路連線」。

    螢幕上出現「網路連線對話框」。

  6. 在「IP 位址」與「通訊埠」欄位中,輸入網站的 IP 位址以及 SSL 使用的通訊埠(一般均為 443)。設定「逾時值」以及是否允許使用 HTTP 1.0 Keepalive 功能。

    若您不知道如何設定「逾時值」以及「允許使用 HTTP 1.0 Keepalive」,請按一下對話框中的「說明」。為了效能考量起見,建議您將「逾時值」設定為 300 秒,並允許使用 HTTP 1.0 Keepalive 功能。

  7. 按一下「啟動 SSL」方框。

  8. 若要限制只接受具有有效個人認證之客戶機的連線,請按一下「需有客戶機認證」方框。

    關於此欄位的詳細解釋,請按一下對話框內的「說明」。

  9. 設定要啟動的密碼加密方式。

    伺服器會與客戶機協調出一個雙方認可共用的密碼加密方式。若客戶機與伺服器共同的密碼加密方式不只一種,則採用限制最嚴格的方式。

    若您使用的是美國/加拿大地區的加密軟體,則可使用 128 位元、 40 位元或兩者並用。除非確定要求客戶機使用其中某一種,否則建議您兩者並用。

    若您使用的是全球版加密軟體,則只能使用 40 位元加密方式,所以請按一下 40 位元方框。

  10. 按一下「確定」儲存您做的變更,然後選擇「伺服器」->「儲存 IP / 通訊埠」。

  11. 若您設定的是伺服器內定站台的 SSL,請跳過剩下的步驟。

    伺服器內定站台會在該伺服器設定的所有連線端點等待客戶機連線,因此不需要將新的 SSL 連線加入該網站內。

  12. 在「伺服器列表」上,選擇「網站」頁,然後從列表中選出此網站。選擇「伺服器」->「編輯網站」。

    在「編輯網站」對話框內,選擇「連線列表」內的「SSL 網路連線」。所有連線均以 IP位址:通訊埠 的方式列出。

  13. 按一下 > 移動「站台連線」列表內的連線。


    註解 -

    內定站台的這個選項內定是關閉不用的,因為內定站台會自動在該伺服器設定之所有連線端點等待連線。若您設定的是伺服器內定站台,請跳過步驟 12 到步驟 15。


  14. 按一下儲存,確認對此網站修改的資料。

  15. 選擇「伺服器」->「儲存」以儲存您做的變更。

    繼續進行下一個配置程序。 "要求簽名認證 "

要求簽名認證

讓獨立 CA 在網站的認證上簽名,就像讓一個獨立的稽查員為此站台的識別背書一樣。客戶機對於一個安全網站宣稱的識別不一定會相信,除非其授權等級擁有該客戶機信任之 CA 的數位簽名才行。

Sun WebServer 目前僅支援 VeriSign 此家 CA 機構。您可以用 Sun WebServer 所附的工具將認證以及認證簽名申請(CSR)透過 VeriSign 的網站傳送給 VeriSign。

申請有簽名的網站認證
  1. 您的區域 Root CA 必須先產生授權等級,並將其儲存在 Sun WebServer 機器上。

    請參閱 "建立授權等級""啟動網站上的 SSL "

  2. 以高階使用者 root 身份登入 Sun WebServer 電腦。

  3. 執行 send_request 公用程式,產生可以傳送給 CA 的認證。

    在指令行中必須指定需要簽名的站台的 IP 位址。此簽名會儲存在 /tmp 的一個檔案內,除非您用 -o 參數設定使用其他目錄(此目錄必須已經存在)。


    # mkdir /var/SSL_CERTS/requests
    # /usr/http/bin/send_request -o /var/SSL_CERTS/requests \
    121.122.123.12
    
  4. 輸入此網站的鍵組密碼。

    此處提到的密碼可不是 Root CA 的鍵組密碼,而是當初您執行 setup_creds 指令時所建立的密碼。

  5. 認證簽名申請要求會儲存在您設定的目錄或 /tmp 中的 cert.request 檔案內。

    檔案內容便可透過 VeriSign 的網站傳給 VeriSign。

  6. 申請加上簽名的認證時,需依照您申請之 CA 規定的程序進行。在某個時候,您還必須將產生出來的認證檔案傳送給 CA。

    要獲得 VeriSign 的認證,請到網址 http://www.verisign.com/idcenter/new/。您必須申請一個伺服器認證給 Sun Microsystems 的伺服器軟體使用。

  7. 當 CA 發給您有簽名的認證時,請將其存成檔案。

    例如將 CA 回復的認證(已具有簽名)存在 /tmp/121.122.123.12.cert


    小心 - 小心 -

    請勿將 CA 傳回的認證儲存在 Root CA 用來存放授權等級的目錄內。


  8. 以 root 身份執行 /usr/http/bin/install_external 指令,讓 SSL 能夠使用這個已經簽名的認證。

啟動客戶機認證功能

SSL 可以用來辨證具備數位 ID 的客戶機連線。目前 Sun WebServer 可支援 VeriSign 發出的個人數位 ID。VeriSign 依照鍵與保護程度的強度高低,共提供三種等級的個人數位 ID:

您可以將 SSL 網站配置成必須對客戶機認證,並且設定接受哪些等級的個人 ID。

設定 SSL 對客戶機認證
  1. 登入「Sun WebServer 管理控制台」,跳到此具有 SSL 功能之網站所在伺服器的「IP / 通訊埠」列表。

  2. 選擇此網站使用的 SSL 連線,按一下「編輯」。

    隨即出現「編輯網路連線」對話框。

  3. 按一下此對話框內的 "Require Client Certificate" 方框,接著按一下「確定」。

  4. 選擇「所選項目」->「儲存 IP / 通訊埠」,以儲存配置。

  5. 回到指令行,換成高階使用者。

  6. 此指令的語法如下:

    setup_client_auth -e | -d -i IP位址 簽名者

    旗號 -e 與旗號 -d 分別啟動與關閉擁有 簽名者 簽名之認證的客戶機存取權。IP 位址指的是擁有 SSL 功能的網站的 IP 位址。

    簽名者可為 VeriSign 任何一種等級:等級一、等級二或等級三。

    執行 setup_client_auth 指令數次,啟動或關閉數個簽名者。被啟動的 CA 會加入網站的信任鍵列表內。