Leo Yeh's Blog

SAS 系統管理 (58)

教學目標

初步了解如何解決 SAS Workflows Studio 客戶端工具登入時發生 SSL handshake 的錯誤訊息。

重點概念

首先 SAS 9.4 平台預設 Java 7,雖然 Java 7 支援 TLS v1.2,但是當進行 SSL handshake 時嘗試傳送 Hello 訊息,若是網站伺服器僅支援 TLS v1.2 則會被拒絕發生「javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure」的錯誤訊息,導致無法正常取得 SAS 環境設定檔進行登入操作。

接著若要解決此問題,我們將必須升級啟動 SAS Workflows Studio 客戶端工具為 Java 8,主要有三個步驟,分別為:

  1. 安裝 Java 8。
  2. 修改 sassw.config 設定檔。
  3. 透過 KeyTool 工具匯入相關憑證。

其中建議下載 JRE 而非 JDK,並且修改 SASHome 資料夾下的 sassw.config 設定檔,主要是修改 JREHOME 和 PRIVATEJREHOME 兩個參數為 Java 8 執行檔路徑,至於 SASENVIRONMENTSURL 則指定 HTTPS 的安全連線網址。

sassw.config

1
2
3
4
5
6
7
[properties]
JREHOME=D:\java8\jre\bin\java.exe
SASHOME=D:\SASHome
PRIVATEJREHOME=D:\java8\jre\bin\java.exe
DPLMTREGLOC=D:\SASHome\deploymntreg
SASENVIRONMENTSURL=https://www.company.com.tw/sas/sas-environment.xml
VJRHOME=D:\SASHome\SASVersionedJarRepository

再來透過 KeyTool 工具匯入客戶端相關憑證,請注意必須指定 keystore 檔案,以及匯入憑證路徑中的相關憑證。若沒有正確認匯入憑證,則會出現「javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed」的錯誤訊息。

1
2
3
4
> cd D:\java8\jre\bin
> keytool -import -alias server_cert -keystore D:\java8\jre\lib\security\cacerts -file d:\server_cert.cer
> keytool -import -alias ca_cert -keystore D:\java8\jre\lib\security\cacerts -file d:\ca_cert.cer
> keytool -list -v -keystore D:\java8\jre\lib\security\cacerts

最後我們僅需要重新開啟 SAS Workflows Studio 客戶端工具就能夠正常登入操作,若是還是有問題則請查看「studio.log」記錄檔。

相關資源

⬅️ Go back