Sertifikat dan keamanan di kluster Linux
Artikel ini menyediakan informasi tentang mengonfigurasi sertifikat X.509 di kluster Linux.
Lokasi dan format sertifikat X.509 pada node Linux
Service Fabric umumnya mengharapkan sertifikat X.509 tersedia di direktori /var/lib/sfcerts pada node kluster Linux. Ini berlaku untuk sertifikat kluster, sertifikat klien, dll. Dalam beberapa kasus, Anda dapat menentukan lokasi selain folder var/lib/sfcerts untuk sertifikat. Misalnya, dengan Reliable Service yang dibangun menggunakan SDK Service Fabric Java, Anda dapat menentukan lokasi yang berbeda melalui paket konfigurasi (Settings.xml) untuk beberapa sertifikat spesifik aplikasi. Untuk mempelajari selengkapnya, lihat Sertifikat yang direferensikan dalam paket konfigurasi (Settings.xml).
Untuk kluster Linux, Service Fabric mengharapkan sertifikat tersedia sebagai file .pem yang berisi sertifikat dan kunci pribadi atau sebagai file .crt yang berisi sertifikat dan file .key yang berisi kunci pribadi. Semua file harus dalam format PEM.
Jika Anda menginstal sertifikat Anda dari Azure Key Vault dengan templat Resource Manager atau perintah PowerShell, sertifikat diinstal dalam format yang benar dalam direktori /var/lib/sfcerts pada setiap node. Jika Anda menginstal sertifikat melalui metode lain, Anda harus memastikan bahwa sertifikat diinstal dengan benar pada node kluster.
Sertifikat yang direferensikan dalam manifes aplikasi
Sertifikat yang ditentukan dalam manifes aplikasi, misalnya, melalui elemen SecretsCertificate atau EndpointCertificate, harus tersedia di direktori /var/lib/sfcerts. Elemen yang digunakan untuk menentukan sertifikat dalam manifes aplikasi tidak mengambil atribut path, sehingga sertifikat harus tersedia di direktori default. Elemen-elemen ini mengambil atribut X509StoreName opsional. Defaultnya adalah "My", yang menunjuk ke /var/lib/sfcerts pada node Linux. Nilai lainnya tidak terdefinisi pada kluster Linux. Kami menyarankan agar Anda menghilangkan atribut X509StoreName untuk aplikasi yang berjalan di kluster Linux.
Sertifikat yang direferensikan dalam paket konfigurasi (Settings.xml)
Untuk beberapa layanan, Anda dapat mengonfigurasi sertifikat X.509 di ConfigPackage (secara default, Settings.xml). Misalnya, ini adalah kasus ketika Anda mendeklarasikan sertifikat yang digunakan untuk mengamankan saluran RPC untuk layanan Reliable Service yang dibangun dengan Service Fabric .NET Core atau Java SDK. Ada dua cara untuk mereferensikan sertifikat dalam paket konfigurasi. Dukungan bervariasi antara .NET Core dan Java SDK.
Menggunakan X509 SecurityCredentialsType
Dengan .NET atau Java SDK, Anda dapat menentukan X509 untuk SecurityCredentialsType. Ini sesuai dengan X509Credentials
(.NET/Java) jenis SecurityCredentials
(.NET/Java).
Referensi X509 menemukan lokasi sertifikat di penyimpanan sertifikat. XML berikut menunjukkan parameter yang digunakan untuk menentukan lokasi sertifikat:
<Parameter Name="SecurityCredentialsType" Value="X509" />
<Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
<Parameter Name="CertificateStoreName" Value="My" />
Untuk layanan yang berjalan di Linux, LocalMachine/My menunjuk ke lokasi default untuk sertifikat, yaitu /var/lib/sfcerts. Untuk Linux, kombinasi lain dari CertificateStoreLocation dan CertificateStoreName tidak ditentukan.
Selalu tentukan LocalMachine untuk parameter CertificateStoreLocation. Tidak perlu menentukan parameter CertificateStoreName karena diatur ke default "My". Dengan referensi X509, file sertifikat harus terletak di direktori /var/lib/sfcerts pada node kluster.
XML berikut memperlihatkan bagian TransportSettings berdasarkan gaya ini:
<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>
Menggunakan X509_2 SecurityCredentialsType
Dengan Java SDK, Anda dapat menentukan X509_2 untuk SecurityCredentialsType. Ini sesuai dengan X509Credentials2
(Java) type SecurityCredentials
(Java).
Dengan referensi X509_2, Anda menentukan parameter jalur, sehingga Anda dapat menemukan sertifikat dalam sebuah direktori selain /var/lib/sfcerts. XML berikut menunjukkan parameter yang digunakan untuk menentukan lokasi sertifikat:
<Parameter Name="SecurityCredentialsType" Value="X509_2" />
<Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />
XML berikut memperlihatkan bagian TransportSettings berdasarkan gaya ini.
<!--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>
Catatan
Sertifikat ditentukan sebagai file .crt dalam XML sebelumnya. Ini menyiratkan bahwa ada juga file .key yang berisi kunci pribadi di lokasi yang sama.
Mengonfigurasi aplikasi Reliable Services untuk dijalankan di kluster Linux
Service Fabric SDK memungkinkan Anda berkomunikasi dengan API runtime Service Fabric untuk memanfaatkan platform. Ketika Anda menjalankan aplikasi apa pun yang menggunakan fungsi ini pada kluster Linux yang aman, Anda perlu mengonfigurasi aplikasi Anda dengan sertifikat yang dapat digunakan untuk memvalidasi dengan runtime Service Fabric. Aplikasi yang berisi layanan Service Fabric Reliable Service yang ditulis menggunakan .NET Core atau Java SDK memerlukan konfigurasi ini.
Untuk mengonfigurasi aplikasi, tambahkan elemen SecretsCertificate pada tag Sertifikat, yang terletak di bawah tag ApplicationManifestdalam file ApplicationManifest.xml. XML berikut ini memperlihatkan sertifikat yang direferensikan dengan thumbprint-nya:
<Certificates>
<SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="0A00AA0AAAA0AAA00A000000A0AA00A0AAAA00" />
</Certificates>
Anda dapat mereferensikan sertifikat kluster atau sertifikat yang Anda instal pada setiap node kluster. Di Linux, file sertifikat harus ada di direktori /var/lib/sfcerts. Untuk mempelajari lebih lanjut, lihat Lokasi dan format sertifikat X.509 pada node Linux.