Dela via


Certifikat och säkerhet i Linux-kluster

Den här artikeln innehåller information om hur du konfigurerar X.509-certifikat i Linux-kluster.

Plats och format för X.509-certifikat på Linux-noder

Service Fabric förväntar sig vanligtvis att X.509-certifikat finns i katalogen /var/lib/sfcerts på Linux-klusternoder. Detta gäller för klustercertifikat, klientcertifikat osv. I vissa fall kan du ange en annan plats än mappen var/lib/sfcerts för certifikat. Med Reliable Services som skapats med Service Fabric Java SDK kan du till exempel ange en annan plats via konfigurationspaketet (Settings.xml) för vissa programspecifika certifikat. Mer information finns i Certifikat som refereras till i konfigurationspaketet (Settings.xml).

För Linux-kluster förväntar sig Service Fabric att certifikat ska finnas som antingen en .pem-fil som innehåller både certifikatet och den privata nyckeln eller som en .crt-fil som innehåller certifikatet och en .key-fil som innehåller den privata nyckeln. Alla filer ska vara i PEM-format.

Om du installerar certifikatet från Azure Key Vault med hjälp av antingen en Resource Manager-mall eller PowerShell-kommandon installeras certifikatet i rätt format i katalogen /var/lib/sfcerts på varje nod. Om du installerar ett certifikat via en annan metod måste du kontrollera att certifikatet är korrekt installerat på klusternoder.

Certifikat som refereras i programmanifestet

Certifikat som anges i programmanifestet, till exempel via elementen SecretsCertificate eller EndpointCertificate , måste finnas i katalogen /var/lib/sfcerts . De element som används för att ange certifikat i programmanifestet använder inte ett sökvägsattribut, så certifikaten måste finnas i standardkatalogen. De här elementen har ett valfritt X509StoreName-attribut . Standardvärdet är "My", som pekar på katalogen /var/lib/sfcerts på Linux-noder. Alla andra värden är odefinierade i ett Linux-kluster. Vi rekommenderar att du utelämnar attributet X509StoreName för appar som körs i Linux-kluster.

Certifikat som refereras i konfigurationspaketet (Settings.xml)

För vissa tjänster kan du konfigurera X.509-certifikat i ConfigPackage (som standard Settings.xml). Detta är till exempel fallet när du deklarerar certifikat som används för att skydda RPC-kanaler för Reliable Services-tjänster som skapats med Service Fabric .NET Core eller Java SDK:er. Det finns två sätt att referera till certifikat i konfigurationspaketet. Stödet varierar mellan .NET Core och Java SDK:er.

Använda X509 SecurityCredentialsType

Med .NET- eller Java-SDK:erna kan du ange X509 för SecurityCredentialsType. Detta motsvarar X509Credentials (.NET/Java)-typen (SecurityCredentials.NET/Java).

X509-referensen letar upp certifikatet i ett certifikatarkiv. Följande XML visar de parametrar som används för att ange certifikatets plats:

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

För en tjänst som körs på Linux pekar LocalMachine/My på standardplatsen för certifikat, katalogen /var/lib/sfcerts . För Linux är alla andra kombinationer av CertificateStoreLocation och CertificateStoreName odefinierade.

Ange alltid LocalMachine för parametern CertificateStoreLocation . Du behöver inte ange parametern CertificateStoreName eftersom den är "Min" som standard. Med en X509-referens måste certifikatfilerna finnas i katalogen /var/lib/sfcerts på klusternoden.

Följande XML visar ett TransportSettings-avsnitt baserat på det här formatet:

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

Använda X509_2 SecurityCredentialsType

Med Java SDK kan du ange X509_2 för SecurityCredentialsType. Detta motsvarar X509Credentials2 (Java) typ av SecurityCredentials (Java).

Med en X509_2 referens anger du en sökvägsparameter, så att du kan hitta certifikatet i en annan katalog än /var/lib/sfcerts. Följande XML visar de parametrar som används för att ange certifikatets plats:

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

Följande XML visar ett TransportSettings-avsnitt baserat på det här formatet.

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

Anteckning

Certifikatet anges som en .crt-fil i föregående XML. Detta innebär att det också finns en .key-fil som innehåller den privata nyckeln på samma plats.

Konfigurera en Reliable Services-app så att den körs på Linux-kluster

Med Service Fabric SDK:er kan du kommunicera med Service Fabric-körnings-API:er för att utnyttja plattformen. När du kör alla program som använder den här funktionen i säkra Linux-kluster måste du konfigurera programmet med ett certifikat som det kan använda för att verifiera med Service Fabric-körningen. Program som innehåller Service Fabric Reliable Service-tjänster som skrivits med .NET Core- eller Java-SDK:er kräver den här konfigurationen.

Om du vill konfigurera ett program lägger du till ett SecretsCertificate-element under taggen Certifikat , som finns under taggen ApplicationManifest i ApplicationManifest.xml-filen . Följande XML visar ett certifikat som refereras till av tumavtrycket:

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

Du kan referera till antingen klustercertifikatet eller ett certifikat som du installerar på varje klusternod. I Linux måste certifikatfilerna finnas i katalogen /var/lib/sfcerts . Mer information finns i Plats och format för X.509-certifikat på Linux-noder.