Udostępnij za pośrednictwem


Certyfikaty i zabezpieczenia w klastrach systemu Linux

Ten artykuł zawiera informacje dotyczące konfigurowania certyfikatów X.509 w klastrach systemu Linux.

Lokalizacja i format certyfikatów X.509 w węzłach systemu Linux

Usługa Service Fabric zwykle oczekuje, że certyfikaty X.509 będą obecne w katalogu /var/lib/sfcerts w węzłach klastra systemu Linux. Dotyczy to certyfikatów klastra, certyfikatów klienta itp. W niektórych przypadkach można określić lokalizację inną niż folder var/lib/sfcerts dla certyfikatów . Na przykład w przypadku usług Reliable Services utworzonych przy użyciu zestawu JAVA SDK usługi Service Fabric można określić inną lokalizację za pomocą pakietu konfiguracji (Settings.xml) dla niektórych certyfikatów specyficznych dla aplikacji. Aby dowiedzieć się więcej, zobacz Certyfikaty, do których odwołuje się pakiet konfiguracji (Settings.xml).

W przypadku klastrów systemu Linux usługa Service Fabric oczekuje, że certyfikaty będą obecne jako plik pem zawierający zarówno certyfikat, jak i klucz prywatny albo jako plik crt zawierający certyfikat i plik .key zawierający klucz prywatny. Wszystkie pliki powinny być w formacie PEM.

Jeśli certyfikat zostanie zainstalowany z usługi Azure Key Vault przy użyciu szablonu usługi Resource Manager lub poleceń programu PowerShell, certyfikat zostanie zainstalowany w poprawnym formacie w katalogu /var/lib/sfcerts w każdym węźle. W przypadku instalowania certyfikatu za pomocą innej metody należy upewnić się, że certyfikat jest poprawnie zainstalowany w węzłach klastra.

Certyfikaty, do których odwołuje się manifest aplikacji

Certyfikaty określone w manifeście aplikacji, na przykład za pośrednictwem elementów SecretsCertificate lub EndpointCertificate, muszą być obecne w katalogu /var/lib/sfcerts. Elementy używane do określania certyfikatów w manifeście aplikacji nie przyjmują atrybutu ścieżki, więc certyfikaty muszą znajdować się w katalogu domyślnym. Te elementy przyjmują opcjonalny atrybut X509StoreName . Wartość domyślna to "My", która wskazuje katalog /var/lib/sfcerts w węzłach systemu Linux. Każda inna wartość jest niezdefiniowana w klastrze systemu Linux. Zalecamy pominięcie atrybutu X509StoreName dla aplikacji uruchamianych w klastrach systemu Linux.

Certyfikaty, do których odwołuje się pakiet konfiguracji (Settings.xml)

W przypadku niektórych usług można skonfigurować certyfikaty X.509 w pliku ConfigPackage (domyślnie Settings.xml). Na przykład w przypadku deklarowania certyfikatów używanych do zabezpieczania kanałów RPC dla usług Reliable Services skompilowanych przy użyciu zestawów SDK platformy .NET Core lub Java usługi Service Fabric. Istnieją dwa sposoby odwoływanie się do certyfikatów w pakiecie konfiguracji. Obsługa różni się w zależności od zestawów SDK platformy .NET Core i języka Java.

Korzystanie z klasy X509 SecurityCredentialsType

WIth zestawów SDK platformy .NET lub Java można określić X509 dla wartości SecurityCredentialsType. Odpowiada to typowi X509Credentials SecurityCredentials (.NET/Java) (.NET/Java).

Odwołanie X509 lokalizuje certyfikat w magazynie certyfikatów. Poniższy kod XML przedstawia parametry używane do określania lokalizacji certyfikatu:

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

W przypadku usługi działającej w systemie Linux localMachine/My wskazuje domyślną lokalizację dla certyfikatów katalog /var/lib/sfcerts. W przypadku systemu Linux wszystkie inne kombinacje CertificateStoreLocation i CertificateStoreName są niezdefiniowane.

Zawsze określ wartość LocalMachine dla parametru CertificateStoreLocation . Nie ma potrzeby określania parametru CertificateStoreName , ponieważ domyślnie ma wartość "Mój". W przypadku odwołania X509 pliki certyfikatów muszą znajdować się w katalogu /var/lib/sfcerts w węźle klastra.

Poniższy kod XML przedstawia sekcję TransportSettings na podstawie tego 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>

Używanie X509_2 SecurityCredentialsType

Za pomocą zestawu JAVA SDK można określić X509_2 dla parametru SecurityCredentialsType. Odpowiada to typowi X509Credentials2 (Java) SecurityCredentials (Java).

Za pomocą odwołania X509_2 należy określić parametr ścieżki, aby można było zlokalizować certyfikat w katalogu innym niż /var/lib/sfcerts. Poniższy kod XML przedstawia parametry używane do określania lokalizacji certyfikatu:

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

Poniższy kod XML przedstawia sekcję TransportSettings na podstawie tego 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>

Uwaga

Certyfikat jest określony jako plik crt w poprzednim pliku XML. Oznacza to, że istnieje również plik .key zawierający klucz prywatny w tej samej lokalizacji.

Konfigurowanie aplikacji Reliable Services do uruchamiania w klastrach systemu Linux

Zestawy SDK usługi Service Fabric umożliwiają komunikację z interfejsami API środowiska uruchomieniowego usługi Service Fabric w celu korzystania z platformy. Po uruchomieniu dowolnej aplikacji korzystającej z tej funkcji w bezpiecznych klastrach systemu Linux należy skonfigurować aplikację przy użyciu certyfikatu, którego może użyć do weryfikacji w środowisku uruchomieniowym usługi Service Fabric. Aplikacje zawierające usługi Service Fabric Reliable Service napisane przy użyciu zestawów SDK platformy .NET Core lub Java wymagają tej konfiguracji.

Aby skonfigurować aplikację, dodaj element SecretsCertificate w tagu Certyfikaty, który znajduje się w tagu ApplicationManifest w pliku ApplicationManifest.xml. Poniższy kod XML przedstawia certyfikat, do których odwołuje się odcisk palca:

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

Możesz odwołać się do certyfikatu klastra lub certyfikatu instalowanego w każdym węźle klastra. W systemie Linux pliki certyfikatów muszą znajdować się w katalogu /var/lib/sfcerts . Aby dowiedzieć się więcej, zobacz Lokalizacja i format certyfikatów X.509 w węzłach systemu Linux.