해결된 질문
작성
·
67
·
수정됨
0
self-signed certificate in certificate chain 발생합니다.
1번
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
2번
// SSL 인증 무시를 위한 Agent 생성
const httpsAgent = new https.Agent({
rejectUnauthorized: false
});
await axios.get("target_url", { httpsAgent: agent });
1,2 번 외 해결 방법이 있을까요?
또는 2번을 적용하려면 어떻게 해야하나요?
또는 Java에서 로컬 톰캣 서버에서 HTTPS 설정하듯이 할수있는 방법이 있나요?
답변 1
0
안녕하세요! gkdlsb1234님!
self-signed 인증서를 사용하고 계신 것으로 보아, 로컬에서 톰캣 개발시 https 설정한 것 처럼 node/nestjs에서도 https를 설정하여 테스트 해보고 싶으신 것 같아요!
톰캣 개발시 사용하셨던 방법과 마찬가지로, node에서도 self-signed 인증서를 적용하여 연습해 보실 수 있어요!
아래와 같이 인증서를 만들어 보시고 적용해 보세요!
(보안 목적상, 실제 배포 수업에서는 로드밸런서 등의 정식인증서를 활용하여 배포하며, self-signed 인증서는 단지 로컬에서 연습용으로만 사용해 주세요.)
연습용 self-signed 인증서, 키 만들기
openssl req -nodes -new -x509 -keyout server.key -out server.cert -days 365
2. 중간에 localhost만 입력하고 나머진 다 그냥 Enter!
3. 완성된 결과는 아래와 같아요!
node 서버에서 https 인증서 적용하여 https서버 만들기
import express from 'express'
import https from 'https'
import fs from 'fs'
import cors from 'cors'
const app = express()
app.use(cors())
app.get("/qqq", (req, res) => {
res.json(JSON.stringify({ name: "철수", age: 12 }))
})
https.createServer({
key: fs.readFileSync("server.key"),
cert: fs.readFileSync("server.cert")
}, app).listen((8443) => {
console.log("https://localhost:8443 배포 완료")
})
요청을 위한 프론트엔드 만들기
=> /qqq 엔드포인트에 api 요청해보기
<!DOCTYPE html>
<html lang="ko">
<head>
<title>https 요청하자</title>
<script>
const call = async () => {
const result = await fetch("https://localhost:8443/qqq")
const data = await result.json()
console.log(data)
}
</script>
</head>
<body>
<button onclick="call()">요청하자</button>
</body>
</html>
self-signed는 신뢰하기 어려운 자체인증서이므로, 최초 접속시, 연결 허용하도록 풀어줘야 합니다.(사파리 브라우저도 마찬가지임)
* 이제부터 해당 주소는 로컬에서 작동 가능합니다.(axios, fetch 등)
버튼을 클릭하여 요청해보기