From 2c5fe41a21500453c1cbdef0747c089f27d5e918 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Thu, 27 Nov 2025 17:11:39 +0900 Subject: [PATCH] =?UTF-8?q?thiratis.com=20API=20=EC=97=B0=EA=B2=B0?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=9C=20SSL=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=84=9C=20=EA=B2=80=EC=A6=9D=20=EC=98=88=EC=99=B8=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../externalRestApiConnectionService.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/backend-node/src/services/externalRestApiConnectionService.ts b/backend-node/src/services/externalRestApiConnectionService.ts index cee16dc0..668c07ae 100644 --- a/backend-node/src/services/externalRestApiConnectionService.ts +++ b/backend-node/src/services/externalRestApiConnectionService.ts @@ -607,12 +607,25 @@ export class ExternalRestApiConnectionService { } } - // HTTP 요청 실행 (배치관리 RestApiConnector와 동일하게 TLS 검증 우회 옵션 적용) + // HTTP 요청 실행 + // [인수인계 중요] 2024-11-27 추가 + // 특정 레거시/내부망 API(예: thiratis.com)의 경우 SSL 인증서 체인 문제로 인해 + // Node.js 레벨에서 검증 실패(UNABLE_TO_VERIFY_LEAF_SIGNATURE)가 발생합니다. + // + // 원래는 인프라(OS/Docker)에 루트 CA를 등록하는 것이 정석이나, + // 유지보수 및 설정 편의성을 위해 코드 레벨에서 '특정 도메인'에 한해서만 + // SSL 검증을 우회하도록 예외 처리를 해두었습니다. + // + // ※ 보안 주의: 여기에 모르는 도메인을 함부로 추가하면 중간자 공격(MITM)에 취약해질 수 있습니다. + // 꼭 필요한 신뢰할 수 있는 도메인만 추가하세요. + const bypassDomains = ["thiratis.com"]; + const shouldBypassTls = bypassDomains.some((domain) => + url.includes(domain) + ); + const httpsAgent = new https.Agent({ - // 배치관리와 동일하게, 일부 내부망/자체 서명 인증서를 사용하는 API를 위해 - // 인증서 검증을 비활성화한다. - // 공개 인터넷용 API에는 신중히 사용해야 함. - rejectUnauthorized: false, + // bypassDomains에 포함된 URL이면 검증을 무시(false), 아니면 정상 검증(true) + rejectUnauthorized: !shouldBypassTls, }); const requestConfig = {