Certificate

SAS 資訊安全 (14)

教學目標

初步了解如何透過 IIS 伺服器產生伺服器憑證檔 (.pfx) 在安裝與設定 SAS 平台時使用安全通訊的 HTTP 通訊協定。

重點概念

首先許多企業皆以 IIS 伺服器產生伺服器憑證檔 (.pfx),此時我們若要在安裝與設定 SAS 平台時設定 SAS Web Server 的通訊協定為使用安全通訊的 HTTP 通訊協定,則必須先將伺服器憑證檔 (.pfx) 透過下述指令轉成私密金鑰檔 (.key) 和伺服器憑證檔 (.pem)。

1
2
3
# openssl pkcs12  -in  iis_ssl.pfx -nodes -out server.pem
# openssl rsa -in server.pem -out server.key
# openssl x509 -in server.pem -out server.crt

接著建議先將根憑證檔、中繼憑證檔和伺服器憑證檔,依照由上至下的順序匯入至 SAS 的 Java 金鑰儲存區中,此時我們可能只會有伺服器憑證檔,則要如何透過伺服器憑證檔取得根憑證檔和中繼憑證檔呢?其實僅需先安裝伺服器憑證檔之後,再透過憑證匯出精靈的功能匯出「Base-64 編碼的 X.509 (.CER)」格式的檔案。

再來透過「SAS Deployment Manager 工具」依照由上至下的順序匯入至 SAS 的 Java 金鑰儲存區中,主要是選取「管理受信任燜證授權套件組合」中的「將憑證增加到受信任憑證授權套件組合」的工作進行憑證檔的匯入,請注意若是我們沒有按照根憑證檔->中繼憑證檔->伺服器憑證檔順序進行匯入就會發生「驗證憑證路徑失敗」的錯誤訊息。

最後當我們匯入憑證檔至 SAS 的 Java 金鑰儲存區中時,就能夠在「SAS 部署精靈」中指定憑證和私密金鑰的路徑,分別為「指定指向此電腦的 X.509 憑證路徑和一名稱」指定伺服器憑證檔的路徑,以及「指定指向 RSA 私密金鑰不受複雜密碼保護的路徑」指定私密金鑰的路徑。

相關資源

SAS 資訊安全 (12)

教學目標

初步了解如何透過設定在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。

重點概念

首先 SAS Viya 平台主要使用的 Apache HTTP 伺服器當成反向代理伺服器,並且在部署時 Ansible 的 Playbook 將會自動安裝 Apache httpd 服務和 mod_ssl 模組,同時會使用預設 Apache 的安全設定,以及建立自簽憑證。然而在客戶端通常會需要透過客製憑證取代自簽憑證,以及強化預設加密強度,當我們進行任何變更之後,請務必重新啟動 httpd 服務和 SAS Viya 服務。

重新啟動 Apache 的 httpd 服務

1
# sudo service httpd restart

重新啟動 SAS Viya 的所有服務

1
2
3
# cd /etc/init.d
# sudo ./sas-viya-all-services stop
# sudo ./sas-viya-all-services start

接著 SAS Viya 平台進行完整部署時預設能夠透過 HTTPS 安全協定存取 SASHome 網站服務,其網址為「https://reverse-proxy-server/SASHome/」。但若是僅程式部署則 SAS Viya 使用者必須使用 HTTP 連接 SAS Studio 或 CAS Server Monitor,因為 Apache HTTP 伺服器預設沒有支援 HTTPS,以及沒有 SASHome 能夠進行存取。此外當我們透過瀏覽器以 HTTPS 安全協定存取 SASHome 網站服務時,瀏覽器將會顯示不安全,主要是因為憑證是由 SAS Viya 平台中的 Vault 服務產生的自簽憑證,還未加入至「受信任的根憑證授權單位」的憑證存放區中,因此顯示不安全。這時我們只要將自簽憑證安裝至「受信任的根憑證授權單位」的憑證存放區中重新啟動瀏覽器就能夠顯示安全存取。

再來在 Apache 伺服器中使用 TLS 加密協定主要是採用 OpenSSL 中的 mod_ssl 模組,因此 SAS Viya 建議使用 /etc/httpd/conf.d/sas-ssl.conf 檔案設定密碼的強度,並且在 /etc/httpd/conf.d/ssl.conf 檔案中的載入 sas-ssl.conf 設定檔。

編輯 sas-ssl.conf

1
2
3
4
5
6
7
8
9
10
11
12
Header set Strict-Transport-Security "max-age=31536000"
SSLProtocol TLSv1.2
SSLHonorCipherOrder On
# The line containing variable SSLCipherSuite and values
must not include line breaks
SSLCipherSuite
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:
ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:
AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:
AES128-SHA256

編輯 ssl.conf

1
2
3
4
5
<VirtualHost_default:443>

Include /etc/httpd/conf.d/sas-ssl.conf

</VirtualHost>

最後在企業中部署 SAS Viya 平台時建議使用符合企業安全政策所簽發的憑證取代 Apache httpd 服務中的憑證。首先必須將憑證檔案和信任鏈檔放置「/etc/pki/tls/certs」目錄中,並且更改權限為 644,以及將私密金鑰放置「/etc/pki/tls/private」目錄中,並且更改權限為 600,同時在 /etc/httpd/conf.d/ssl.conf 檔案中編輯相關檔案的路徑設定,以及重新啟動 SAS Viya 的 httpproxy 服務和 Apache 的 httpd 服務。

編輯 ssl.conf

1
2
3
4
5

SSLCertificateFile /etc/pki/tls/certs/custom.crt
SSLCertificateKeyFile /etc/pki/tls/private/custom.key
SSLCertificateChainFile /etc/pki/tls/certs/custom-chain.crt

重新啟動 SAS Viya 的 httpproxy 服務

1
2
# cd /etc/init.d
# sudo ./sas-viya-httpproxy-default start

重新啟動 Apache 的 httpd 服務

1
# sudo service httpd restart

此外我們還必須修改 vars.yml 檔案中的 HTTPD_CERT_PATH 的路徑指向為 CA 根憑證或中繼憑證,並且透過 Ansible 工具將憑證部署至 CA 憑證目錄中和重新建立信任區域至每台機器中,最後重新啟動 SAS Viya 所有服務,就能夠在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。

編輯 vars.yml

1
HTTPD_CERT_PATH: '/install/sas/sas_viya_playbook/certs/custom_chain.crt'

執行 Ansible 指令

1
# ansible-playbook -i inventory.ini utility/distribute-httpd-certs.yml

重新啟動 SAS Viya 的所有服務

1
2
3
# cd /etc/init.d
# sudo ./sas-viya-all-services stop
# sudo ./sas-viya-all-services start

總結我們能夠透過設定在 SAS Viya 平台中採用符合企業安全政策所簽發的憑證。此外若是僅更換 httpd 服務的憑證,則雖然可以開啟 SAS Logon 的登入網站,但是登入之後將會發生 500 錯誤訊息,所以必須透過 Ansible 工具將憑證部署至 CA 憑證目錄中和重新建立信任區域至每台機器中完成,以利正常透過 HTTPS 安全協定存取 SAS Viya 平台。

相關資源

資安管理 SSL/TLS (3)

教學目標

初步了解企業中針對 Windows 伺服器整合 F5 負載平衡的網路設備進行安全連線時可能會遇到的問題。

重點概念

首先企業中若有 F5 負載平衡的網路設備,則通常會將憑證設定至 F5 負載平衡的網路設備中,像是 BIG-IP 系統。同時企業中的客戶端將會自動匯入 F5 上受信任的根憑證,此時當我們開啟 Internet Explorer 瀏覽器時就會顯示安全鎖頭至瀏覽列右方中,代表伺服器的這個連線經過加密。但是企業中的伺服器通常不會匯入 F5 上受信任的根憑證,此時我們只需將 F5 上受信任的根憑證、中繼憑證和網站憑證匯出之後,直接開啟憑證檔,然後點選「一般」頁籤中的「安裝憑證」鈕按照順序安裝至伺服器中即可,建議點選存放位置為「本機電腦」,以及其中受信任的根憑證則在透過憑證匯入精靈進行憑證匯入時,針對憑證存放區則建議將憑證放入「受信任的根憑證授權單位」中,至於其它憑證則自動根據憑證類型來選取憑證存放區,當憑證正確匯入伺服器之後,此時當我們開啟 Internet Explorer 瀏覽器時就會顯示安全鎖頭至瀏覽列右方中,代表伺服器的這個連線經過加密。

接著企業通常會有從 F5 負載平衡的網路設備匯出憑證的標準流程,此時可能會發生匯出憑證格式不正確,造成無法正常將憑證匯入網站系統解決方案中。憑證主要有 Base64 編碼和二進位編碼兩種格式,當我們透過記事本開啟憑證檔時,若憑證檔內容為「——-BEGIN CERTIFICATE——- … ——-END CERTIFICATE——-」,則代表憑證檔為 Base64 編碼格式,反之為二進位編碼格式。然而若發生匯出憑證格式不正確時,則只需要直接開啟憑證檔,然後點選「詳細資料」頁籤中的「複製到檔案」鈕就能夠直接轉換 Base64 編碼或二進位編碼格式,以利解決無法正常將憑證匯入網站系統解決方案中。

再來企業中所簽發的網站憑證通常會有憑證路徑,我們僅需要直接開啟憑證檔,然後點選「憑證路徑」頁籤就能夠了解網站憑證所對應的憑證路徑,以及確認憑證狀態是否沒有問題。此外我們還能夠點選憑證路徑中的根憑證和中繼憑證之後點選「檢視憑證」鈕確認憑證資訊,其中包括發給、簽發者、有效期、… 等詳細資訊。

最後企業中若有 F5 負載平衡的網路設備,則在導入網站系統解決方案需要設定 HTTPS 安全連線時,建議以 F5 負載平衡的網路設備當成反向伺服器,直接將網站系統 HTTP 連線對應至 F5 負載平衡的網路設備的 HTTPS 安全連線,就能夠將網站系統解決方案設定為 HTTPS 安全連線,請注意並非所有網站系統解決方案皆能在設定完成 F5 負載平衡的網路設備之後,正常使用網站系統,通常還會需要進行網站系統相關設定,但是至少能夠正常透過 Internet Explorer 瀏覽器輸入 F5 負載平衡的網路設備的對應網址顯示網站系統的首頁畫面,同時在網址列右方顯示安全鎖頭,並且在點選安全鎖頭之後點選「檢視憑證」鈕之後,點選「憑證路徑」頁籤確認憑證狀態是否沒有問題。此方式將會有三大優點,分別為:

  1. 網站憑證發佈至客戶端,則直接以企業標準流程為主,確保客戶端瀏覽器開啟網站系統時顯示安全連線。
  2. 網站系統若需要增加網站伺服器時,則無需重新簽發網站憑證,以利憑證的集中進行管理。
  3. 網站系統無需進行 HTTPS 握手的安全協定,以利維持效能的同時又能夠讓使用者安心使用網站系統。

總結企業中針對 Windows 伺服器整合 F5 負載平衡的網路設備進行安全連線時可能會遇到許多問題,包括伺服器中瀏覽器無法正常顯示正確憑證資訊、憑證匯出檔案格式不確認、憑證路徑無法正常顯示、… 等憑證問題,此時我們僅需透過 Windows 伺服器內建的功能就能夠解決上述的問題。此外若是瀏覽器顯示未受信任的憑證或憑證錯誤的訊息時,則不會影響網站系統的運作,但是若網站系統解決方案中有需要客戶端應用程式或網站應用程式進行安全連線時,就需要將憑證匯入至伺服器中,請注意不同網站系統解決方案匯入憑證的方式皆不相同,並且可能需要按照順序匯入根憑證、中繼憑證和網站憑證,以利網路系統的所有功能正常運作。

相關資源

SAS 資訊安全 (8)

基本介紹

教學目標

初步了解如何解決驗證憑證路徑失敗「Path does not chain with any of the trust anchors」的問題。

重點概念

首先當我們針對 SAS 9.4 平台設定安全連線時,一定會需要透過 SAS Deployment Manager 工具匯入憑證,此時可能會遭遇驗證憑證路徑失敗「Path does not chain with any of the trust anchors」的問題。面對此問題我們要如何開始解決呢?第一步我們需要先了解何謂憑證,憑證主要是應用於驗證伺服器,憑證主要是由憑證頒發機構 (Certificate Authority,CA) 所頒發和管理應用於訊息加密的安全憑據和公鑰權限,同時基於公開金鑰基礎架構 (Public Key Infrastructure,PKI) 憑證頒發機構會與註冊機構核對和驗證提供請求者請求資訊的數位憑證,若是註冊機構驗證請求者的資訊成功時,則憑證頒發機構就會發出憑證。

接著憑證頒發機構主要是第三方機構主要應用於驗證網路上電腦的資訊或身份,並且頒發數位憑證進行驗證確保雙方交換資訊的真實性,基本上憑證可以包括所有者的公鑰、名稱、有效日期和其它資訊,同時根據不同憑證頒發機構,可將憑證類型主要有三種,分別為:

  1. 第三方簽署:第三方認證機構簽署。
  2. 網站簽署:企業中資訊部門簽署。
  3. 自行簽署:自行透過工具簽署。

此時我們可以推測驗證憑證路徑失敗可能可憑證頒發機構發出的憑證有關,一般來說,憑證頒發機構會有所謂的根憑證。因此我們可以往找不到發行者憑證的方式去思考問題 的解決方案,同時在官方文件有提到當發生「Failed to Find the Following Issuer of this Certificate in Truststore 」錯誤訊息時,其主要是因為以錯誤的順序透過 SAS Deploment Manager 將憑證新增至信任列表中,簡單來說,我們會需要先新增憑證頒發者的憑證和根憑證,然後我們才是新增中間憑證,最後我們才能夠新增需要的憑證。

再來我們假設企業將會匯入企業的根憑證至伺服器和客戶端的電腦中,此時我們就能夠透過「控制台」->「網路和網際網路」->「網際網路選項」->「內容」->「憑證」->「受信任的根憑證授權單位」,點選必要的根憑證,按下「匯出」,按下「下一步」,選擇「DER 編碼二進位 X.509 (.CER)」,按下「下一步」,輸入「檔案名稱」的路徑,按下「下一步」,檢視設定的資訊,按下「完成」,當出現「匯出成功」的訊息時代表我們已經取得根憑證的檔案,同樣的方式也能夠匯出中繼憑證。但是 SAS Deployment Manager 工具僅能夠支援 Base 64 編碼 X.509 格式的憑證檔案,也就是所謂 PEM 格式,其附檔名分別有「crt」、「cer」和「pem」三種格式,所以我們會先透過下述指令將 DER 格式轉換為 PEM 格式。

1
OpenSSL> x509 -inform DER -outform PEM -in server.der -out server.pem

最後我們只要透過 SAS Deployment Manager 工具依照順序匯入根憑證、中繼憑證 (非必要) 和伺服器專屬憑證,此時就不會發生上述驗證憑證路徑失敗「Path does not chain with any of the trust anchors」的問題。

總結 SAS 平台提供非常完整的資訊安全管理的解決方式,但是設定相對較複雜,若是沒有資訊安全相關的基本概念很難順利完成相關設定,反之若是有資訊安全相關的基本概念,理應就能夠嘗試看看解決所面臨的問題,說不定就能夠解決該問題。

相關資源

SAS 資訊安全 (3)

基本介紹

教學目標

初步了解 SAS 解決方案中有關加密協定和數位憑證的設定。

重點概念

所謂 TLS/SSL 加密協定主要是的建立安全連線的協定,其中包括:

  1. 數位識別憑證:由可被信任的憑證頒發機構簽署數位識別憑證,以利驗證確保機密性
  2. 公開/私有金鑰加密:秘密交換對稱金鑰,像是 SSL Hankshake。
  3. 加密演算法:訊息透過對稱金鑰搭配加密演算法進行加密,以利確保通訊的安全。
  4. 訊息驗證碼:透過訊息驗證碼確保資訊的完整性。

因此我們 TLS/SSL 加密協定主要是被設計於提供網路資料隱私、資料完整性和身份驗證,其主要是使用 X.509 數位憑證和非對稱加密驗證伺服器判斷是應用程式伺服器或使用者,當訊息進行交換時就會有被攔截和被仿冒的風險,憑證頒發機構主要針對伺服器提供可被信任的公開金鑰,簡單來說,憑證頒發機構會產生包括公開金鑰且已被簽署的數位憑證。此外憑證頒發機構主要有三種類型,第一種是自行簽署的憑證 (Self-Signed Certificate),第二種是網站簽署的憑證 (Site-Signed Certificate) ,像是由 IT 部門所簽署的憑證,以及第三種是第三方簽署憑證 (Third-Party-Signed Certificate),像是 GoDaddy、Comodo、Symantec、…第三方公司所簽署的憑證等。

在 SAS 9.4 平台的架構需要針對不同元件進行 SSL 設定,分別為 SAS Web Server、SAS Web Application Server、SAS Deployment Agents 和 SAS Environment Manager ,然而每個元件皆會需要進行不同的設定,因此是件非常複雜的設定,本篇主要說明如何進行 SAS Web Server 和 SAS Web Application Server 的安全連線設定,簡單來說,就是 SAS Web Server 會有憑證和私有金鑰,而 SAS Web Application Server 會有 CA 憑證和公開金鑰,透過 HTTPS 安全連線進行資訊加密和身份識別,請注意此時 SAS Web Application Server 為 SSL 客戶端所以沒有私有金鑰,其中 CA 憑證基本上需要透過 Keytool 或 SAS Deployment Manager 自動匯入至 JKS Trust Store 中。

首先 SAS Web Server 主要是採用 Vmware 的 Pivotal Web Server (前身為 vFabric Web Server 5.2),基於 Apache 2.2 的開源網頁伺服器,主要會由部署精靈自動設定 Apache 中的 mod_proxy 模組,以利完成 SAS Web Application Server 之反向代理伺服器的設定, SAS Web Server 是由 OpenSSL 建立原生應用程式,所以不會使用 Java Keystore,其中會有憑證和私有金鑰,憑證主要是 X.509 格式其包含伺服器的公開金鑰,由 Base64 編碼 ASCII 的 PEM 格式檔案所儲存,私有金鑰主要是 RSA 格式,不被密碼所保護,由 Base64 編碼 ASCII 的 PEM 格式檔案所儲存 。但是若要針對 SAS Web Server 和 SAS Web Application Server 或 SAS Web Application Server Node 之間流量進行加密,則要進行後續手動的設定 Apache 中的 mod_ssl 模組,無法透過 SAS 部署精靈自動部署,同時 SAS 部署精靈僅不會針對自行簽署的憑證進行設定至 Trust Stores 中,SAS Web Application Server 主要是採用 Vmware 的 Pivotal tc Server,所以是採用 Java Keystore 儲存私有金鑰和伺服器憑證。部署精靈僅能設定 SAS Web Server 的單向 SSL,簡單來說就是伺服器端識別憑證以利驗證 SSL 客戶端,至於雙向 SSL ,簡單來說就是客戶端識別憑證以利進行單一登入驗證之應用,則僅能透過手動的方式進行設定。

接著當我們設定 SSL 時需要修改網頁伺服器的設定檔,其中 httpd.conf 為 Apache 主要設定檔,httpd_ssl.conf 為 SSL 安全連線設定檔,請先備份「\Web\WebServer\conf 」資料夾至新的資料夾,請保持資料夾結構一樣,以利之後還原直接複製貼上,其中主要設定檔有:

  • \Web\WebServer\conf\httpd.conf
  • \Web\WebServer\conf\extra\httpd_ssl.conf

再來我們會需要修改每個應用程式設定時將會針對不同網頁應用程式伺服器修改的設定檔,server.xml 為連接器的屬性,wrapper.conf 為 JKS TrustStore 位置主要進行 SAS Web Server 識別憑證的驗證,所以建議先備份 「\Web\WebAppServer\SASServerm_n\conf」 資料夾至新的資料夾,請保持資料夾結構一樣,以利之後還原直接複製貼上,其中主要設定檔有:

  • \Web\WebAppServer\SASServerm_n\conf\server.xml
  • \Web\WebAppServer\SASServerm_n\conf\wrapper.conf

最後我們會透過「SAS Management Console 工具」開啟「設定管理員」針對每個應用程式手動設定內部連線和外部連線,在此之前建議先進行中繼資料備份,以避免後續設定發生問題時快速還原,相關備份檔案會儲存至「 \Lev1\SASMeta\MetadataServer\Backups\ 」資料夾。

總結 TLS/SSL 加密協定搭配 X.509 憑證除了能夠針對網路傳輸的資料進行加密之外,更滿足網路資料隱私、資料完整性和身份驗證等需求。若已經確認要採用 HTTPS 安全連線,則建議在部署之前提供憑證,並且透過 SAS 部署精靈進行自動設定,自動設定主要會參考伺服器憑證和私有金鑰更新設定檔案,以及自動設定儲存至中繼資料中每個應用程式的內部連線和外部連線。

相關資源