Notice
Recent Posts
Recent Comments
Link
투케이2K
546. (javaScript) 자바스크립트 AWS Iot registerCertificateWithoutCA 사용해 클레임 인증서 등록 요청 수행 - 공통 클레임 인증서 사용 본문
JavaScript
546. (javaScript) 자바스크립트 AWS Iot registerCertificateWithoutCA 사용해 클레임 인증서 등록 요청 수행 - 공통 클레임 인증서 사용
투케이2K 2026. 6. 4. 19:34728x90
반응형
[개발 환경 설정]
개발 툴 : Edit++ / Vscode
개발 언어 : JavaScript

[소스 코드]
-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------
- 개발 환경 : Web
- 개발 기술 : 자바스크립트 / AWS / IoT / registerCertificateWithoutCA
- 사전) 👉 Aws Iot Core 간단 설명 :
>> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.
>> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.
>> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다.
- HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.
- 사전) 👉 클레임 인증서 간단 설명 :
>> Aws 프로비저닝 수행에 필요한 클레임 인증서는 주로 IAM (Identity and Access Management) 과 관련된 인증을 수행하는 데 사용됩니다
>> 클레임 인증서는 AWS 에서 인증과 권한 부여를 통해 자원에 대한 접근을 관리하는데 사용됩니다.
- 클레임은 사용자가 AWS 리소스에 접근할 수 있는 권한을 나타내는 정보입니다.
- 클레임 인증서는 사용자가 특정 역할을 수행할 수 있도록 허용하는 정보가 포함되어 있습니다.
>> Aws Iot Core 프로비저닝 수행 인증서 파일 설명 :
- certificate.pem.crt: 디바이스 인증서
- private.pem.key: 디바이스 개인 키
- public.pem.key: 디바이스 공개 키
- ca1.pem: AWS IoT Core에서 사용하는 CA 인증서
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[소스 코드]
-----------------------------------------------------------------------------------------
<!DOCTYPE HTML>
<html lang="ko" translate="no">
<head>
<title>javaScriptTest</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 반응형 구조 만들기 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<!-- Chrome / Edge (Chromium)에서 자동 번역 기능을 완전히 비활성화 -->
<meta name="google" content="notranslate">
<!-- 내부 CSS 스타일 지정 -->
<style>
html, body {
width: 100%;
height: 100%;
margin : 0 auto;
padding : 0;
border : none;
background-color: #666;
}
</style>
<!-- [CDN 주소 설정] -->
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<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>
<!-- [자바스크립트 코드 지정] -->
<script>
// -----------------------------------------------------------------
// 🟦 [전역 변수 선언]
// -----------------------------------------------------------------
const accessKey = 'AK..A6';
const secretKey = 'mP..5J';
const region = 'ap-northeast-2';
// -----------------------------------------------------------------
// 🟦 [Window.onload : 웹 브라우저 로드 완료]
// -----------------------------------------------------------------
window.onload = async function() {
console.log("[window onload] : [html 최초 로드 및 이벤트 상시 대기 실시] : [start]");
};
// -----------------------------------------------------------------
// 🟦 [readAndRegister : 인증서 파일 읽기 및 인증서 등록 요청]
// -----------------------------------------------------------------
function readAndRegister(){
console.log("[readAndRegister] : [인증서 파일 읽기 및 인증서 등록 요청] : [start]");
try {
// -----------------------------------------
// [선택 된 파일이 있는지 확인]
// -----------------------------------------
const fileInput = document.getElementById("certFile");
const file = fileInput.files[0];
if (!file) {
alert("파일을 선택하세요.");
return;
}
console.log("📄 readAndRegister : 선택된 파일 : " + file.name);
// -----------------------------------------
// [선택 된 파일 내용 읽기]
// -----------------------------------------
const reader = new FileReader();
reader.onload = function(event) {
let certPem = event.target.result;
// ✅ 중요: PEM 정리
certPem = certPem
.replace(/^\uFEFF/, "") // BOM 제거
.replace(/\r\n/g, "\n") // 줄바꿈 통일
.trim();
console.log("✅ readAndRegister : 인증서 파일 읽기 완료 : ", certPem);
/*
-----BEGIN CERTIFICATE-----
MI....NA
-----END CERTIFICATE-----
*/
// -----------------------------------------
// [AWS.config 지정]
// -----------------------------------------
//*
AWS.config.update({
region: region,
accessKeyId: accessKey,
secretAccessKey: secretKey
});
// -----------------------------------------
// [AWS.Iot 객체 생성]
// -----------------------------------------
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);
}
});
// */
};
// ✅ 반드시 TEXT 로 읽기
reader.readAsText(file);
}
catch (exception) {
console.error("[readAndRegister] : [Exception] : ❌ 예외 상황 발생 : ", exception);
}
};
</script>
</head>
<body>
<h2>📄 인증서 업로드</h2>
<!-- ✅ 파일 선택 -->
<input type="file" id="certFile" accept=".pem,.crt,.txt" />
<br><br>
<!-- ✅ 업로드 버튼 -->
<button onclick="readAndRegister()">인증서 등록</button>
</body>
</html>
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------
▶️ [Aws Iot Core] Aws 프로비저닝 수행에 필요한 클레임 인증서 (claim certificate) 설명 정리
https://kkh0977.tistory.com/7799
https://blog.naver.com/kkh0977/223784109192?trackingCode=blog_bloghome_searchlist
▶️ [Aws Iot Core] Aws Iot Core 프로비저닝에 사용 되는 클레임 인증서 종류 설명 및 생성 방법 정리
https://kkh0977.tistory.com/8100
https://blog.naver.com/kkh0977/223918338710?trackingCode=blog_bloghome_searchlist
▶️ [Aws] IoT 디바이스 기기 프로비저닝 수행에 필요한 개발, 운영 인증서 동적 교체 및 다운로드 로직 정리 - 클레임 인증서 다운로드
https://kkh0977.tistory.com/8837
https://blog.naver.com/kkh0977/224290535389?trackingCode=blog_bloghome_searchlist
▶️ [MQTT (Message Queueing Telemetry Transport) 통신 설명]
https://kkh0977.tistory.com/3631
https://blog.naver.com/kkh0977/222971771381?trackingCode=blog_bloghome_searchlist
▶️ [Aws Iot Core] Fleet provisioning 플릿 프로비저닝 수행 방법 정리 - 클레임 인증서 , 신뢰할 수 있는 사용자
https://kkh0977.tistory.com/7761
https://blog.naver.com/kkh0977/223779257161?trackingCode=blog_bloghome_searchlist
-----------------------------------------------------------------------------------------
728x90
반응형
'JavaScript' 카테고리의 다른 글
Comments
