シンプルなデバイス登録
このチュートリアルでは、既存の一括デバイス登録を使用して、Things Cloud でテナントの認証局(CA)によって署名されたデバイス証明書を作成する方法を学びます。
より多くのデバイスを接続するために、Things Cloud ではデバイスを一括登録するオプションを提供しています。つまり、CSVファイルをアップロードして多数のデバイスを登録できます。
CSVファイルには、デバイス識別子として少なくとも ID、AUTH_TYPE として CERTIFICATES、デバイスのワンタイムパスワードとして ENROLLMENT_OTP を含める必要があります。
これらの列に加えて、次の例に示すように、ICCID、NAME、TYPE などの他の列を含めることもできます。
ID;TYPE;NAME;ICCID;IDTYPE;PATH;SHELL;AUTH_TYPE;ENROLLMENT_OTP
006064ce800a;c8y_Device;Sample_Device1;+491555555;c8y_Serial;bulk group/subgroup1;1;CERTIFICATES;somePassword@123
006064ce8077;c8y_Device;Sample_Device2;+491555555;c8y_Serial;bulk group/subgroup2;1;CERTIFICATES;password@345
- これらのEST Enrollment Over Secure Transport デバイスは、一括デバイス登録リストに追加され、ステータスは「Accepted」に設定されます。
- これらの登録OTP(列
ENROLLMENT_OTPの値)は、一時的なデバイスユーザーの認証情報として機能し、/.well-known/est/simpleenrollエンドポイントを呼び出す際の認証に使用されます。 - この機能強化により、複数デバイスの登録プロセスが簡素化され、シームレスで安全なオンボーディング体験が確保されます。
前提条件
このチュートリアルに従うには、次の前提条件を確認してください:
- Things Cloud にアクセスするための有効なテナント、ユーザー、パスワードがあること。
- このテナントの認証局(CA)がすでに作成されていること。
デバイス証明書を登録する
新しいデバイス証明書を作成すると、デバイス登録(Enroll)APIが呼び出されます。これにより、次のアクションがトリガーされます:
- デバイス登録(Enroll)APIは、デバイスが新しい証明書を取得するために使用されます。
- CAが利用できない場合、
Tenant CA certificate is either missing, expired, or has a validity of less than one yearというメッセージでエラーが発生します。 - テナントのキーペアが見つからない場合、
Failed to retrieve tenant keypairというメッセージでエラーが発生します。 - 証明書署名要求(CSR)のサブジェクトにあるCommon Name(CN)フィールドは、デバイス登録プロセス中に指定されたデバイスIDと完全に一致している必要があります。リクエストに有効な証明書署名要求が含まれていない場合、エラーが返されます。
備考
EST標準に従い、レスポンスの証明書はデフォルトで
PKCS7 形式です。クライアントは、リクエストヘッダーで Accept: application/pkcs10 を送信することで、任意で PKCS10 形式を要求できます。以下は Accept: application/pkcs10 なし(デフォルト)のRESTリクエスト例です:
POST /.well-known/est/simpleenroll
Authorization: Basic <<Base64 encoded bootstrap credentials>>
Content-Type: application/pkcs10
Content-Transfer-Encoding: base64
...
{
MIICVjCCAT4CAQAwETEPMA0GA1UEAwwGSWRfMTA0MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAtz41ucrtb28Hk4FDkGK19DRHD6Z3oyZ6CtS1xycWkf9h
za+6DI6ugBLRsxgRQi+VcBSQ8BRgPQTj3eEKi6s+7ySLpzuA4HlihPWo7dWhioXM
3lZ4jiyPlCAZALYHNWbgk6Pehk6eNKMz8998Kq2GnzUQ65grAjjr4Q+HQJGOUYx/
gsEQoCdhKRjG0xcI75OE+CW9Wg/VU4RMboMke5LUNHwnHIDy8Ie2C3VozVS6mRgE
1VIBXWDm9fjaGEzYf25yWk0fzo/d/osLxReJgBq3FOz1TM4m9c3CtJUiedVXmeuf
OPwNlTjGDOWgQfeMmXaPC0jHp0YNfV+txdWwEPev6QIDAQABoAAwDQYJKoZIhvcN
AQELBQADggEBAHIZu0WR6hfiIsPxhBrdo5w0bt/2X6gy+tHdTI017rf1FUww6OLs
wKtpPC0km4BS20hxbD9NLb3FNQEUCf80YQFSGbi0ziY0okVN7gaes6XiNofZbYx9
TQF0oo+QWTa+otjoXpw8lLY9Ak6T9MppYh2GlRIiio2VzFu4Vg+FEoyNw9jvQwLj
LP0eYTIQ/2SX1DnxMBzCm4MzieXJ7DJPHAdqADUfKbFNuaVjdxG9uRZdP3LRL90g
6YxfFb8c+RcOL/lAKdSP5/rIUI05z0agzGMajsEnqxRXSk+CwlZo2D02++STStY9
pELozQsItNjEVrfWta6353kOguYYqjB1rNY=
}
以下のレスポンスが返されます:
HTTP/1.1 201 OK
Content-Type: application/pkcs7-mime;smime-type=certs-only
Content-Length: ...
{
MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExADALBgkqhkiG9w0BBwGgggF6MIIB
djCCARygAwIBAgIDCnqWMAoGCCqGSM49BAMCMBcxFTATBgNVBAMTDGVzdEV4YW1w
bGVDQTAeFw0yNTA1MjIwNjUwMzJaFw0yNjA1MjIwNjUwMzJaMBQxEjAQBgNVBAMM
CWV4YW1wbGUwMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI882KOUAoc5DCKF
u0zansWbtL84zKJa7SnconIF3AYjvHl3zBUnkv+/7+tSA13mBbYdq4oGh6Yg83zj
zhEJ0eujWjBYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBTsMXNm
ZMWaR8B74Imk6XckmUvOXTAfBgNVHSMEGDAWgBQa3zmEwlbmbM8qtCal/QzSQ/U9
PjAKBggqhkjOPQQDAgNIADBFAiEAhrhYYDGcvsFkJpg9U4fr8d7LuqearEnMn+TF
RWWgCmICIGPUvHHKzSc8GbgwuKddhe0Ef+HTamyEmqQBX3z/iE3GMQA=
}
また、Accept: application/pkcs10 を付けたRESTリクエストの例(任意):
POST /.well-known/est/simpleenroll
Authorization: Basic <<Base64 encoded bootstrap credentials>>
Content-Type: application/pkcs10
Content-Transfer-Encoding: base64
Accept: application/pkcs10
...
{
MIICVjCCAT4CAQAwETEPMA0GA1UEAwwGSWRfMTA0MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAtz41ucrtb28Hk4FDkGK19DRHD6Z3oyZ6CtS1xycWkf9h
za+6DI6ugBLRsxgRQi+VcBSQ8BRgPQTj3eEKi6s+7ySLpzuA4HlihPWo7dWhioXM
3lZ4jiyPlCAZALYHNWbgk6Pehk6eNKMz8998Kq2GnzUQ65grAjjr4Q+HQJGOUYx/
gsEQoCdhKRjG0xcI75OE+CW9Wg/VU4RMboMke5LUNHwnHIDy8Ie2C3VozVS6mRgE
1VIBXWDm9fjaGEzYf25yWk0fzo/d/osLxReJgBq3FOz1TM4m9c3CtJUiedVXmeuf
OPwNlTjGDOWgQfeMmXaPC0jHp0YNfV+txdWwEPev6QIDAQABoAAwDQYJKoZIhvcN
AQELBQADggEBAHIZu0WR6hfiIsPxhBrdo5w0bt/2X6gy+tHdTI017rf1FUww6OLs
wKtpPC0km4BS20hxbD9NLb3FNQEUCf80YQFSGbi0ziY0okVN7gaes6XiNofZbYx9
TQF0oo+QWTa+otjoXpw8lLY9Ak6T9MppYh2GlRIiio2VzFu4Vg+FEoyNw9jvQwLj
LP0eYTIQ/2SX1DnxMBzCm4MzieXJ7DJPHAdqADUfKbFNuaVjdxG9uRZdP3LRL90g
6YxfFb8c+RcOL/lAKdSP5/rIUI05z0agzGMajsEnqxRXSk+CwlZo2D02++STStY9
pELozQsItNjEVrfWta6353kOguYYqjB1rNY=
}
以下のレスポンスが返されます:
HTTP/1.1 201 OK
Content-Type: application/pkcs10
Content-Length: ...
{
-----BEGIN CERTIFICATE-----
MIIBdjCCARygAwIBAgIDCnqWMAoGCCqGSM49BAMCMBcxFTATBgNVBAMTDGVzdEV4
YW1wbGVDQTAeFw0yNTA1MjIwNjUwMzJaFw0yNjA1MjIwNjUwMzJaMBQxEjAQBgNV
BAMMCWV4YW1wbGUwMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI882KOUAoc5
DCKFu0zansWbtL84zKJa7SnconIF3AYjvHl3zBUnkv+/7+tSA13mBbYdq4oGh6Yg
83zjzhEJ0eujWjBYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBTs
MXNmZMWaR8B74Imk6XckmUvOXTAfBgNVHSMEGDAWgBQa3zmEwlbmbM8qtCal/QzS
Q/U9PjAKBggqhkjOPQQDAgNIADBFAiEAhrhYYDGcvsFkJpg9U4fr8d7LuqearEnM
n+TFRWWgCmICIGPUvHHKzSc8GbgwuKddhe0Ef+HTamyEmqQBX3z/iE3G
-----END CERTIFICATE-----
}
デバイス証明書を再登録する
デバイス再登録APIは、デバイスが証明書を更新するため、または現在の認証情報を証明書(パスワード、または別のCAによって生成された証明書)に置き換えるために使用されます。デバイスは、自身のパスワードまたはJWTトークンを使用して認証する必要があります。
POST /.well-known/est/simplereenroll
Authorization: Basic <<Base64 encoded bootstrap credentials>>
Content-Type: application/pkcs10
Content-Transfer-Encoding: base64
...
{
MIICVjCCAT4CAQAwETEPMA0GA1UEAwwGSWRfMTA0MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAtz41ucrtb28Hk4FDkGK19DRHD6Z3oyZ6CtS1xycWkf9h
za+6DI6ugBLRsxgRQi+VcBSQ8BRgPQTj3eEKi6s+7ySLpzuA4HlihPWo7dWhioXM
3lZ4jiyPlCAZALYHNWbgk6Pehk6eNKMz8998Kq2GnzUQ65grAjjr4Q+HQJGOUYx/
gsEQoCdhKRjG0xcI75OE+CW9Wg/VU4RMboMke5LUNHwnHIDy8Ie2C3VozVS6mRgE
1VIBXWDm9fjaGEzYf25yWk0fzo/d/osLxReJgBq3FOz1TM4m9c3CtJUiedVXmeuf
OPwNlTjGDOWgQfeMmXaPC0jHp0YNfV+txdWwEPev6QIDAQABoAAwDQYJKoZIhvcN
AQELBQADggEBAHIZu0WR6hfiIsPxhBrdo5w0bt/2X6gy+tHdTI017rf1FUww6OLs
wKtpPC0km4BS20hxbD9NLb3FNQEUCf80YQFSGbi0ziY0okVN7gaes6XiNofZbYx9
TQF0oo+QWTa+otjoXpw8lLY9Ak6T9MppYh2GlRIiio2VzFu4Vg+FEoyNw9jvQwLj
LP0eYTIQ/2SX1DnxMBzCm4MzieXJ7DJPHAdqADUfKbFNuaVjdxG9uRZdP3LRL90g
6YxfFb8c+RcOL/lAKdSP5/rIUI05z0agzGMajsEnqxRXSk+CwlZo2D02++STStY9
pELozQsItNjEVrfWta6353kOguYYqjB1rNY=
}
以下のレスポンスが返されます:
HTTP/1.1 201 OK
Content-Type: application/pkcs7-mime;smime-type=certs-only
Content-Length: ...
{
-----BEGIN CERTIFICATE-----
MIIEGjCCAwKgAwIBAgIEEgEgJDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJF
VTELMAkGA1UECAwCUEwxGzAZBgNVBAoMEklvdCBEZXZpY2UgRmFjdG9yeTEZMBcG
A1UEAwwQSW90RGV2RmFjdG9yeUludDAeFw0yNDA5MDIxMjA1MDlaFw0yNTA5MTIx
MjA1MDlaME8xCzAJBgNVBAYTAkVVMQswCQYDVQQIDAJQTDEbMBkGA1UECgwSSW90
IERldmljZSBGYWN0b3J5MRYwFAYDVQQDDA1Jb3REZXZpY2UyMDAwMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAumzj99zMfC9wyTHun3dEIsL/wk3VyWTw
dtgdFx/lt5uPfvTAJ62GLWzYsCe2Q54G13IG/S1SJTfsNURlvUrPvXed97/yhe/o
g0IjLz5VGNfsNUw+51KI7Tcc1SunHvUKD7TtgZ4rVga5q1DFxmzZ/dFXJpG5VAgu
pwojACMv+T6qKGlUsF5F/1coOVrUo26aby4mg7C6ZsbwzXj2PbIvNXHCcrBrUU7S
L2EI89RTgFZCVnZtW1SozDBn8S+WafKFBSgD0GwNtAkkffNWji1fW645gDc80u7w
bQuA/xtPXK6+giGB8jN3daVjp6pzbzrYzDTYoC2vyL2A4F4zUedBhwIDAQABo4H6
MIH3MAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDMGCWCGSAGG+EIBDQQm
FiRPcGVuU1NMIEdlbmVyYXRlZCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE
FONhE6IdItEwn95lmf7uKjVLYpJ1MB8GA1UdIwQYMBaAFFSopCQWaJLzT3DYQi8n
+nA1S86RMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
BQUHAwEwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2xvY2FsaG9zdDoxNTAwMC9v
bmxpbmUtY3JsczANBgkqhkiG9w0BAQsFAAOCAQEAJmPPKVSR4nAf8TZG3dPeGRX4
V6a8mT52HKQYTilicq0cwec1zSyjayX6lsvqbENkA/L8fN64fpOSmb/+HUbSWP7Y
F3ZYKalZVS9XlDUz6TWSA1LiWiDx1E28W2ubCOzUBRg7ux+59hoSGldtGrpxZ1Ox
+H9kemart76xC+l85EYys7YARL5vk5Jwyr/f1/FpXasaGBFbC4aJ+2fNJkn1LJal
II8Fl3GElheLpYM20VNw2J0PoD8I17htLfT+j7IwPyJ+uZcNxl60GiqDoBafRWuq
oTL1SYqewv/dTU98aZUXG9yFLPgldQ2YfMli6vOC2gcjW2vun+IP7T/5ZU/xtA==
-----END CERTIFICATE-----
}