チュートリアル: Microsoft 提供のスクリプトを使用してテスト証明書を作成するTutorial: Using Microsoft-supplied scripts to create test certificates

Microsoft では、独自の X.509 証明書を作成し、IoT ハブで認証する方法を学ぶうえで役立つ PowerShell スクリプトと Bash スクリプトをご用意しています。Microsoft provides PowerShell and Bash scripts to help you understand how to create your own X.509 certificates and authenticate them to an IoT Hub. スクリプトは、GitHub リポジトリにあります。The scripts are located in a GitHub repository. いずれも、デモンストレーションのみを目的としたものです。They are provided for demonstration purposes only. これらを使って作成した証明書は、運用環境で使用しないでください。Certificates created by them must not be used for production. 証明書は固定のパスワード ("1234") が含まれており、30 日後に期限切れになります。The certificates contain hard-coded passwords (“1234”) and expire after 30 days. 運用環境では、証明書の作成と有効期間の管理について、独自のベスト プラクティスを使用する必要があります。For a production environment, you'll need to use your own best practices for certificate creation and lifetime management.

Powershell スクリプトPowerShell scripts

手順 1 - 設定Step 1 - Setup

OpenSSL for Windows を入手します。Get OpenSSL for Windows. https://www.openssl.org/docs/faq.html#MISC4 でダウンロードの場所を確認するか、https://www.openssl.org/source/ を参照してソースからビルドします。See https://www.openssl.org/docs/faq.html#MISC4 for places to download it or https://www.openssl.org/source/ to build from source. そのうえで、準備スクリプトを実行します。Then run the preliminary scripts:

  1. この GitHub リポジトリから、作業場所とするローカル ディレクトリにスクリプトをコピーします。Copy the scripts from this GitHub repository into the local directory in which you want to work. ファイルはいずれも、このディレクトリの子として作成されます。All files will be created as children of this directory.

  2. 管理者として PowerShell を起動します。Start PowerShell as an administrator.

  3. スクリプトを読み込んだディレクトリに変更を加えます。Change to the directory where you loaded the scripts.

  4. コマンド ラインで、環境変数 $ENV:OPENSSL_CONF を OpenSSL 構成ファイル (openssl.cnf) が置かれているディレクトリに設定します。On the command line, set the environment variable $ENV:OPENSSL_CONF to the directory in which the openssl configuration file (openssl.cnf) is located.

  5. Set-ExecutionPolicy -ExecutionPolicy Unrestricted を実行して、PowerShell がスクリプトを実行できるようにします。Run Set-ExecutionPolicy -ExecutionPolicy Unrestricted so that PowerShell can run the scripts.

  6. . .\ca-certs.ps1 を実行します。Run . .\ca-certs.ps1. これにより、スクリプトの関数が PowerShell のグローバル名前空間に取り込まれます。This brings the functions of the script into the PowerShell global namespace.

  7. Test-CACertsPrerequisites を実行します。Run Test-CACertsPrerequisites. PowerShell では、Windows 証明書ストアを使用して証明書を管理します。PowerShell uses the Windows Certificate Store to manage certificates. このコマンドを使うと、OpenSSL を正しく設定できており、後から既存の証明書との間に名前の競合が発生することがないことを確認できます。This command verifies that there won't be name collisions later with existing certificates and that OpenSSL is setup correctly.

手順 2 - 証明書の作成Step 2 - Create certificates

New-CACertsCertChain [ecc|rsa] を実行します。Run New-CACertsCertChain [ecc|rsa]. CA 証明書には ECC をお勧めしますが、必須ではありません。ECC is recommended for CA certificates but not required. このスクリプトは、ディレクトリと Windows 証明書ストアを次の CA 証明書と中間証明書で更新するものです。This script updates your directory and Windows Certificate store with the following CA and intermediate certificates:

  • intermediate1.pemintermediate1.pem
  • intermediate2.pemintermediate2.pem
  • intermediate3.pemintermediate3.pem
  • RootCA.cerRootCA.cer
  • RootCA.pemRootCA.pem

スクリプトを実行した後は、IoT ハブに新しい CA 証明書 (RootCA pem) を追加します。After running the script, add the new CA certificate (RootCA.pem) to your IoT Hub:

  1. IoT ハブにアクセスし、[証明書] に移動します。Go to your IoT Hub and navigate to Certificates.

  2. [追加] を選択します。Select Add.

  3. CA 証明書の表示名を入力します。Enter a display name for the CA certificate.

  4. CA 証明書をアップロードします。Upload the CA certificate.

  5. [保存] を選択します。Select Save.

手順 3 - 所有証明Step 3 - Prove possession

CA 証明書を IoT ハブにアップロードしたので、その所有者が自分であることを証明する必要があります。Now that you've uploaded your CA certificate to your IoT Hub, you'll need to prove that you actually own it:

  1. 新しいルート CA 証明書を選択します。Select the new CA certificate.

  2. [証明書の詳細] ダイアログで、 [確認コードを生成します] を選択します。Select Generate Verification Code in the Certificate Details dialog. 詳細については、CA 証明書の所有証明に関するページを参照してください。For more information, see Prove Possession of a CA certificate.

  3. 確認コードを含む証明書を作成します。Create a certificate that contains the verification code. たとえば、確認コードが "106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288" であれば、次を実行すると、作業ディレクトリに CN = 106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288 というサブジェクトが含まれる新しい証明書が作成されます。For example, if the verification code is "106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288", run the following to create a new certificate in your working directory containing the subject CN = 106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288. このスクリプトでは、VerifyCert4.cer という名前の証明書が作成されます。The script creates a certificate named VerifyCert4.cer.

    New-CACertsVerificationCert "106A5SD242AF512B3498BD609C4941E66R34H268DDB3288"

  4. [証明書の詳細] ダイアログで、VerifyCert4.cer を IoT ハブにアップロードします。Upload VerifyCert4.cer to your IoT Hub in the Certificate Details dialog.

  5. [認証] を選択します。Select Verify.

手順 4 - 新しいデバイスの作成Step 4 - Create a new device

IoT ハブ用のデバイスを作成します。Create a device for your IoT Hub:

  1. IoT ハブで、 [IoT デバイス] セクションに移動します。In your IoT Hub, navigate to the IoT Devices section.

  2. mydevice という ID の新しいデバイスを追加します。Add a new device with ID mydevice.

  3. 認証には、 [X.509 CA 署名済み] を選択します。For authentication, choose X.509 CA Signed.

  4. New-CACertsDevice mydevice を実行して、新しいデバイス証明書を作成します。Run New-CACertsDevice mydevice to create a new device certificate. これにより、作業ディレクトリに次のファイルが作成されます。This creates the following files in your working directory:

    • mydevice.pfx
    • mydevice-all.pem
    • mydevice-private.pem
    • mydevice-public.pem

手順 5 - デバイス証明書のテストStep 5 - Test your device certificate

証明書認証のテスト」を参照し、デバイス証明書で IoT ハブに認証できるかどうかを確認します。Go to Testing Certificate Authentication to determine if your device certificate can authenticate to your IoT Hub. PFX バージョンの証明書 (mydevice.pfx) が必要になります。You will need the PFX version of your certificate, mydevice.pfx.

手順 6 - クリーンアップStep 6 - Cleanup

[スタート] メニューから [コンピューター証明書の管理] を開き、 [証明書 - ローカル コンピューター] > [個人] の順に移動します。From the start menu, open Manage Computer Certificates and navigate to Certificates - Local Computer > personal. "Azure IoT CA TestOnly*" によって発行された証明書を削除します。Remove certificates issued by "Azure IoT CA TestOnly*". 同じように、 [信頼されたルート証明機関] > [証明書] と [中間証明機関] > [証明書] からも、該当する証明書を削除します。Similarly remove the appropriate certificates from >Trusted Root Certification Authority > Certificates and >Intermediate Certificate Authorities > Certificates.

Bash スクリプトBash Scripts

手順 1 - 設定Step 1 - Setup

  1. Bash を起動します。Start Bash.

  2. 作業場所とするディレクトリに変更を加えます。Change to the directory in which you want to work. すべてのファイルがこのディレクトリに作成されます。All files will be created in this directory.

  3. *.cnf*.sh を作業ディレクトリにコピーします。Copy *.cnf and *.sh to your working directory.

手順 2 - 証明書の作成Step 2 - Create certificates

  1. ./certGen.sh create_root_and_intermediate を実行します。Run ./certGen.sh create_root_and_intermediate. これにより、certs ディレクトリに次のファイルが作成されます。This creates the following files in the certs directory:

    • azure-iot-test-only.chain.ca.cert.pemazure-iot-test-only.chain.ca.cert.pem
    • azure-iot-test-only.intermediate.cert.pemazure-iot-test-only.intermediate.cert.pem
    • azure-iot-test-only.root.ca.cert.pemazure-iot-test-only.root.ca.cert.pem
  2. IoT ハブにアクセスし、 [証明書] に移動します。Go to your IoT Hub and navigate to Certificates.

  3. [追加] を選択します。Select Add.

  4. CA 証明書の表示名を入力します。Enter a display name for the CA certificate.

  5. CA 証明書だけを IoT ハブにアップロードします。Upload only the CA certificate to your IoT Hub. 証明書の名前は ./certs/azure-iot-test-only.root.ca.cert.pem. です。The name of the certificate is ./certs/azure-iot-test-only.root.ca.cert.pem.

  6. [保存] を選択します。Select Save.

手順 3 - 所有証明Step 3 - Prove possession

  1. 前の手順で作成した新しい CA 証明書を選択します。Select the new CA certificate created in the preceding step.

  2. [証明書の詳細] ダイアログで、 [確認コードを生成します] を選択します。Select Generate Verification Code in the Certificate Details dialog. 詳細については、CA 証明書の所有証明に関するページを参照してください。For more information, see Prove Possession of a CA certificate.

  3. 確認コードを含む証明書を作成します。Create a certificate that contains the verification code. たとえば、確認コードが "106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288" であれば、次を実行すると、作業ディレクトリに verification-code.cert.pem という名前で、CN = 106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288 というサブジェクトが含まれる新しい証明書が作成されます。For example, if the verification code is "106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288", run the following to create a new certificate in your working directory named verification-code.cert.pem which contains the subject CN = 106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288.

    ./certGen.sh create_verification_certificate "106A5SD242AF512B3498BD6098C4941E66R34H268DDB3288"

  4. その証明書を、 [証明書の詳細] ダイアログで IoT ハブにアップロードします。Upload the certificate to your IoT hub in the Certificate Details dialog.

  5. [認証] を選択します。Select Verify.

手順 4 - 新しいデバイスの作成Step 4 - Create a new device

IoT ハブ用のデバイスを作成します。Create a device for your IoT hub:

  1. IoT ハブで、[IoT デバイス] セクションに移動します。In your IoT Hub, navigate to the IoT Devices section.

  2. mydevice という ID の新しいデバイスを追加します。Add a new device with ID mydevice.

  3. 認証には、 [X.509 CA 署名済み] を選択します。For authentication, choose X.509 CA Signed.

  4. ./certGen.sh create_device_certificate mydevice を実行して、新しいデバイス証明書を作成します。Run ./certGen.sh create_device_certificate mydevice to create a new device certificate. これにより、作業ディレクトリに new-device.cert.pemnew-device.cert.pfx の 2 ファイルが作成されます。This creates two files named new-device.cert.pem and new-device.cert.pfx files in your working directory.

手順 5 - デバイス証明書のテストStep 5 - Test your device certificate

証明書認証のテスト」を参照し、デバイス証明書で IoT ハブに認証できるかどうかを確認します。Go to Testing Certificate Authentication to determine if your device certificate can authenticate to your IoT Hub. PFX バージョンの証明書 (new-device.cert.pfx) が必要になります。You will need the PFX version of your certificate, new-device.cert.pfx.

手順 6 - クリーンアップStep 6 - Cleanup

今回の Bash スクリプトは作業ディレクトリに証明書を作成するだけのものなので、テストの完了後は証明書を削除します。Because the bash script simply creates certificates in your working directory, just delete them when you are done testing.

次の手順Next Steps

証明書をテストするために、「証明書認証のテスト」を参照しながら、証明書を使ってデバイスを IoT ハブに認証できるかどうかを確認してください。To test your certificate, go to Testing Certificate Authentication to determine if your certificate can authenticate your device to your IoT Hub.