Node.js HTTPS Module (Node.js HTTPS 모듈)

Node.js HTTPS 모듈은 TLS/SSL을 사용하여 안전한 통신을 구현하는데 필수적인 기능을 제공합니다. 이 모듈을 활용하여 안전한 웹 서버를 구축하거나 HTTPS 리소스에 접근할 수 있습니다.

HTTPS 서버 구축

HTTPS 서버를 구축하려면 먼저 SSL/TLS 인증서와 개인 키가 필요합니다. 테스트 목적으로 자체 서명 인증서를 생성할 수 있습니다. OpenSSL을 사용하여 다음과 같이 생성할 수 있습니다. 개인 키 생성: openssl genrsa -out key.pem 2048CSR 생성: openssl req -new -key key.pem -out csr.pem인증서 생성: openssl x509 -req -in csr.pem -signkey key.pem -days 365 -out cert.pem

이제 생성된 key.pem과 cert.pem 파일을 사용하여 HTTPS 서버를 생성합니다. 다음은 기본적인 HTTPS 서버 코드입니다:const https = require('https');const fs = require('fs');const options = {key: fs.readFileSync('key.pem'),cert: fs.readFileSync('cert.pem')};https.createServer(options, (req, res) => {res.writeHead(200);res.end('Hello, Node.js HTTPS Server!');}).listen(8000, () => {console.log('HTTPS Server running on port 8000');});

위 코드는 `https.createServer()` 메서드를 사용하여 새 HTTPS 서버 인스턴스를 생성합니다. `options` 객체에 개인 키(`key`)와 인증서(`cert`)를 지정합니다. `listen()` 메서드는 서버가 특정 포트에서 요청을 수신하도록 설정합니다. `req` 객체는 클라이언트 요청 정보를, `res` 객체는 서버 응답을 처리합니다.

HTTPS 요청 보내기

Node.js 애플리케이션에서 다른 HTTPS 서버로 요청을 보내려면 `https.request()` 또는 `https.get()` 메서드를 사용합니다. `https.get()`은 GET 요청에 특화된 간편한 메서드입니다.

다음은 `https.get()`을 사용하여 외부 API에 GET 요청을 보내는 예시입니다:const https = require('https');https.get('https://jsonplaceholder.typicode.com/todos/1', (res) => {let data = '';res.on('data', (chunk) => {data += chunk;});res.on('end', () => {console.log(JSON.parse(data));});}).on('error', (err) => {console.error('Error: ' + err.message);});

`https.get()`은 첫 번째 인자로 URL 또는 옵션 객체를 받습니다. 두 번째 인자는 응답을 처리하는 콜백 함수입니다. `res.on('data', ...)`는 응답 데이터 청크를 수신할 때마다 호출되며, `res.on('end', ...)`는 응답 데이터 수신이 완료되었을 때 호출됩니다. 오류 발생 시 `.on('error', ...)`를 사용하여 처리할 수 있습니다.

주의사항

실제 프로덕션 환경에서는 자체 서명 인증서 대신 공식 CA(인증 기관)에서 발급받은 인증서를 사용해야 합니다. 또한, 민감한 정보를 다룰 때는 보안 모범 사례를 준수해야 합니다.

댓글