Linux 叢集上的憑證和安全性
本文提供在 Linux 叢集上設定 X.509 憑證的相關資訊。
Linux 節點上 X.509 憑證的位置與格式
對於 Service Fabric,X.509 憑證通常會出現在 Linux 叢集節點上的 /var/lib/sfcerts 目錄中。 叢集憑證、用戶端憑證等憑證都是如此。在某些情況下,您可以為憑證指定 var/lib/sfcerts 資料夾以外的位置。 例如,針對使用 Service Fabric Java SDK 的 Reliable Services,您可以透過某些應用程式專用憑證的組態套件 (Settings.xml) 指定不同的位置。 若要深入了解,請參閱組態套件 (Settings.xml) 中參考的憑證。
針對 Linux 叢集,Service Fabric 的憑證通常會以包含憑證和私密金鑰的 .pem 檔案形式提供,或以包含憑證的 .crt 檔案和包含私密金鑰的 .key 檔案個別提供。 所有檔案均應為 PEM 格式。
如果您使用 Resource Manager 範本或 PowerShell 命令從 Azure Key Vault 安裝憑證,憑證將會以正確的格式安裝在每個節點的 /var/lib/sfcerts 目錄中。 如果您透過其他方法安裝憑證,您必須確定憑證正確地安裝在叢集節點上。
應用程式資訊清單中參考的憑證
應用程式資訊清單中指定的憑證 (例如,透過 SecretsCertificate 或 EndpointCertificate 元素指定) 必須存在於 /var/lib/sfcerts 目錄中。 用來在應用程式資訊清單中指定憑證的元素不會採用路徑屬性,因此憑證必須存在於預設目錄中。 這些元素會採用選用的 X509StoreName 屬性。 預設值為 "My",會指向 Linux 節點上的 /var/lib/sfcerts 目錄。 任何其他值都不會定義於 Linux 叢集上。 對於在 Linux 叢集上執行的應用程式,建議您省略 X509StoreName 屬性。
組態套件 (Settings.xml) 中參考的憑證
對於某些服務,您可以在 ConfigPackage (預設為 Settings.xml) 中設定 X.509 憑證。 例如,當您為使用 Service Fabric .NET Core 或 Java SDK 建置的 Reliable Services 服務宣告用來保護 RPC 通道的憑證時,則可以進行前述設定。 有兩種方式可參考組態套件中的憑證。 .NET Core 與 Java SDK 的支援有所不同。
使用 X509 SecurityCredentialsType
透過 .NET 或 Java SDK,您可以指定 SecurityCredentialsType 的 X509。 此類型對應於 SecurityCredentials
(.NET/Java) 的 X509Credentials
(.NET/Java) 類型。
X509 參考可將憑證定位於憑證存放區中。 下列 XML 顯示用來指定憑證位置的參數:
<Parameter Name="SecurityCredentialsType" Value="X509" />
<Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
<Parameter Name="CertificateStoreName" Value="My" />
對於在 Linux 上執行的服務,LocalMachine/My 會指向憑證的預設位置,即 /var/lib/sfcerts 目錄。 對於 Linux,CertificateStoreLocation 和 CertificateStoreName 的任何其他組合皆不會定義。
請一律將 CertificateStoreLocation 參數指定為 LocalMachine。 您不需要指定 CertificateStoreName 參數,因為該參數預設為 "My"。 使用 X509 參考時,憑證檔案必須位於叢集節點的 /var/lib/sfcerts 目錄中。
下列 XML 將根據此形式顯示 TransportSettings 區段:
<Section Name="HelloWorldStatefulTransportSettings">
<Parameter Name="MaxMessageSize" Value="10000000" />
<Parameter Name="SecurityCredentialsType" Value="X509" />
<Parameter Name="CertificateFindType" Value="FindByThumbprint" />
<Parameter Name="CertificateFindValue" Value="4FEF3950642138446CC364A396E1E881DB76B48C" />
<Parameter Name="CertificateRemoteThumbprints" Value="9FEF3950642138446CC364A396E1E881DB76B483" />
<Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
<Parameter Name="CertificateProtectionLevel" Value="EncryptAndSign" />
<Parameter Name="CertificateRemoteCommonNames" Value="ServiceFabric-Test-Cert" />
</Section>
使用 X509_2 SecurityCredentialsType
透過 Java SDK,您可以指定 SecurityCredentialsType 的 X509_2。 此類型對應於 SecurityCredentials
(Java) 的 X509Credentials2
(Java) 類型。
使用 X509_2 參考時,您會指定路徑參數,因此可將憑證定位於 /var/lib/sfcerts 以外的目錄中。 下列 XML 顯示用來指定憑證位置的參數:
<Parameter Name="SecurityCredentialsType" Value="X509_2" />
<Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />
下列 XML 將根據此形式顯示 TransportSettings 區段。
<!--Section name should always end with "TransportSettings".-->
<!--Here we are using a prefix "HelloWorldStateless".-->
<Section Name="HelloWorldStatelessTransportSettings">
<Parameter Name="MaxMessageSize" Value="10000000" />
<Parameter Name="SecurityCredentialsType" Value="X509_2" />
<Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />
<Parameter Name="CertificateProtectionLevel" Value="EncryptandSign" />
<Parameter Name="CertificateRemoteThumbprints" Value="BD1C71E248B8C6834C151174DECDBDC02DE1D954" />
</Section>
注意
在上述 XML 中,憑證會指定為 .crt 檔案。 這表示在相同位置中也有一個包含私密金鑰的 .key 檔案。
將 Reliable Services 應用程式設定為在 Linux 叢集上執行
Service Fabric SDK 可讓您與 Service Fabric 執行階段 API 通訊以使用平台。 當您在安全 Linux 叢集上執行任何使用此功能的應用程式時,都必須設定應用程式,使其具有可用來對 Service Fabric 執行階段進行驗證的憑證。 應用程式若包含使用 .NET Core 或 Java SDK 撰寫的 Service Fabric Reliable Service 服務,則必須進行此設定。
若要設定應用程式,請在 [憑證] 標記下新增 SecretsCertificate 元素;該標記位於 ApplicationManifest.xml 檔案中的 ApplicationManifest 標記下方。 下列 XML 顯示依憑證的指紋參考的憑證:
<Certificates>
<SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="0A00AA0AAAA0AAA00A000000A0AA00A0AAAA00" />
</Certificates>
您可以參考叢集憑證或您在每個叢集節點上安裝的憑證。 在 Linux 上,憑證檔案必須存在於 /var/lib/sfcerts 目錄中。 若要深入了解,請參閱 Linux 節點上 X.509 憑證的位置與格式。