> For the complete documentation index, see [llms.txt](https://docs.plura.io/ko/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.plura.io/ko/faq/comm/expired.md).

# 망연계 솔루션 경유하는 SSL 인증서 오류

{% hint style="info" %}
다음과 같이 망연계 솔루션을 경유하여 웹서비스에 접속할 때 SSL 인증서 오류 (`certificate has expired`)가 발생하는 경우 확인해야 할 내용입니다.

* 망연계 솔루션을 경유하지 않고, 웹 서비스에 접속하면 인증서가 정상 동작함
* 망연계 솔루션을 경유하면 curl: (60) ssl certificate problem: certificate has expired 오류가 출력되는 상황
  {% endhint %}

### 1. 망연계 솔루션이 인증서를 캐시하거나 중간에 프록시 역할을 수행 중인 경우 <a href="#id-1" id="id-1"></a>

* **프록시 역할을 수행하는 망연계 솔루션**이 TLS 핸드셰이크를 중간에서 가로채고, 자신의 캐시된 오래된 인증서를 클라이언트(curl 등)에 전달할 수 있습니다.
* 이 경우, 클라이언트는 서버가 보낸 인증서가 아니라 **망연계 장비가 가진 오래된 인증서**를 보고 `expired` 오류를 발생시킵니다.

🛠 **조치 방법**:

* 망연계 솔루션(예: SecureGate, TGate, SaniTrans 등)의 **인증서 캐시 기능**이나 **SSL Proxy 설정**을 확인하고 재시작하거나 캐시를 무효화합니다.
* 최신 인증서로 업데이트되었는지 확인합니다.
* 필요시, TLS pass-through(중계만 하고 가로채지 않음) 모드로 설정합니다.

### 2. 망연계 솔루션이 자체적으로 SSL을 종단 처리(SSL termination)하고 있음 <a href="#id-2" id="id-2"></a>

* 이 경우, 외부 웹 서버의 인증서를 클라이언트가 직접 보지 않고, **망연계 솔루션에 설치된 인증서를 보게 됩니다.**
* 만약 이 인증서가 갱신되지 않았거나 유효기간이 지난 상태라면, curl 등에서는 `certificate has expired`로 인식됩니다.

🛠 **조치 방법**:

* 망연계 솔루션에 설치된 인증서를 확인하고 갱신합니다.
* 인증서 체인(루트 → 중간 → 서버 인증서)이 완전하게 구성되었는지 확인합니다.

### 3. 망연계 솔루션이 클라이언트 쪽에 자체 CA나 루트 인증서를 신뢰시키지 못함 <a href="#id-3" id="id-3"></a>

* 클라이언트가 망연계 솔루션의 **중간 인증서나 루트 인증서를 신뢰하지 않으면** SSL 오류가 발생할 수 있습니다.
* 특히 curl은 OpenSSL을 사용하므로, 시스템에 설치된 CA Bundle에 해당 인증서가 없을 경우 발생합니다.

🛠 **조치 방법**:

* 망연계 솔루션의 루트 CA 또는 중간 인증서를 `/etc/ssl/certs` 또는 curl의 `--cacert` 옵션으로 지정하여 수동 신뢰를 설정할 수 있습니다.

### 4. 중간 인증서(Missing Intermediate Certificate)가 누락되었을 경우 <a href="#id-4" id="id-4"></a>

* 망연계 솔루션이 중간 인증서를 포함하지 않은 상태로 서버 인증서만 전달하면 `expired` 오류처럼 보일 수 있습니다.
* 일부 클라이언트는 인증서 체인 복원이 불가능하여 오류를 발생시킵니다.

🛠 **조치 방법**:

* 인증서 체인을 완전하게 구성했는지 확인하세요 \
  (SSL Labs 등에서 확인 가능: <https://www.ssllabs.com/ssltest/>).

### 🔍 추가 확인 방법 <a href="#id-5" id="id-5"></a>

* 다음과 같은 명령어로 문제 확인 가능:

```bash
# 망연계 경유 (오류 발생)
curl -v https://www.plura.io

# 직접 연결 (정상 작동)
curl -v --resolve www.plura.io:443:원래의IP https://www.plura.io

# 인증서 확인용
openssl s_client -connect www.plura.io:443
```

### ✨ 요약 <a href="#id-6" id="id-6"></a>

| 원인            | 설명                   | 조치                 |
| ------------- | -------------------- | ------------------ |
| 🔁 캐시된 인증서    | 망연계 솔루션이 오래된 인증서를 캐시 | 캐시 삭제 또는 재시작       |
| 🔒 자체 인증서 사용  | 망연계가 인증서를 직접 제공      | 망연계 장비의 인증서 갱신     |
| ❌ 인증서 체인 불완전  | 중간 인증서 누락 등          | 인증서 체인 점검          |
| ❓ 클라이언트 CA 불신 | 자체 루트/중간 CA 신뢰 안됨    | 수동으로 `--cacert` 지정 |
