Certificaten en beveiliging op Linux-clusters
Dit artikel bevat informatie over het configureren van X.509-certificaten op Linux-clusters.
Locatie en indeling van X.509-certificaten op Linux-knooppunten
Service Fabric verwacht over het algemeen dat X.509-certificaten aanwezig zijn in de map /var/lib/sfcerts op Linux-clusterknooppunten. Dit geldt voor clustercertificaten, clientcertificaten, enzovoort. In sommige gevallen kunt u een andere locatie opgeven dan de map var/lib/sfcerts voor certificaten. Met Reliable Services die zijn gebouwd met behulp van de Service Fabric Java SDK, kunt u bijvoorbeeld een andere locatie opgeven via het configuratiepakket (Settings.xml) voor bepaalde toepassingsspecifieke certificaten. Zie Certificaten waarnaar wordt verwezen in het configuratiepakket (Settings.xml) voor meer informatie.
Voor Linux-clusters verwacht Service Fabric dat certificaten aanwezig zijn als een PEM-bestand dat zowel het certificaat als de persoonlijke sleutel bevat, of als een CRT-bestand dat het certificaat en een .key-bestand bevat dat de persoonlijke sleutel bevat. Alle bestanden moeten de PEM-indeling hebben.
Als u uw certificaat installeert vanuit Azure Key Vault met behulp van een Resource Manager-sjabloon of PowerShell-opdrachten , wordt het certificaat geïnstalleerd in de juiste indeling in de map /var/lib/sfcerts op elk knooppunt. Als u een certificaat installeert via een andere methode, moet u ervoor zorgen dat het certificaat correct is geïnstalleerd op clusterknooppunten.
Certificaten waarnaar wordt verwezen in het toepassingsmanifest
Certificaten die zijn opgegeven in het toepassingsmanifest, bijvoorbeeld via de elementen SecretsCertificate of EndpointCertificate, moeten aanwezig zijn in de map /var/lib/sfcerts. De elementen die worden gebruikt om certificaten in het toepassingsmanifest op te geven, nemen geen padkenmerk, dus de certificaten moeten aanwezig zijn in de standaardmap. Deze elementen hebben een optioneel X509StoreName-kenmerk . De standaardwaarde is 'Mijn', die verwijst naar de map /var/lib/sfcerts op Linux-knooppunten. Elke andere waarde is niet gedefinieerd in een Linux-cluster. U wordt aangeraden het kenmerk X509StoreName weg te laten voor apps die worden uitgevoerd op Linux-clusters.
Certificaten waarnaar wordt verwezen in het configuratiepakket (Settings.xml)
Voor sommige services kunt u X.509-certificaten configureren in de ConfigPackage (standaard Settings.xml). Dit is bijvoorbeeld het geval wanneer u certificaten declareert die worden gebruikt voor het beveiligen van RPC-kanalen voor Reliable Services-services die zijn gebouwd met de Service Fabric .NET Core- of Java SDK's. Er zijn twee manieren om te verwijzen naar certificaten in het configuratiepakket. Ondersteuning varieert tussen de .NET Core- en Java-SDK's.
X509 SecurityCredentialsType gebruiken
Met de .NET- of Java-SDK's kunt u X509 opgeven voor securityCredentialsType. Dit komt overeen met het X509Credentials
type (.NET/Java) van SecurityCredentials
(.NET/Java).
De X509-verwijzing zoekt het certificaat in een certificaatarchief. In de volgende XML worden de parameters weergegeven die worden gebruikt om de locatie van het certificaat op te geven:
<Parameter Name="SecurityCredentialsType" Value="X509" />
<Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
<Parameter Name="CertificateStoreName" Value="My" />
Voor een service die op Linux wordt uitgevoerd, verwijst LocalMachine/My naar de standaardlocatie voor certificaten, de map /var/lib/sfcerts. Voor Linux zijn alle andere combinaties van CertificateStoreLocation en CertificateStoreName niet gedefinieerd.
Geef Altijd LocalMachine op voor de parameter CertificateStoreLocation. U hoeft de parameter CertificateStoreName niet op te geven omdat deze standaard 'Mijn' is. Met een X509-verwijzing moeten de certificaatbestanden zich in de map /var/lib/sfcerts op het clusterknooppunt bevinden.
In de volgende XML ziet u een sectie TransportSettings op basis van deze stijl:
<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>
X509_2 SecurityCredentialsType gebruiken
Met de Java SDK kunt u X509_2 opgeven voor securityCredentialsType. Dit komt overeen met het X509Credentials2
type (Java) van SecurityCredentials
(Java).
Met een X509_2 verwijzing geeft u een padparameter op, zodat u het certificaat kunt vinden in een andere map dan /var/lib/sfcerts. In de volgende XML worden de parameters weergegeven die worden gebruikt om de locatie van het certificaat op te geven:
<Parameter Name="SecurityCredentialsType" Value="X509_2" />
<Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />
In de volgende XML ziet u een sectie TransportSettings op basis van deze stijl.
<!--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>
Notitie
Het certificaat wordt opgegeven als een CRT-bestand in de voorgaande XML. Dit impliceert dat er ook een .key-bestand met de persoonlijke sleutel op dezelfde locatie is.
Een Reliable Services-app configureren voor uitvoering op Linux-clusters
Met de Service Fabric SDK's kunt u communiceren met de Service Fabric Runtime-API's om gebruik te maken van het platform. Wanneer u een toepassing uitvoert die gebruikmaakt van deze functionaliteit op beveiligde Linux-clusters, moet u uw toepassing configureren met een certificaat dat kan worden gebruikt om te valideren met de Service Fabric-runtime. Voor toepassingen die Service Fabric Reliable Service-services bevatten die zijn geschreven met behulp van de .NET Core- of Java SDK's, is deze configuratie vereist.
Als u een toepassing wilt configureren, voegt u een SecretsCertificate-element toe onder de tag Certificaten, die zich onder de Tag ApplicationManifest in het bestand ApplicationManifest.xml bevindt. In de volgende XML ziet u een certificaat waarnaar wordt verwezen met de vingerafdruk:
<Certificates>
<SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="0A00AA0AAAA0AAA00A000000A0AA00A0AAAA00" />
</Certificates>
U kunt verwijzen naar het clustercertificaat of naar een certificaat dat u op elk clusterknooppunt installeert. In Linux moeten de certificaatbestanden aanwezig zijn in de map /var/lib/sfcerts . Zie Locatie en indeling van X.509-certificaten op Linux-knooppunten voor meer informatie.