Sdílet prostřednictvím


Certifikáty a zabezpečení v clusterech s Linuxem

Tento článek obsahuje informace o konfiguraci certifikátů X.509 v clusterech s Linuxem.

Umístění a formát certifikátů X.509 na uzlech Linuxu

Service Fabric obecně očekává, že certifikáty X.509 budou v adresáři /var/lib/sfcerts v uzlech clusteru s Linuxem. To platí pro certifikáty clusteru, klientské certifikáty atd. V některých případech můžete pro certifikáty zadat jiné umístění než složka var/lib/sfcerts . Například s Reliable Services sestavenými pomocí sady Service Fabric Java SDK můžete pro některé certifikáty specifické pro aplikaci zadat jiné umístění prostřednictvím konfiguračního balíčku (Settings.xml). Další informace najdete v tématu Certifikáty odkazované v konfiguračním balíčku (Settings.xml).

V případě clusterů s Linuxem služba Service Fabric očekává, že certifikáty budou existovat buď jako soubor .pem, který obsahuje certifikát i privátní klíč, nebo jako soubor .crt, který certifikát obsahuje, a soubor .key obsahující privátní klíč. Všechny soubory by měly být ve formátu PEM.

Pokud certifikát nainstalujete ze služby Azure Key Vault pomocí šablony Resource Manageru nebo příkazů PowerShellu , certifikát se nainstaluje ve správném formátu v adresáři /var/lib/sfcerts na každém uzlu. Pokud certifikát nainstalujete jinou metodou, musíte se ujistit, že je certifikát správně nainstalovaný na uzlech clusteru.

Certifikáty odkazované v manifestu aplikace

Certifikáty zadané v manifestu aplikace, například prostřednictvím elementů SecretsCertificate nebo EndpointCertificate, musí být přítomné v adresáři /var/lib/sfcerts. Elementy, které se používají k určení certifikátů v manifestu aplikace, nepřebírají atribut cesty, takže certifikáty musí být přítomné ve výchozím adresáři. Tyto prvky přebírají volitelný atribut X509StoreName . Výchozí hodnota je My, která odkazuje na adresář /var/lib/sfcerts v uzlech Linuxu. Jakákoli jiná hodnota není definována v clusteru s Linuxem. Doporučujeme vynechat atribut X509StoreName pro aplikace, které běží v clusterech s Linuxem.

Certifikáty odkazované v konfiguračním balíčku (Settings.xml)

U některých služeb můžete nakonfigurovat certifikáty X.509 v balíčku ConfigPackage (ve výchozím nastavení Settings.xml). Jedná se například o případ, kdy deklarujete certifikáty používané k zabezpečení kanálů RPC pro služby Reliable Services vytvořené pomocí sad SDK Service Fabric .NET Core nebo Java. Existují dva způsoby, jak odkazovat na certifikáty v konfiguračním balíčku. Podpora se liší mezi sadami .NET Core a Java SDK.

Použití X509 SecurityCredentialsType

WIth .NET nebo Java SDK, můžete zadat X509 pro SecurityCredentialsType. X509Credentials Odpovídá typu SecurityCredentials (.NET/Java) (.NET/Java).

Odkaz X509 vyhledá certifikát v úložišti certifikátů. Následující kód XML ukazuje parametry použité k určení umístění certifikátu:

    <Parameter Name="SecurityCredentialsType" Value="X509" />
    <Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
    <Parameter Name="CertificateStoreName" Value="My" />

Pro službu spuštěnou v Linuxu odkazuje LocalMachine/My na výchozí umístění pro certifikáty, adresář /var/lib/sfcerts. U Linuxu nejsou definovány žádné další kombinace CertificateStoreLocation a CertificateStoreName .

Vždy zadejte LocalMachine pro parametr CertificateStoreLocation . Parametr CertificateStoreName není potřeba zadávat, protože výchozí hodnota je My. S odkazem na X509 musí být soubory certifikátů umístěné v adresáři /var/lib/sfcerts v uzlu clusteru.

Následující xml ukazuje oddíl TransportSettings na základě tohoto stylu:

<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>

Použití X509_2 SecurityCredentialsType

Pomocí sady Java SDK můžete zadat X509_2 pro SecurityCredentialsType. To odpovídá X509Credentials2 typu SecurityCredentials (Java) (Java).

Pomocí odkazu X509_2 zadáte parametr cesty, abyste mohli certifikát vyhledat v jiném adresáři než /var/lib/sfcerts. Následující kód XML ukazuje parametry použité k určení umístění certifikátu:

     <Parameter Name="SecurityCredentialsType" Value="X509_2" />
     <Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />

Následující xml ukazuje část TransportSettings na základě tohoto stylu.

<!--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>

Poznámka:

Certifikát se zadává jako soubor .crt v předchozím souboru XML. To znamená, že existuje také soubor .key obsahující privátní klíč ve stejném umístění.

Konfigurace aplikace Reliable Services pro spuštění v clusterech s Linuxem

Sady Service Fabric SDK umožňují komunikovat s rozhraními API modulu runtime Service Fabric a využívat platformu. Když spustíte libovolnou aplikaci, která tuto funkci používá v zabezpečených clusterech s Linuxem, musíte aplikaci nakonfigurovat pomocí certifikátu, který může použít k ověření pomocí modulu runtime Service Fabric. Aplikace, které obsahují služby Service Fabric Reliable Service napsané pomocí sad .NET Core nebo Java SDK, vyžadují tuto konfiguraci.

Pokud chcete nakonfigurovat aplikaci, přidejte do značky Certificates element SecretsCertificate, který se nachází pod značkou ApplicationManifest v souboru ApplicationManifest.xml. Následující kód XML ukazuje certifikát, na který odkazuje kryptografický otisk:

   <Certificates>
       <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="0A00AA0AAAA0AAA00A000000A0AA00A0AAAA00" />
   </Certificates>   

Můžete odkazovat na certifikát clusteru nebo certifikát, který nainstalujete na každý uzel clusteru. V Linuxu musí být soubory certifikátů v adresáři /var/lib/sfcerts . Další informace najdete v tématu Umístění a formát certifikátů X.509 v uzlech Linuxu.