공개 키/비공개 키 쌍 만들기

이 페이지에서는 OpenSSL 명령줄 도구를 사용하여 공개 키/비공개 키 쌍을 생성하는 방법을 설명합니다.

기기 인증

Cloud IoT Core는 공개 키(또는 비대칭) 인증을 사용합니다.

  • 기기가 비공개 키를 사용하여 JSON 웹 토큰(JWT)을 서명합니다. 토큰은 기기 ID의 증거로 Cloud IoT Core로 전달됩니다.
  • 서비스가 기기 공개 키(JWT가 전송되기 전에 업로드됨)를 사용하여 기기 ID를 확인합니다.

Cloud IoT Core는 RSA 및 타원 곡선 알고리즘을 지원합니다. 키 형식에 대한 자세한 내용은 공개 키 형식을 참조하세요.

RSA 키 생성

다음 명령어를 사용하여 2048비트 RSA 키 쌍을 생성할 수 있습니다.

openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem

이 명령어는 다음 공개 키/비공개 키 쌍을 만듭니다.

  • rsa_private.pem: 기기에 안전하게 저장해야 하고 인증 JWT에 서명하는 데 사용하는 비공개 키입니다.
  • rsa_public.pem: Cloud IoT Core에 저장해야 하고 인증 JWT의 서명을 확인하는 데 사용하는 공개 키입니다.

자체 서명 X.509 인증서로 RSA 키 생성

레지스트리 수준 인증서로 키를 검증하는 경우 인증서는 특정 요구사항을 충족해야 합니다. 이러한 요구사항 중 하나는 인증서가 X.509 표준을 사용하는 것입니다.

2,048비트 RSA 비공개 키와 SHA-256 서명이 있는 자체 서명 X.509 인증서를 생성하려면 다음 명령어를 실행합니다.

openssl req -x509 -nodes -newkey rsa:2048 -keyout rsa_private.pem \
    -out rsa_cert.pem -subj "/CN=unused"

-subj 인수를 실제 인증서 제목으로 바꾸고 해당 인증서를 사용하거나, 메시지가 표시되면 -subj를 생략하고 인증서 정보를 제공할 수 있습니다. (Cloud IoT Core는 주체를 확인하지 않습니다.)

기본적으로 X.509 인증서는 생성 후 30일이 지나면 만료됩니다. 인증서가 만료될 때까지의 일수를 설정하려면 생성 시 -days <n> 플래그를 추가합니다. 만료된 인증서로 기기를 만들거나 업데이트하려고 하거나 기기를 레지스트리에 연결하려고 하는데 레지스트리의 인증서가 만료된 경우 Cloud IoT Core에서 오류가 반환됩니다.

타원 곡선 키 생성

다음 명령어를 사용하여 P-256 타원 곡선 키 쌍을 생성할 수 있습니다.

openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem
openssl ec -in ec_private.pem -pubout -out ec_public.pem

이 명령어는 다음 공개 키/비공개 키 쌍을 만듭니다.

  • ec_private.pem: 기기에 안전하게 저장해야 하고 인증 JWT에 서명하는 데 사용하는 비공개 키입니다.
  • ec_public.pem: Cloud IoT Core에 저장해야 하고 인증 JWT의 서명을 확인하는 데 사용하는 공개 키입니다.

자체 서명 X.509 인증서로 ES256 키 생성

레지스트리 수준 인증서로 검증하는 경우 인증서는 이 페이지에서 다루지 않는 특정 추가 요구사항을 충족해야 합니다. 이러한 요구사항 중 하나는 인증서가 X.509 표준을 사용하는 것입니다.

다음 명령어를 실행하여 자체 서명 X.509 인증서로 ES256 키를 생성합니다.

openssl req -x509 -new -key ec_private.pem -out ec_cert.pem -subj "/CN=unused"

-subj 인수를 실제 인증서 제목으로 바꾸고 해당 인증서를 사용하거나, 메시지가 표시되면 -subj를 생략하고 인증서 정보를 제공할 수 있습니다. (Cloud IoT Core는 주체를 확인하지 않습니다.)

기본적으로 X.509 인증서는 생성 후 30일이 지나면 만료됩니다. 인증서가 만료될 때까지의 일수를 설정하려면 생성 시 -days <n> 플래그를 추가합니다. 만료된 인증서로 기기를 만들거나 업데이트하려고 하거나 기기를 레지스트리에 연결하려고 하는데 레지스트리의 인증서가 만료된 경우 Cloud IoT Core에서 오류가 반환됩니다.

키를 자바용 PKCS8로 변환

자바에서는 비공개 키를 PKCS8 형식으로 변환해야 합니다. RSA 및 타원 곡선 키를 PEM 형식에서 PKCS8 형식으로 변환하려면 다음 명령어를 실행합니다.

RSA

openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_private.pem \
    -nocrypt > rsa_private_pkcs8

타원 곡선

openssl pkcs8 -topk8 -inform PEM -outform DER -in ec_private.pem \
    -nocrypt > ec_private_pkcs8

키 관리

기기 보안 권장사항을 검토하고 키 순환을 구현하는 방법을 고려하세요.

선택적 레지스트리 수준 인증서를 사용하여 키 사용자 인증 정보를 확인할 수도 있습니다.