Certyfikaty i zabezpieczenia w klastrach systemu Linux

Ten artykuł zawiera informacje na temat 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 SDK java 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, który zawiera zarówno certyfikat, jak i klucz prywatny, albo jako plik crt zawierający certyfikat i plik klucza.key, który zawiera klucz prywatny. Wszystkie pliki powinny być w formacie PEM.

W przypadku zainstalowania certyfikatu z usługi Azure Key Vault przy użyciu szablonu Resource Manager lub poleceń programu PowerShell certyfikat jest instalowany w poprawnym formacie w katalogu /var/lib/sfcerts w każdym węźle. W przypadku zainstalowania 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ą znajdować się 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 programie 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 utworzonych 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 .NET Core i Java.

Korzystanie z klasy X509 SecurityCredentialsType

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

Odwołanie X509 lokalizuje certyfikat w magazynie certyfikatów. Poniższy kod XML przedstawia parametry używane do określenia 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ę certyfikatów katalogu /var/lib/sfcerts . W przypadku systemu Linux wszystkie inne kombinacje certificateStoreLocation i CertificateStoreName są niezdefiniowane.

Zawsze określ parametr 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>

Korzystanie z X509_2 SecurityCredentialsType

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

W przypadku 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ślenia 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 obszarze 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.