Notice
Recent Posts
Recent Comments
Link
투케이2K
197. (TWOK/LOGIC) [Aws] AWS IoT Core 프로비저닝 클레임 인증서 개발, 운영 환경 동일 인증서 등록 요청 로직 - register certificate 본문
투케이2K 로직정리
197. (TWOK/LOGIC) [Aws] AWS IoT Core 프로비저닝 클레임 인증서 개발, 운영 환경 동일 인증서 등록 요청 로직 - register certificate
투케이2K 2026. 6. 7. 09:46728x90
반응형
[로직 정리]
정리 로직 : AWS / IoT / 프로비저닝
제 목 : [Aws] AWS IoT Core 프로비저닝 클레임 인증서 개발, 운영 환경 동일 인증서 등록 요청 로직 - register certificate

[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
1. 제 목 : [Aws] AWS IoT Core 프로비저닝 클레임 인증서 개발, 운영 환경 동일 인증서 등록 요청 로직 - register certificate
2. 테스트 환경 : Aws / IoT / 프로비저닝 / 클레임 인증서
3. 사전) 👉 AWS IoT Core 간단 설명 :
>> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.
>> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.
>> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다.
- HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.
4. 사전) 👉 X.509 간단 설명 :
>> X.509 는 공개키 기반 구조 (PKI, Public Key Infrastructure) 에서 사용되는 디지털 인증서의 표준 규격입니다.
>> X.509 는 인터넷에서 사용하는 SSL/TLS 인증서, AWS IoT 인증서, 전자서명 인증서 등이 어떤 형식으로 구성되어야 하는지 정의한 국제 표준입니다.
>> X.509 인증서는 다음 정보를 담고 있습니다.
- "이 공개키는 누구의 것인가?"
- "누가 이 공개키를 보증하는가?"
- "언제까지 유효한가?"
>> X.509 인증서 구조 : Base64로 인코딩된 ASN.1 데이터가 들어있습니다.
-----BEGIN CERTIFICATE-----
MIIDYzCCAkugAwIBAgI...
...
...
-----END CERTIFICATE-----
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
------------------------------------------------------
🟦 사전 정리) 로직 구현 관련 필요 내용 정리
------------------------------------------------------
1. 개발, 시연, 운영 각 클레임 인증서 환경 별로 관리하던 펌웨어 BIN 파일을 통일 된 환경에서 공통으로 관리하기 위해 해당 로직 구현
2. AWS IoT Core 연결에 사용 되는 엔드포인트 정보는 App To Device TCP/IP 소켓 통신으로 동적으로 넘겨 주고 있는 상태
3. 각 DEV , STG , PRD 형식으로 구분되어 있던 템플릿 명칭도 COMMON 으로 통일 형식 지정
4. PRD 운영 클레임 인증서 기준으로 DEV , STG 환경 동일한 클레임 인증서를 사용하기 위해 등록 요청 및 인증서 유효성 체크 로직
------------------------------------------------------
🟦 로직 정리) 자바스크립트에서 클레임 인증서 유효성 검증 및 등록 요청 로직 정리
------------------------------------------------------
👉 웹 브라우저 라이브러리 CDN 설정 코드
<!-- node-forge 라이브러리 : X.509 인증서 유효성 검증 -->
<script src="https://cdn.jsdelivr.net/npm/node-forge@1.3.1/dist/forge.min.js"></script>
<!-- [aws-sdk 라이브러리 : AWS IoT Core 인증서 등록 요청] -->
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js"></script>
<script src="https://unpkg.com/aws-iot-device-sdk/browser/aws-iot-sdk-browser-bundle.js"></script>
------------------------------------------------------
1. 자바스크립트에서 input file 태그를 사용해 특정 클레임 인증서 선택 실시
<input type="file" id="certFile" accept=".pem,.crt,.txt" />
2. 자바스크립트에서 선택 된 인증서 파일 text 형식으로 읽어 현재 날짜 기준으로 인증서 유효 기간 확인 수행
const cert = forge.pki.certificateFromPem(certPem);
const now = new Date();
const notBefore = cert.validity.notBefore;
const notAfter = cert.validity.notAfter;
console.log("checkCertPinger : 인증서 파일 유효 기간 확인 : ", notBefore + " / " + notAfter);
let status = "유효";
if (now < notBefore) {
console.warn('checkCertPinger : 인증서 : 아직 유효기간 시작 전');
}
else if (now > notAfter) {
console.error('checkCertPinger : 인증서 : 만료');
}
else {
console.log('checkCertPinger : 인증서 : 유효 : ', JSON.stringify(cert));
}
3. 인증서 파일 만료 기간이 유효한 경우 인증서 식별 정보 확인 수행 (👉 운영 인증서 기준으로 통일화를 수행하므로 운영 인증서 식별 정보와 같은 지 체크 수행)
const md = forge.md.sha256.create();
md.update(
forge.asn1.toDer(
forge.pki.certificateToAsn1(cert)
).getBytes()
);
var returnData = md.digest().toHex()
.match(/.{1,2}/g)
.join(":")
.toUpperCase();
4. 식별 된 인증서 정보가 운영 인증서가 맞는 경우 registerCertificateWithoutCA API 호출을 통해 각 환경에 인증서 등록 요청 수행
👉 인증서 등록 요청을 하기 위해 각 환경 별 사전 IAM AccessKey , SecretKey 정보가 필요합니다
AWS.config.update({
region: region,
accessKeyId: accessKey,
secretAccessKey: secretKey
});
const iot = new AWS.Iot();
// ✅ 인증서 PEM 문자열 (파일 내용을 그대로 넣어야 함)
const certificatePem = certPem;
const params = {
certificatePem: certificatePem,
status: "ACTIVE"
};
iot.registerCertificateWithoutCA(params, function(err, data) {
if (err) {
console.error("❌ 인증서 등록 실패 : ", err);
} else {
console.log("✅ 인증서 등록 성공 : ", data);
// [출력 되는 로그 예시]
// {certificateArn: 'arn:aws:iot:ap-northeast-2:123456789012:cert/8e..6d', certificateId: '8e..6d'}
// 인증서 PEM 내용 자체에 고유 식별 정보가 들어 있고, AWS IoT는 그 내용을 기반으로 certificateId를 결정합니다.
//console.log("certificateArn:", data.certificateArn);
//console.log("certificateId:", data.certificateId);
}
});
5. AWS IoT Core 인증서 등록 요청이 완료 된 경우 AWS 콘솔 대시보드에서 인증서 식별 정보 검색 및 정상 업로드 완료 상태 확인 수행
6. AWS 콘솔 대시보드에서 업로드 된 인증서 선택 후 필요한 정책 Policy 매핑 수행
👉 정상적으로 정책까지 모두 매핑이 되어야만, 프로비저닝을 수행할 수 있습니다.
------------------------------------------------------
🟦 참고 사항)
------------------------------------------------------
1. X.509 인증서 파일을 TEXT 로 읽을 때 BOM 제거 , 줄바꿈 통일 이 중요합니다. (인증서 형식 text 가 아닌 경우 Exception 에러가 발생)
let certPem = event.target.result;
// ✅ 중요: PEM 정리
certPem = certPem
.replace(/^\uFEFF/, "") // BOM 제거
.replace(/\r\n/g, "\n") // 줄바꿈 통일
.trim();
console.log("✅ checkCertPeriod : 인증서 파일 읽기 완료 : " + "\n\n" + certPem);
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
▶️ [개선 요청] AWS IoT Core 프로비저닝 클레임 인증서 개발, 운영 환경 동일 인증서 사용 요청 - register certificate
https://kkh0977.tistory.com/8885
https://blog.naver.com/kkh0977/224306052667
▶️ [자바스크립트 node-forge 라이브러리 사용해 X.509 인증서 식별 정보 확인 - getSha256Fingerprint]
https://kkh0977.tistory.com/8893
https://blog.naver.com/kkh0977/224307596780
▶️ [자바스크립트 node-forge 라이브러리 사용해 X.509 인증서 만료 기간 유효성 검증 수행]
https://kkh0977.tistory.com/8892
https://blog.naver.com/kkh0977/224307272979
▶️ [자바스크립트 AWS Iot registerCertificateWithoutCA 사용해 클레임 인증서 등록 요청 수행 - 공통 클레임 인증서 사용]
https://kkh0977.tistory.com/8886
https://blog.naver.com/kkh0977/224306059609
▶️ [Aws Iot Core] Aws 프로비저닝 수행에 필요한 클레임 인증서 (claim certificate) 설명 정리
https://kkh0977.tistory.com/7799
https://blog.naver.com/kkh0977/223784109192?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
728x90
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments
