目次
はじめに
こんにちは、omkです。
最近IoTできてなかったので久々にIoTします。
さて、今回はAWS発行の証明書ではなく、自前の証明書を使ってAWS IoTにデバイスを接続しようと思います。
シングルアカウントモードでCAを登録して手動でクライアント証明書を登録して接続できるところまで出来たので記事にしてみます。
自動でクライアント証明書を登録するところは次の記事で書こうと思いますのでもし良ければそちらもお待ち下さい。
やってみた
まずはEasy-RSAでPKIを作成してCA証明書を発行します。
$ cd ./easy-rsa/easyrsa3/
$ ./easyrsa init-pki
$ ./easyrsa build-ca nopass
これでCAが作成されました。
次にシングルアカウントモードでCAを登録するために検証証明書を作ります。
検証証明書に必要な登録コードはコンパネの登録画面から取得できます。
以下のコマンドでも取得できます。
$ aws iot get-registration-code
検証証明書を発行します。
$ ./easyrsa build-client-full {登録コード} nopass
コモンネームが登録コードのクライアント証明書が発行されます。
作成された「ca.crt」と「{登録コード}.crt」をダウンロードしてコンパネにアップします。
CAステータスをアクティブにして登録します。
これでCA証明書の登録が完了しました。
次に接続用のクライアント証明書を発行して接続してみます。
$ ./easyrsa build-client-full {クライアント名} nopass
証明書と秘密鍵をダウンロードしておきます。
これらをクライアントデバイスにアップロードして使えるようにしておきます。
この時点ではクライアントからAWS IoTに接続してもクライアント証明書が登録されていないので接続することはできません。
また、「証明書の自動登録」をオンにしている場合はクライアントから接続リクエストがあった時点で登録されたCAから発行された証明書でリクエストが来た場合にコンパネの証明書一覧に「保留中」という形で設定されます(アクティブにしない限りやはり接続はできないです)。
では、コンパネからクライアント証明書を追加していきます。
「証明書を登録」画面から「登録されたCA」を選択して作成したクライアント証明書をアップしてアクティブにします。
これでクライアント証明書の登録が完了しました。
あとはクライアント証明書に適切なポリシーを設定することでクライアントデバイスをAWS IoTに接続することが出来ます。
ちなみにクライアントを接続する際に利用するCA証明書は独自のCA証明書ではなくAWS発行のCA証明書を利用する必要があるのでご注意ください。
おわりに
独自の証明書を利用してAWS IoTに接続してみました。
手動登録だと一々クライアント証明書を登録する必要があるので自動登録出来るようにする方が便利ですね。
次回は登録済みCAから発行されたクライアント証明書を利用したリクエストがあった際に自動で登録して接続できるようになるところまでを書いていきます。
以上、最後までお付き合いありがとうございました。
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!