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 linuxových uzlech

Service Fabric obecně očekává, že certifikáty X.509 budou v adresáři /var/lib/sfcerts na 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žku var/lib/sfcerts . Například s Reliable Services sestavenými pomocí sady Service Fabric Java SDK můžete určit jiné umístění prostřednictvím konfiguračního balíčku (Settings.xml) pro některé certifikáty specifické pro aplikaci. Další informace najdete v tématu Certifikáty odkazované v konfiguračním balíčku (Settings.xml).

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

Pokud certifikát nainstalujete z Azure Key Vault pomocí šablony Resource Manager nebo příkazů PowerShellu, nainstaluje se certifikát ve správném formátu v adresáři /var/lib/sfcerts na každém uzlu. Pokud instalujete certifikát 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 prvků SecretsCertificate nebo EndpointCertificate , musí být přítomny v adresáři /var/lib/sfcerts . Prvky, které se používají k určení certifikátů v manifestu aplikace, nepřebírají atribut path, takže certifikáty musí být přítomny 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í v clusteru s Linuxem definována. 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 sestavené pomocí sad Service Fabric .NET Core nebo Java SDK. Existují dva způsoby, jak odkazovat na certifikáty v konfiguračním balíčku. Podpora sad .NET Core a sad Java SDK se liší.

Použití X509 SecurityCredentialsType

Pomocí sad .NET nebo Java SDK můžete jako SecurityCredentialsType zadat X509. To odpovídá X509Credentials typu (.NET/Java) (SecurityCredentials.NET/Java).

Odkaz na 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í certifikátů, adresář /var/lib/sfcerts . Pro Linux nejsou definovány žádné jiné kombinace CertificateStoreLocation a CertificateStoreName .

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

Následující kód XML ukazuje oddíl TransportSettings založený na tomto 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_2securityCredentialsType. To odpovídá X509Credentials2 typu (Java) pro SecurityCredentials (Java).

Pomocí X509_2 odkazu zadáte parametr cesty, abyste mohli certifikát najít 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í kód XML ukazuje oddíl TransportSettings založený na tomto 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 je v předchozím souboru XML zadaný jako soubor .crt. To znamená, že ve stejném umístění je také soubor .key obsahující privátní klíč.

Konfigurace aplikace Reliable Services tak, aby běžela v clusterech s Linuxem

Sady Service Fabric SDK umožňují komunikovat s rozhraními API modulu runtime Service Fabric a využívat tak platformu. Když spustíte jakoukoli aplikaci, která tuto funkci používá na 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. Tuto konfiguraci vyžadují aplikace, které obsahují služby Service Fabric Reliable Service napsané pomocí sad .NET Core nebo Java SDK.

Pokud chcete nakonfigurovat aplikaci, přidejte prvek SecretsCertificate pod značku Certificates , která se nachází pod značkou ApplicationManifest v souboruApplicationManifest.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 buď na certifikát clusteru, nebo na 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átování certifikátů X.509 na uzlech s Linuxem.