Aracılığıyla paylaş


X.509 sertifikalarına sahip cihazları IoT Central Uygulamasına bağlama

IoT Central, bir cihazla uygulamanız arasındaki iletişimin güvenliğini sağlamak için hem paylaşılan erişim imzalarını (SAS) hem de X.509 sertifikalarını destekler. İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisinde SAS kullanılır. Bu makalede, kod örneğini X.509 sertifikalarını kullanacak şekilde değiştirmeyi öğreneceksiniz. X.509 sertifikaları üretim ortamlarında önerilir. Daha fazla bilgi için bkz . Cihaz kimlik doğrulaması kavramları.

Bu kılavuzda X.509 sertifikalarını kullanmanın iki yolu gösterilmektedir: genellikle bir üretim ortamında kullanılan grup kayıtları ve test için yararlı olan bireysel kayıtlar . Makalede ayrıca sertifikaların süresi dolduğunda bağlantıyı korumak için cihaz sertifikalarının nasıl yuvarlandığı açıklanır.

Bu kılavuz C#, Java, JavaScript ve Python kullanan Azure IoT Central uygulamanıza istemci uygulaması oluşturma ve bağlama öğreticisinde gösterilen örnekleri temel alır. C programlama dilini kullanan bir örnek için bkz . Kayıt gruplarını kullanarak birden çok X.509 cihazı sağlama.

Önkoşullar

Bu nasıl yapılır kılavuzundaki adımları tamamlamak için önce Azure IoT Central uygulamanıza istemci uygulaması oluşturma ve bağlama öğreticisini tamamlamanız gerekir. Bu kılavuzdaki adımları izlediğinizde öğreticide kullandığınız kodu değiştirirsiniz.

Bu nasıl yapılır kılavuzunda bazı test X.509 sertifikaları oluşturacaksınız. Bu sertifikaları oluşturabilmek için şunlar gerekir:

  • Node.js sürüm 6 veya üzeri yüklü bir geliştirme makinesi. Sürümünüzü denetlemek için komut satırında komutunu çalıştırabilirsiniz node --version . Bu öğreticideki yönergelerde, Windows komut isteminde node komutunu çalıştırdığınız varsayılır. Ancak, Node.js diğer birçok işletim sisteminde kullanabilirsiniz.
  • Test X.509 sertifikalarını oluşturmaya yönelik betikleri içeren Node.js GitHub deposu için Microsoft Azure IoT SDK'sının yerel kopyası. Deponun bir kopyasını indirmek için bu bağlantıyı kullanın: ZIP'i indirin. Ardından dosyanın sıkıştırmasını yerel makinenizde uygun bir konuma açın.

Grup kaydını kullanma

Üretim ortamında grup kaydıyla X.509 sertifikalarını kullanın. Grup kaydında, IoT Central uygulamanıza kök veya ara X.509 sertifikası eklersiniz. Kök veya ara sertifikadan türetilen yaprak sertifikalara sahip cihazlar uygulamanıza bağlanabilir.

Kök ve cihaz sertifikaları oluşturma

Bu bölümde, IoT Central kayıt grubunun sertifikasından türetilen bir sertifikaya sahip bir cihazı bağlamak için X.509 sertifikası kullanacaksınız.

Uyarı

X.509 sertifikaları oluşturmanın bu yolu yalnızca test içindir. Bir üretim ortamı için sertifika oluşturma için resmi, güvenli mekanizmanızı kullanmalısınız.

  1. İndirdiğiniz Node.js için Microsoft Azure IoT SDK'sında sertifika oluşturucu betiğine gidin. Gerekli paketleri yükleyin:

    cd azure-iot-sdk-node/provisioning/tools
    npm install
    
  2. Bir kök sertifika oluşturun ve betiği çalıştırarak bir cihaz sertifikası türetin:

    node create_test_cert.js root mytestrootcert
    node create_test_cert.js device sample-device-01 mytestrootcert
    

    İpucu

    Cihaz kimliği harf, sayı ve - karakter içerebilir.

Bu komutlar aşağıdaki kök ve cihaz sertifikalarını oluşturur:

filename Içeriği
mytestrootcert_cert.pem Kök X509 sertifikasının genel bölümü
mytestrootcert_key.pem Kök X509 sertifikasının özel anahtarı
mytestrootcert_fullchain.pem Kök X509 sertifikası için anahtar zincirinin tamamı.
mytestrootcert.pfx Kök X509 sertifikası için PFX dosyası.
sampleDevice01_cert.pem Cihaz X509 sertifikasının genel bölümü
sampleDevice01_key.pem Cihaz X509 sertifikasının özel anahtarı
sampleDevice01_fullchain.pem Cihaz X509 sertifikası için tüm anahtarlık.
sampleDevice01.pfx Cihaz X509 sertifikası için PFX dosyası.

Bu dosyaların konumunu not edin. Daha sonra lazım olacak.

Grup kaydı oluşturma

  1. IoT Central uygulamanızı açın ve sol bölmede İzinler'e gidin ve Cihaz bağlantı grupları'nı seçin.

  2. Sertifikalar kanıtlama türüne (X.509) sahip MyX509Group adlı yeni bir kayıt grubu oluşturmak için + Yeni'yi seçin. IoT cihazları veya IoT Edge cihazları için kayıt grupları oluşturabilirsiniz.

  3. Oluşturduğunuz kayıt grubunda Birincili yönet'i seçin.

  4. Birincil sertifika panelinde Sertifika ekle'yi seçin.

  5. Daha önce oluşturduğunuz mytestrootcert_cert.pem adlı kök sertifika dosyasını karşıya yükleyin.

  6. Güvendiğiniz bir ara veya kök sertifika yetkilisi kullanıyorsanız ve sertifikanın tam sahipliğini bildiğinizde, karşıya yükleme sırasında doğrulanan sertifika durumunu Açık olarak ayarlayarak sertifikayı doğruladığınızı kendi kendinize doğrulayabilirsiniz. Aksi takdirde, karşıya yüklemede doğrulanan sertifika durumunu Kapalı olarak ayarlayın.

  7. Karşıya yükleme sırasında doğrulanan sertifika durumunu Kapalı olarak ayarlarsanız Doğrulama kodu oluştur'a tıklayın.

  8. Doğrulama kodunu kopyalayın, kopyalayın ve ardından bir X.509 doğrulama sertifikası oluşturun. Örneğin, komut isteminde:

    node create_test_cert.js verification --ca mytestrootcert_cert.pem --key mytestrootcert_key.pem --nonce  {verification-code}
    
  9. Doğrulamayı tamamlamak için verification_cert.pem imzalı doğrulama sertifikasını karşıya yüklemek için Doğrula'yı seçin.

  10. Birincil sertifikanın durumu artık Doğrulandı:

    Screenshot that shows a verified X509 certificate.

Artık bu birincil kök sertifikadan türetilmiş bir X.509 sertifikasına sahip cihazları bağlayabilirsiniz.

Kayıt grubunu kaydettikten sonra kimlik kapsamını not edin. Daha sonra lazım olacak.

Örnek cihaz kodunu çalıştırma

Windows kullanıyorsanız, örneğin çalışması için X.509 sertifikaları Windows sertifika deposunda olmalıdır. Windows Gezgini'nde, daha önce oluşturduğunuz PFX dosyalarına çift tıklayın - mytestrootcert.pfx ve sampleDevice01.pfx. Sertifika İçeri Aktarma Sihirbazı'nda, depo konumu olarak Geçerli Kullanıcı'yı seçin, parola olarak girin 1234 ve sihirbazın sertifika depoyu otomatik olarak seçmesine izin verin. Sihirbaz sertifikaları geçerli kullanıcının kişisel deposuna aktarır.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. IoTHubDeviceSamples Visual Studio çözümünde, Parameter.cs dosyasını TemperatureController projesinde açın.

  2. Sınıfına aşağıdaki iki parametre tanımını ekleyin:

    [Option(
        'x',
        "CertificatePath",
        HelpText = "(Required if DeviceSecurityType is \"dps\"). \nThe device PFX file to use during device provisioning." +
        "\nDefaults to environment variable \"IOTHUB_DEVICE_X509_CERT\".")]
    public string CertificatePath { get; set; } = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_X509_CERT");
    
    [Option(
        'p',
        "CertificatePassword",
        HelpText = "(Required if DeviceSecurityType is \"dps\"). \nThe password of the PFX certificate file." +
        "\nDefaults to environment variable \"IOTHUB_DEVICE_X509_PASSWORD\".")]
    public string CertificatePassword { get; set; } = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_X509_PASSWORD");
    

    Değişiklikleri kaydedin.

  3. IoTHubDeviceSamples Visual Studio çözümünde, Program.cs dosyasını TemperatureController projesinde açın.

  4. Aşağıdaki using deyimlerini ekleyin:

    using System.Security.Cryptography.X509Certificates;
    using System.IO;
    
  5. sınıfına aşağıdaki yöntemi ekleyin:

    private static X509Certificate2 LoadProvisioningCertificate(Parameters parameters)
    {
        var certificateCollection = new X509Certificate2Collection();
        certificateCollection.Import(
            parameters.CertificatePath,
            parameters.CertificatePassword,
            X509KeyStorageFlags.UserKeySet);
    
        X509Certificate2 certificate = null;
    
        foreach (X509Certificate2 element in certificateCollection)
        {
            Console.WriteLine($"Found certificate: {element?.Thumbprint} {element?.Subject}; PrivateKey: {element?.HasPrivateKey}");
            if (certificate == null && element.HasPrivateKey)
            {
                certificate = element;
            }
            else
            {
                element.Dispose();
            }
        }
    
        if (certificate == null)
        {
            throw new FileNotFoundException($"{parameters.CertificatePath} did not contain any certificate with a private key.");
        }
    
        Console.WriteLine($"Using certificate {certificate.Thumbprint} {certificate.Subject}");
    
        return certificate;
    }
    
  6. yönteminde SetupDeviceClientAsync için case "dps" kod bloğunu aşağıdaki kodla değiştirin:

    case "dps":
        s_logger.LogDebug($"Initializing via DPS");
        Console.WriteLine($"Loading the certificate...");
        X509Certificate2 certificate = LoadProvisioningCertificate(parameters);
        DeviceRegistrationResult dpsRegistrationResult = await ProvisionDeviceAsync(parameters, certificate, cancellationToken);
        var authMethod = new DeviceAuthenticationWithX509Certificate(dpsRegistrationResult.DeviceId, certificate);
        deviceClient = InitializeDeviceClient(dpsRegistrationResult.AssignedHub, authMethod);
        break;
    
  7. ProvisionDeviceAsync yöntemini aşağıdaki kod ile değiştirin:

    private static async Task<DeviceRegistrationResult> ProvisionDeviceAsync(Parameters parameters, X509Certificate2 certificate, CancellationToken cancellationToken)
    {
        SecurityProvider security = new SecurityProviderX509Certificate(certificate);
        ProvisioningTransportHandler mqttTransportHandler = new ProvisioningTransportHandlerMqtt();
        ProvisioningDeviceClient pdc = ProvisioningDeviceClient.Create(parameters.DpsEndpoint, parameters.DpsIdScope, security, mqttTransportHandler);
    
        var pnpPayload = new ProvisioningRegistrationAdditionalData
        {
            JsonData = PnpConvention.CreateDpsPayload(ModelId),
        };
        return await pdc.RegisterAsync(pnpPayload, cancellationToken);
    }
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Projeye aşağıdaki ortam değişkenlerini ekleyin:

    • IOTHUB_DEVICE_X509_CERT: <full path to folder that contains PFX files>sampleDevice01.pfx
    • IOTHUB_DEVICE_X509_PASSWORD: 1234.
  2. Uygulamayı derleyin ve çalıştırın. Cihaz sağlamalarını başarıyla doğrulayın.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. Sıcaklık denetleyicisi cihaz örneği için pom.xml dosyasını ve src klasörünü içeren azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample klasörüne gidin.

  2. Düğüme aşağıdaki bağımlılık yapılandırmasını <dependencies> eklemek için pom.xml dosyasını düzenleyin:

    <dependency>
        <groupId>com.microsoft.azure.sdk.iot.provisioning.security</groupId>
        <artifactId>${x509-provider-artifact-id}</artifactId>
        <version>${x509-provider-version}</version>
    </dependency>
    

    Değişiklikleri kaydedin.

  3. Metin düzenleyicinizde src/main/java/samples/com/microsoft/azure/sdk/iot/device/TemperatureController.java dosyasını açın.

  4. İçeri aktarmayı SecurityProviderSymmetricKey aşağıdaki içeri aktarmalarla değiştirin:

    import com.microsoft.azure.sdk.iot.provisioning.security.SecurityProvider;
    import com.microsoft.azure.sdk.iot.provisioning.security.hsm.SecurityProviderX509Cert;
    import com.microsoft.azure.sdk.iot.provisioning.security.exceptions.SecurityProviderException;
    
  5. Aşağıdaki içeri aktarmayı ekleyin:

    import java.nio.file.*;
    
  6. Yönteminin attığı özel durumlar main listesine ekleyinSecurityProviderException:

    public static void main(String[] args) throws IOException, URISyntaxException, ProvisioningDeviceClientException, InterruptedException, SecurityProviderException {
    
  7. initializeAndProvisionDevice yöntemini aşağıdaki kod ile değiştirin:

    private static void initializeAndProvisionDevice() throws ProvisioningDeviceClientException, IOException, URISyntaxException, InterruptedException, SecurityProviderException {
        String deviceX509Key = new String(Files.readAllBytes(Paths.get(System.getenv("IOTHUB_DEVICE_X509_KEY"))));
        String deviceX509Cert = new String(Files.readAllBytes(Paths.get(System.getenv("IOTHUB_DEVICE_X509_CERT"))));
        SecurityProvider securityProviderX509 = new SecurityProviderX509Cert(deviceX509Cert, deviceX509Key, null);
        ProvisioningDeviceClient provisioningDeviceClient;
        ProvisioningStatus provisioningStatus = new ProvisioningStatus();
    
        provisioningDeviceClient = ProvisioningDeviceClient.create(globalEndpoint, scopeId, provisioningProtocol, securityProviderX509);
    
        AdditionalData additionalData = new AdditionalData();
        additionalData.setProvisioningPayload(com.microsoft.azure.sdk.iot.provisioning.device.plugandplay.PnpHelper.createDpsPayload(MODEL_ID));
    
        provisioningDeviceClient.registerDevice(new ProvisioningDeviceClientRegistrationCallbackImpl(), provisioningStatus, additionalData);
    
        while (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() != ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ASSIGNED)
        {
            if (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ERROR ||
                    provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_DISABLED ||
                    provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_FAILED)
            {
                provisioningStatus.exception.printStackTrace();
                System.out.println("Registration error, bailing out");
                break;
            }
            System.out.println("Waiting for Provisioning Service to register");
            Thread.sleep(MAX_TIME_TO_WAIT_FOR_REGISTRATION);
        }
    
        ClientOptions options = new ClientOptions();
        options.setModelId(MODEL_ID);
    
        if (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ASSIGNED) {
            System.out.println("IotHUb Uri : " + provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getIothubUri());
            System.out.println("Device ID : " + provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getDeviceId());
    
            String iotHubUri = provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getIothubUri();
            String deviceId = provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getDeviceId();
    
            log.debug("Opening the device client.");
            deviceClient = DeviceClient.createFromSecurityProvider(iotHubUri, deviceId, securityProviderX509, IotHubClientProtocol.MQTT, options);
            deviceClient.open();
        }
    }
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>sampleDevice01_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>sampleDevice01_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Uygulamayı derleyin ve çalıştırın. Cihaz sağlamalarını başarıyla doğrulayın.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. pnp_temperature_controller.js uygulamasını içeren azure-iot-sdk-node/device/samples/javascript klasörüne gidin ve X.509 paketini yüklemek için aşağıdaki komutu çalıştırın:

    npm install azure-iot-security-x509 --save
    
  2. pnp_temperature_controller.js dosyasını bir metin düzenleyicisinde açın.

  3. require Deyimlerini aşağıdaki kodu içerecek şekilde düzenleyin:

    const fs = require('fs');
    const X509Security = require('azure-iot-security-x509').X509Security;
    
  4. Değişkeni başlatmak deviceCert için "DPS bağlantı bilgileri" bölümüne aşağıdaki dört satırı ekleyin:

    const deviceCert = {
      cert: fs.readFileSync(process.env.IOTHUB_DEVICE_X509_CERT).toString(),
      key: fs.readFileSync(process.env.IOTHUB_DEVICE_X509_KEY).toString()
    };
    
  5. provisionDevice İlk satırı aşağıdaki kodla değiştirerek istemciyi oluşturan işlevi düzenleyin:

    var provSecurityClient = new X509Security(registrationId, deviceCert);
    
  6. Aynı işlevde değişkeni ayarlayan deviceConnectionString satırı aşağıdaki gibi değiştirin:

    deviceConnectionString = 'HostName=' + result.assignedHub + ';DeviceId=' + result.deviceId + ';x509=true';
    
  7. işlevinde main , öğesini çağıran Client.fromConnectionStringsatırın arkasına aşağıdaki satırı ekleyin:

    client.setOptions(deviceCert);
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>sampleDevice01_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>sampleDevice01_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Betiği yürüterek cihaz sağlamalarını başarıyla doğrulayın:

    node pnp_temperature_controller.js
    

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. azure-iot-device/samples/pnp klasörüne gidin ve temp_controller_with_thermostats.py dosyasını bir metin düzenleyicisinde açın.

  2. X.509 işlevselliğini içeri aktarmak için aşağıdaki from deyimi ekleyin:

    from azure.iot.device import X509
    
  3. İşlevin ilk bölümünü provision_device aşağıdaki gibi değiştirin:

    async def provision_device(provisioning_host, id_scope, registration_id, x509, model_id):
        provisioning_device_client = ProvisioningDeviceClient.create_from_x509_certificate(
            provisioning_host=provisioning_host,
            registration_id=registration_id,
            id_scope=id_scope,
            x509=x509,
        )
    
  4. işlevinde main değişkeni ayarlayan symmetric_key satırı aşağıdaki kodla değiştirin:

    x509 = X509(
        cert_file=os.getenv("IOTHUB_DEVICE_X509_CERT"),
        key_file=os.getenv("IOTHUB_DEVICE_X509_KEY"),
    )
    
  5. işlevinde main işlevine yapılan çağrıyı provision_device aşağıdaki kodla değiştirin:

    registration_result = await provision_device(
        provisioning_host, id_scope, registration_id, x509, model_id
    )
    
  6. işlevinde main işlevine yapılan çağrıyı IoTHubDeviceClient.create_from_symmetric_key aşağıdaki kodla değiştirin:

    device_client = IoTHubDeviceClient.create_from_x509_certificate(
        x509=x509,
        hostname=registration_result.registration_state.assigned_hub,
        device_id=registration_result.registration_state.device_id,
        product_info=model_id,
    )
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>sampleDevice01_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>sampleDevice01_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Betiği yürüterek cihaz sağlamalarını başarıyla doğrulayın:

    python temp_controller_with_thermostats.py
    

Telemetrinin IoT Central uygulamanızdaki cihaz görünümünde göründüğünü doğrulayın:

Screenshot showing telemetry from a device that connected using X.509.

Bireysel kayıt kullanma

Cihazınızı ve çözümünüzü test etmek için X.509 sertifikalarını tek bir kayıtla kullanın. Tek bir kayıtta IoT Central uygulamanızda kök veya ara X.509 sertifikası yoktur. Cihazlar, uygulamanıza bağlanmak için otomatik olarak imzalanan bir X.509 sertifikası kullanır.

Otomatik olarak imzalanan cihaz sertifikası oluşturma

Bu bölümde, tek bir cihazı kaydetmek için kullanılan bireysel kayıt için cihazları bağlamak için otomatik olarak imzalanan bir X.509 sertifikası kullanırsınız. Otomatik olarak imzalanan sertifikalar yalnızca test amaçlıdır.

Uyarı

X.509 sertifikaları oluşturmanın bu yolu yalnızca test içindir. Bir üretim ortamı için sertifika oluşturma için resmi, güvenli mekanizmanızı kullanmalısınız.

Aşağıdaki komutları çalıştırarak otomatik olarak imzalanan bir X.509 cihaz sertifikası oluşturun:

  cd azure-iot-sdk-node/provisioning/tools
  node create_test_cert.js device mytestselfcertprimary
  node create_test_cert.js device mytestselfcertsecondary 

İpucu

Cihaz kimliği harf, sayı ve - karakter içerebilir.

Bu komutlar aşağıdaki cihaz sertifikalarını oluşturur:

filename Içeriği
mytestselfcertprimary_cert.pem Birincil cihaz X509 sertifikasının genel bölümü
mytestselfcertprimary_key.pem Birincil cihaz X509 sertifikasının özel anahtarı
mytestselfcertprimary_fullchain.pem Birincil cihaz X509 sertifikası için anahtar zincirinin tamamı.
mytestselfcertprimary.pfx Birincil cihaz X509 sertifikası için PFX dosyası.
mytestselfcertsecondary_cert.pem İkincil cihaz X509 sertifikasının ortak bölümü
mytestselfcertsecondary_key.pem İkincil cihaz X509 sertifikasının özel anahtarı
mytestselfcertsecondary_fullchain.pem İkincil cihaz X509 sertifikası için tüm anahtarlık.
mytestselfcertsecondary.pfx İkincil cihaz X509 sertifikası için PFX dosyası.

Bireysel kayıt oluşturma

  1. Azure IoT Central uygulamasında Cihazlar'ı seçin ve termostat cihaz şablonundan cihaz kimliği mytestselfcertprimary olarak yeni bir cihaz oluşturun. Kimlik kapsamını not alın, daha sonra kullanacaksınız.

  2. Oluşturduğunuz cihazı açın ve Bağlan seçin.

  3. Kimlik Doğrulama türü olarak Bireysel kayıt ve Kimlik Doğrulama yöntemi olarak Sertifikalar (X.509) seçeneğini belirleyin.

  4. Daha önce birincil sertifika olarak oluşturduğunuz mytestselfcertprimary_cert.pem dosyasını karşıya yükleyin.

  5. Daha önce ikincil sertifika olarak oluşturduğunuz mytestselfcertsecondary_cert.pem dosyasını karşıya yükleyin. Ardından Kaydet'i seçin.

  6. Cihaz artık X.509 sertifikalarına sahip bireysel bir kayda sahiptir.

    Screenshot that shows how to connect a device using an X.509 individual enrollment.

Örnek bir kayıt cihazı çalıştırma

Windows kullanıyorsanız, örneğin çalışması için X.509 sertifikaları Windows sertifika deposunda olmalıdır. Windows Gezgini'nde, daha önce oluşturduğunuz PFX dosyalarına çift tıklayın - mytestselfcertprimary.pfx ve mytestselfcertsecondary.pfx. Sertifika İçeri Aktarma Sihirbazı'nda, depo konumu olarak Geçerli Kullanıcı'yı seçin, parola olarak girin 1234 ve sihirbazın sertifika depoyu otomatik olarak seçmesine izin verin. Sihirbaz sertifikaları geçerli kullanıcının kişisel deposuna aktarır.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. IoTHubDeviceSamples Visual Studio çözümünde, Parameter.cs dosyasını TemperatureController projesinde açın.

  2. Sınıfına aşağıdaki iki parametre tanımını ekleyin:

    [Option(
        'x',
        "CertificatePath",
        HelpText = "(Required if DeviceSecurityType is \"dps\"). \nThe device PFX file to use during device provisioning." +
        "\nDefaults to environment variable \"IOTHUB_DEVICE_X509_CERT\".")]
    public string CertificatePath { get; set; } = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_X509_CERT");
    
    [Option(
        'p',
        "CertificatePassword",
        HelpText = "(Required if DeviceSecurityType is \"dps\"). \nThe password of the PFX certificate file." +
        "\nDefaults to environment variable \"IOTHUB_DEVICE_X509_PASSWORD\".")]
    public string CertificatePassword { get; set; } = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_X509_PASSWORD");
    

    Değişiklikleri kaydedin.

  3. IoTHubDeviceSamples Visual Studio çözümünde, Program.cs dosyasını TemperatureController projesinde açın.

  4. Aşağıdaki using deyimlerini ekleyin:

    using System.Security.Cryptography.X509Certificates;
    using System.IO;
    
  5. sınıfına aşağıdaki yöntemi ekleyin:

    private static X509Certificate2 LoadProvisioningCertificate(Parameters parameters)
    {
        var certificateCollection = new X509Certificate2Collection();
        certificateCollection.Import(
            parameters.CertificatePath,
            parameters.CertificatePassword,
            X509KeyStorageFlags.UserKeySet);
    
        X509Certificate2 certificate = null;
    
        foreach (X509Certificate2 element in certificateCollection)
        {
            Console.WriteLine($"Found certificate: {element?.Thumbprint} {element?.Subject}; PrivateKey: {element?.HasPrivateKey}");
            if (certificate == null && element.HasPrivateKey)
            {
                certificate = element;
            }
            else
            {
                element.Dispose();
            }
        }
    
        if (certificate == null)
        {
            throw new FileNotFoundException($"{parameters.CertificatePath} did not contain any certificate with a private key.");
        }
    
        Console.WriteLine($"Using certificate {certificate.Thumbprint} {certificate.Subject}");
    
        return certificate;
    }
    
  6. yönteminde SetupDeviceClientAsync için case "dps" kod bloğunu aşağıdaki kodla değiştirin:

    case "dps":
        s_logger.LogDebug($"Initializing via DPS");
        Console.WriteLine($"Loading the certificate...");
        X509Certificate2 certificate = LoadProvisioningCertificate(parameters);
        DeviceRegistrationResult dpsRegistrationResult = await ProvisionDeviceAsync(parameters, certificate, cancellationToken);
        var authMethod = new DeviceAuthenticationWithX509Certificate(dpsRegistrationResult.DeviceId, certificate);
        deviceClient = InitializeDeviceClient(dpsRegistrationResult.AssignedHub, authMethod);
        break;
    
  7. ProvisionDeviceAsync yöntemini aşağıdaki kod ile değiştirin:

    private static async Task<DeviceRegistrationResult> ProvisionDeviceAsync(Parameters parameters, X509Certificate2 certificate, CancellationToken cancellationToken)
    {
        SecurityProvider security = new SecurityProviderX509Certificate(certificate);
        ProvisioningTransportHandler mqttTransportHandler = new ProvisioningTransportHandlerMqtt();
        ProvisioningDeviceClient pdc = ProvisioningDeviceClient.Create(parameters.DpsEndpoint, parameters.DpsIdScope, security, mqttTransportHandler);
    
        var pnpPayload = new ProvisioningRegistrationAdditionalData
        {
            JsonData = PnpConvention.CreateDpsPayload(ModelId),
        };
        return await pdc.RegisterAsync(pnpPayload, cancellationToken);
    }
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Projeye aşağıdaki ortam değişkenlerini ekleyin:

    • IOTHUB_DEVICE_DPS_DEVICE_ID: mytestselfcertprimary
    • IOTHUB_DEVICE_X509_CERT: <full path to folder that contains PFX files>mytestselfcertprimary.pfx
    • IOTHUB_DEVICE_X509_PASSWORD: 1234.
  2. Uygulamayı derleyin ve çalıştırın. Cihaz sağlamalarını başarıyla doğrulayın.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. Sıcaklık denetleyicisi cihaz örneği için pom.xml dosyasını ve src klasörünü içeren azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample klasörüne gidin.

  2. Düğüme aşağıdaki bağımlılık yapılandırmasını <dependencies> eklemek için pom.xml dosyasını düzenleyin:

    <dependency>
        <groupId>com.microsoft.azure.sdk.iot.provisioning.security</groupId>
        <artifactId>${x509-provider-artifact-id}</artifactId>
        <version>${x509-provider-version}</version>
    </dependency>
    

    Değişiklikleri kaydedin.

  3. Metin düzenleyicinizde src/main/java/samples/com/microsoft/azure/sdk/iot/device/TemperatureController.java dosyasını açın.

  4. İçeri aktarmayı SecurityProviderSymmetricKey aşağıdaki içeri aktarmalarla değiştirin:

    import com.microsoft.azure.sdk.iot.provisioning.security.SecurityProvider;
    import com.microsoft.azure.sdk.iot.provisioning.security.hsm.SecurityProviderX509Cert;
    import com.microsoft.azure.sdk.iot.provisioning.security.exceptions.SecurityProviderException;
    
  5. Aşağıdaki içeri aktarmayı ekleyin:

    import java.nio.file.*;
    
  6. Yönteminin attığı özel durumlar main listesine ekleyinSecurityProviderException:

    public static void main(String[] args) throws IOException, URISyntaxException, ProvisioningDeviceClientException, InterruptedException, SecurityProviderException {
    
  7. initializeAndProvisionDevice yöntemini aşağıdaki kod ile değiştirin:

    private static void initializeAndProvisionDevice() throws ProvisioningDeviceClientException, IOException, URISyntaxException, InterruptedException, SecurityProviderException {
        String deviceX509Key = new String(Files.readAllBytes(Paths.get(System.getenv("IOTHUB_DEVICE_X509_KEY"))));
        String deviceX509Cert = new String(Files.readAllBytes(Paths.get(System.getenv("IOTHUB_DEVICE_X509_CERT"))));
        SecurityProvider securityProviderX509 = new SecurityProviderX509Cert(deviceX509Cert, deviceX509Key, null);
        ProvisioningDeviceClient provisioningDeviceClient;
        ProvisioningStatus provisioningStatus = new ProvisioningStatus();
    
        provisioningDeviceClient = ProvisioningDeviceClient.create(globalEndpoint, scopeId, provisioningProtocol, securityProviderX509);
    
        AdditionalData additionalData = new AdditionalData();
        additionalData.setProvisioningPayload(com.microsoft.azure.sdk.iot.provisioning.device.plugandplay.PnpHelper.createDpsPayload(MODEL_ID));
    
        provisioningDeviceClient.registerDevice(new ProvisioningDeviceClientRegistrationCallbackImpl(), provisioningStatus, additionalData);
    
        while (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() != ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ASSIGNED)
        {
            if (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ERROR ||
                    provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_DISABLED ||
                    provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_FAILED)
            {
                provisioningStatus.exception.printStackTrace();
                System.out.println("Registration error, bailing out");
                break;
            }
            System.out.println("Waiting for Provisioning Service to register");
            Thread.sleep(MAX_TIME_TO_WAIT_FOR_REGISTRATION);
        }
    
        ClientOptions options = new ClientOptions();
        options.setModelId(MODEL_ID);
    
        if (provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ASSIGNED) {
            System.out.println("IotHUb Uri : " + provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getIothubUri());
            System.out.println("Device ID : " + provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getDeviceId());
    
            String iotHubUri = provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getIothubUri();
            String deviceId = provisioningStatus.provisioningDeviceClientRegistrationInfoClient.getDeviceId();
    
            log.debug("Opening the device client.");
            deviceClient = DeviceClient.createFromSecurityProvider(iotHubUri, deviceId, securityProviderX509, IotHubClientProtocol.MQTT, options);
            deviceClient.open();
        }
    }
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_DPS_DEVICE_ID=mytestselfcertprimary
    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>mytestselfcertprimary_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>mytestselfcertprimary_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Uygulamayı derleyin ve çalıştırın. Cihaz sağlamalarını başarıyla doğrulayın.

Yukarıdaki adımları mytestselfcertsecondary sertifikası için de yineleyebilirsiniz.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. pnp_temperature_controller.js uygulamasını içeren azure-iot-sdk-node/device/samples/javascript klasörüne gidin ve X.509 paketini yüklemek için aşağıdaki komutu çalıştırın:

    npm install azure-iot-security-x509 --save
    
  2. pnp_temperature_controller.js dosyasını bir metin düzenleyicisinde açın.

  3. require Deyimlerini aşağıdaki kodu içerecek şekilde düzenleyin:

    const fs = require('fs');
    const X509Security = require('azure-iot-security-x509').X509Security;
    
  4. Değişkeni başlatmak deviceCert için "DPS bağlantı bilgileri" bölümüne aşağıdaki dört satırı ekleyin:

    const deviceCert = {
      cert: fs.readFileSync(process.env.IOTHUB_DEVICE_X509_CERT).toString(),
      key: fs.readFileSync(process.env.IOTHUB_DEVICE_X509_KEY).toString()
    };
    
  5. provisionDevice İlk satırı aşağıdaki kodla değiştirerek istemciyi oluşturan işlevi düzenleyin:

    var provSecurityClient = new X509Security(registrationId, deviceCert);
    
  6. Aynı işlevde değişkeni ayarlayan deviceConnectionString satırı aşağıdaki gibi değiştirin:

    deviceConnectionString = 'HostName=' + result.assignedHub + ';DeviceId=' + result.deviceId + ';x509=true';
    
  7. işlevinde main , öğesini çağıran Client.fromConnectionStringsatırın arkasına aşağıdaki satırı ekleyin:

    client.setOptions(deviceCert);
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_DPS_DEVICE_ID=mytestselfcertprimary
    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>mytestselfcertprimary_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>mytestselfcertprimary_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Betiği yürüterek cihaz sağlamalarını başarıyla doğrulayın:

    node pnp_temperature_controller.js
    

Yukarıdaki adımları mytestselfcertsecondary sertifikası için de yineleyebilirsiniz.

Örnek kodu X.509 sertifikalarını kullanacak şekilde değiştirmek için:

  1. azure-iot-device/samples/pnp klasörüne gidin ve temp_controller_with_thermostats.py dosyasını bir metin düzenleyicisinde açın.

  2. X.509 işlevselliğini içeri aktarmak için aşağıdaki from deyimi ekleyin:

    from azure.iot.device import X509
    
  3. İşlevin ilk bölümünü provision_device aşağıdaki gibi değiştirin:

    async def provision_device(provisioning_host, id_scope, registration_id, x509, model_id):
        provisioning_device_client = ProvisioningDeviceClient.create_from_x509_certificate(
            provisioning_host=provisioning_host,
            registration_id=registration_id,
            id_scope=id_scope,
            x509=x509,
        )
    
  4. işlevinde main değişkeni ayarlayan symmetric_key satırı aşağıdaki kodla değiştirin:

    x509 = X509(
        cert_file=os.getenv("IOTHUB_DEVICE_X509_CERT"),
        key_file=os.getenv("IOTHUB_DEVICE_X509_KEY"),
    )
    
  5. işlevinde main işlevine yapılan çağrıyı provision_device aşağıdaki kodla değiştirin:

    registration_result = await provision_device(
        provisioning_host, id_scope, registration_id, x509, model_id
    )
    
  6. işlevinde main işlevine yapılan çağrıyı IoTHubDeviceClient.create_from_symmetric_key aşağıdaki kodla değiştirin:

    device_client = IoTHubDeviceClient.create_from_x509_certificate(
        x509=x509,
        hostname=registration_result.registration_state.assigned_hub,
        device_id=registration_result.registration_state.device_id,
        product_info=model_id,
    )
    

    Değişiklikleri kaydedin.

Örneği çalıştırmak için:

  1. Kabuk ortamınıza aşağıdaki iki ortam değişkenini ekleyin. PEM dosyalarının tam yolunu sağladığınızdan ve işletim sisteminiz için doğru yol sınırlayıcısını kullandığınızdan emin olun:

    set IOTHUB_DEVICE_DPS_DEVICE_ID=mytestselfcertprimary
    set IOTHUB_DEVICE_X509_CERT=<full path to folder that contains PEM files>mytestselfcertprimary_cert.pem
    set IOTHUB_DEVICE_X509_KEY=<full path to folder that contains PEM files>mytestselfcertprimary_key.pem
    

    İpucu

    İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisini tamamladığınızda diğer gerekli ortam değişkenlerini ayarlarsınız.

  2. Betiği yürüterek cihaz sağlamalarını başarıyla doğrulayın:

    python temp_controller_with_thermostats.py
    

Yukarıdaki adımları mytestselfcertsecondary sertifikası için de yineleyebilirsiniz.

IoT Edge cihazına bağlanma

Bu bölümde IoT Edge cihazınızı bağlamak için bir grup kaydı kullandığınız varsayılır. Aşağıdakiler için önceki bölümlerdeki adımları izleyin:

X.509 cihaz sertifikasını kullanarak IoT Edge cihazını IoT Central'a bağlamak için:

  • Cihaz sertifikasını ve anahtar dosyalarını IoT Edge cihazınıza kopyalayın. Önceki grup kaydı örneğinde bu dosyalar sampleDevice01_key.pem ve sampleDevice01_cert.pem olarak adlandırılıyordu.

  • IoT Edge cihazında /etc/aziot/config.toml yapılandırma dosyasındaki bölümü aşağıdaki gibi düzenleyinprovisioning:

    # DPS X.509 provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "<SCOPE_ID>"
      attestation:
        method: "x509"
    #   registration_id: "<OPTIONAL REGISTRATION ID. LEAVE COMMENTED OUT TO REGISTER WITH CN OF identity_cert>"
        identity_cert: "file:///<path>/sampleDevice01_cert.pem"
        identity_pk: "file:///<path>/sampleDevice01_key.pem"
    #  always_reprovision_on_startup: true
    #  dynamic_reprovisioning: false
    
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "<SCOPE_ID>"
    
    [provisioning.attestation]
    method = "x509"
    registration_id = "env-sens-001"
    identity_pk = "file:///<path>/envSens001_key.pem"
    identity_cert = "file:///<path>/envSens001_cert.pem"
    

    İpucu

    için registration_idbir değer eklemeniz gerekmez. IoT Edge, X.509 sertifikasındaki CN değerini kullanabilir.

  • IoT Edge çalışma zamanını yeniden başlatmak için aşağıdaki komutu çalıştırın:

    sudo iotedge config apply
    

Daha fazla bilgi edinmek için bkz . X.509 sertifikalarını kullanarak Linux'ta uygun ölçekte IoT Edge cihazları oluşturma ve sağlama.

IoT Edge'e aşağı akış cihazı Bağlan

IoT Edge, aşağı akış cihazları ile saydam bir ağ geçidi işlevi görürken IoT Edge cihazı arasındaki bağlantının güvenliğini sağlamak için X.509 sertifikalarını kullanır. Bu senaryoyı yapılandırma hakkında daha fazla bilgi edinmek için bkz. Aşağı akış cihazını Azure IoT Edge ağ geçidine Bağlan.

X.509 cihaz sertifikalarınızı alma

IoT Central uygulamanızın yaşam döngüsü boyunca X.509 sertifikalarınızı almanız gerekebilir. Örneğin:

  • Güvenlik ihlaliniz varsa, sıralı sertifikalar sisteminizin güvenliğini sağlamaya yardımcı olmak için en iyi güvenlik uygulamasıdır.
  • X.509 sertifikalarının bitiş tarihleri vardır. Sertifikalarınızı alma sıklığı, çözümünüzün güvenlik gereksinimlerine bağlıdır. Son derece hassas veriler içeren çözümlere sahip müşteriler her gün sertifika alabilirken, diğerleri birkaç yılda bir sertifikalarını alabilir.

Kesintisiz bağlantı için IoT Central, birincil ve ikincil X.509 sertifikalarını yapılandırmanıza olanak tanır. Birincil ve ikincil sertifikaların bitiş tarihleri farklıysa, cihazlar diğer sertifikayla bağlanmaya devam ederken süresi dolan sertifikayı alabilirsiniz.

Daha fazla bilgi edinmek için bkz . İhlal Yöntemini Varsay.

Bu bölümde, IoT Central'da sertifikaların nasıl yuvarlandığı açıklanmaktadır. IoT Central'da bir sertifika aldığınızda, yeni cihaz sertifikasını cihazlarınıza da kopyalamanız gerekir.

Yeni X.509 sertifikaları alma

Sertifika sağlayıcınızdan yeni X.509 sertifikaları alın. OpenSSL gibi bir araç kullanarak kendi X.509 sertifikalarınızı oluşturabilirsiniz. Bu yaklaşım, X.509 sertifikalarını test etmede kullanışlıdır ancak birkaç güvenlik garantisi sağlar. Bu yaklaşımı yalnızca kendi CA sağlayıcınız olarak hareket etmeye hazır değilseniz test için kullanın.

Kayıt grupları ve güvenlik ihlalleri

Güvenlik ihlaline yanıt olarak bir grup kaydını güncelleştirmek için geçerli sertifikayı hemen güncelleştirmek için aşağıdaki yaklaşımı kullanmanız gerekir. Her ikisi de tehlikeye girerse birincil ve ikincil sertifikalar için şu adımları tamamlayın:

  1. Sol bölmede İzinler'e gidin ve Cihaz bağlantı grupları'nı seçin.

  2. Kayıt grupları altındaki listeden grup adını seçin.

  3. Sertifika güncelleştirmesi için Birincili yönet'i veya İkincil'i Yönet'i seçin.

  4. Kayıt grubuna kök X.509 sertifikası ekleyin ve doğrulayın.

Bireysel kayıtlar ve güvenlik ihlalleri

Güvenlik ihlaline yanıt olarak sertifikalar dağıtıyorsanız geçerli sertifikayı hemen güncelleştirmek için aşağıdaki yaklaşımı kullanın. Her ikisi de tehlikeye girerse birincil ve ikincil sertifikalar için şu adımları tamamlayın:

  1. Cihazlar'ı ve ardından cihazı seçin.

  2. Bağlan'ı seçin ve connect yöntemini Bireysel Kayıt olarak seçin

  3. Mekanizma olarak Sertifikalar (X.509) seçeneğini belirleyin.

  4. Sertifika güncelleştirmesi için, kayıt girdisi için karşıya yüklenecek yeni sertifikayı seçmek üzere klasör simgesini seçin. Kaydet'i seçin.

Kayıt grupları ve sertifika süre sonu

Sertifika süre sonlarını işlemek için geçerli sertifikayı hemen güncelleştirmek için aşağıdaki yaklaşımı kullanın:

  1. Sol bölmede İzinler'e gidin ve Cihaz bağlantı grupları'nı seçin.

  2. Kayıt grupları altındaki listeden grup adını seçin.

  3. Sertifika güncelleştirmesi için Birincili Yönet'i seçin.

  4. Kayıt grubuna kök X.509 sertifikası ekleyin ve doğrulayın.

  5. daha sonra ikincil sertifikanın süresi dolduğunda geri dönün ve ikincil sertifikayı güncelleştirin.

Bireysel kayıtlar ve sertifika süre sonu

Sertifika süre sonlarını işlemek için sertifikaları sıralarsanız, uygulamanızda sağlama yapmaya çalışan cihazların kapalı kalma süresini azaltmak için ikincil sertifika yapılandırmasını aşağıdaki gibi kullanmanız gerekir.

İkincil sertifika süre sonu yaklaştığında ve alınması gerektiğinde, birincil yapılandırmayı kullanarak döndürebilirsiniz. Birincil ve ikincil sertifikalar arasında bu şekilde döndürmek, uygulamanızda sağlama yapmaya çalışan cihazların kapalı kalma süresini azaltır.

  1. Cihazlar'ı ve ardından cihazı seçin.

  2. Bağlan'ı seçin ve connect yöntemini Bireysel Kayıt olarak seçin

  3. Mekanizma olarak Sertifikalar (X.509) seçeneğini belirleyin.

  4. İkincil sertifika güncelleştirmesi için klasör simgesini seçerek kayıt girdisi için karşıya yüklenecek yeni sertifikayı seçin. Kaydet'i seçin.

  5. Daha sonra birincil sertifikanın süresi dolduğunda geri dönün ve birincil sertifikayı güncelleştirin.