CAの登録

デバイスが最初にAWS IoTに接続しようとしたときに、デバイスのプロビジョニングを行います。ジャストインタイムプロビジョニング(JITP)設定は、CA証明書に対して行います。自動登録を有効にし、プロビジョニングテンプレートを、デバイスのプロビジョニングに使用するデバイス証明書の署名に使用されるCA証明書に関連付けます。

このセクションでは、独自のCAを作成してAWS IoTに登録し、Just-in-time provisioning用のテンプレートを準備して、AWS IoTに接続するだけで新しいデバイスを登録できるようにします。

鍵・CSR・パラメータの生成

CA用のディレクトリに移動します。

cd ~/CA

CAの秘密鍵と証明書署名要求(CSR)を生成します。

openssl req -nodes -new -newkey rsa:2048 \
            -keyout private/cakey.pem -out csrs/cacsr.pem \
            -config iot-dm-ws-ssl.cnf

上記のコマンドを入力すると、いくつかの情報を求められるので以下のように入力します。:のあとに表記がないものについては、そのままEnterを押して次に進みます。

Tokyoリージョン以外で実施されている場合は、適宜読み替えてください。 例) Oregonリージョンの場合、JP -> US、Tokyo -> Ohio

Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Tokyo]:
Organization Name (eg, company) [IoT]:
Organizational Unit Name (eg, section) [Workshop]:
Common Name (eg, your name or your server's hostname) []:CA
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

キーとCSRが作成されました。次に、自己署名CA証明書を作成します。

openssl ca -in csrs/cacsr.pem -out cacert.pem \
           -selfsign -extensions v3_ca \
           -config iot-dm-ws-ssl.cnf

証明書の署名を確認し、リクエストをコミットするかどうかを尋ねるプロンプトが表示されます。両方の質問にyキーで答えます。

Certificate is to be certified until Feb  5 09:10:08 2020 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

作成したCA証明書をAWS IoTに登録します。 AWS IoTから登録コードを取得します。このコードは、秘密鍵を検証する証明書の共通名として使用されます

aws iot get-registration-code

表示された登録用コードをコピーします。 秘密鍵とCSRを作成します。

openssl req -nodes -new -newkey rsa:2048 \
            -keyout private/iot-registration.key \
            -out csrs/iot-registration.csr \
            -config iot-dm-ws-ssl.cnf

上記のコマンドを入力すると、いくつかの情報を求められるので以下のように入力します。:のあとに表記がないものについては、そのままEnterを押して次に進みます。

Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Tokyo]:
Organization Name (eg, company) [IoT]:
Organizational Unit Name (eg, section) [Workshop]:
Common Name (eg, your name or your server's hostname) []:"ここに先程の登録用コードをペーストします"
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

CSRからVerification証明書を作成します。

openssl ca -in csrs/iot-registration.csr \
           -out certs/iot-registration.crt \
           -config iot-dm-ws-ssl.cnf

証明書の署名を確認し、リクエストをコミットするかどうかを尋ねるプロンプトが表示されます。両方の質問にyキーで答えます。

Certificate is to be certified until Feb  5 08:43:18 2020 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

作成した証明書を使用して、AWS IoTにCA証明書を登録します

aws iot register-ca-certificate \
        --ca-certificate file://cacert.pem \
        --verification-cert file://certs/iot-registration.crt

CA証明書が正常に登録されていることを確認します。[YOUR_CA_CERTIFICATE_ID]部分を上記のコマンドのcertificateIdに置き換えます。

CA_CERTIFICATE_ID=[YOUR_CA_CERTIFICATE_ID]
aws iot describe-ca-certificate --certificate-id $CA_CERTIFICATE_ID

CA証明書をアクティブ化します。

aws iot update-ca-certificate --new-status ACTIVE --certificate-id $CA_CERTIFICATE_ID