3-11. CLI 통합과 인증서 안정화 2026-03-19 ~ 03-26

v0.1.0 릴리스 이후에도 개발은 멈추지 않았다. 이 기간의 핵심 테마는 CLI 통합, 인증서 안정화, 프론트엔드 품질 개선이다.

03-19 ~ 03-20: 안정화와 정리

"또 할게 뭐 남았지?" — 3/19 세션 "지금 철수 프록시 rpress쪽에 로드맵 있는데 필요없어 다 지워줘" — 3/20 세션

rspress 문서의 불필요한 로드맵을 정리하고, 데스크톱 UI 버그를 수정했다:

#304 fix(desktop): 트래픽 분석 응답 시간이 나노초 단위로 잘못 표시되는 버그 수정
#303 fix(desktop): next-themes classList InvalidCharacterError로 인한 빈 화면 수정

03-21: CLI 크레이트 — "MCP와 동일한 기능의 CLI" 핵심

"mcp 와 동일한 cli도 제공할 생각인데 어떻게 생각해?" — 3/21 세션

MCP 서버에서 제공하던 14개+ 도구를 CLI에서도 사용할 수 있게 하는 대규모 작업.

실제 대화:

"바로 구현해도 될정도로 간단해?" "그래 리팩토링 먼저 하자 mcp에 있는거 cli가 다 실행할 수 있는게 낫지?" "clap이라는 라이브러리가 젤 많이 쓰는거야?" → "2번으로 가자" "근데 아까 내가 말한 스킬이 사용자에게 설치되게 했으면 좋겠다는거야 에이전트브라우저도 스킬 파일 제공하자나" — Claude Code Skill 설치 기능

#305 refactor: MCP/CLI 공유를 위한 cheolsu_ops 크레이트 생성 (Phase 1)
#306 refactor: CRUD 도구 6개를 cheolsu_ops로 이동 (Phase 2)
#307 refactor: 나머지 도구 전체를 cheolsu_ops로 이동 (Phase 3)
#308 refactor: cheolsu_ops 통합 리뷰 반영 정리
#309 feat: MCP와 동일한 기능의 CLI 크레이트 추가
#310 refactor: CLI 바이너리를 cheolsu로, TUI를 cheolsu-tui로 통합
#311 feat: Claude 스킬 커맨드, CLI 테스트, 문서 추가
#312 feat: Claude Code 스킬 설치/제거 커맨드 추가
#313 feat: CLI 개선 (--version, --output json, completion, daemon 연결)

cheolsu_ops — 공유 로직 레이어

MCP 서버와 CLI가 동일한 비즈니스 로직을 공유하도록 cheolsu_ops 크레이트를 만들었다. 3단계로 나눠서 진행:

  1. Phase 1: 크레이트 생성 + Store 로직 추출
  2. Phase 2: CRUD 도구 6개 이동 (search_traffic, get_transaction 등)
  3. Phase 3: 나머지 도구 전체 이동 (intercept_rules, scripts 등)
[MCP 서버] ─┐
            ├── cheolsu_ops (공유 로직) ──→ [proxy_daemon] (UDS)
[CLI]       ─┘

TLS 인증서 키 미러링

이 기능은 BoringSSL 검토에서 출발:

"BoringSSL 이거 프록시에 쓰면 어때?" — 3/21 "일부 인증서 통과 못하는 케이스가 많아서 그래" "boringSSL이 좀 더 openSSL보다 프록시 우회할때 낫단 이야길 들어서" "찰스 프록시나 MITM도 그렇게 하고 있어?" "그럼 우선순위 제안에서 높음들 한번 작업해봐줄래?"

결론적으로 BoringSSL 도입 대신, 인증서 키 타입 미러링으로 같은 효과를 달성:

"지금 블랙리스트 화이트리스트에 상관없이 허용하는 도메인 있자나?" — 3/21 세션 "BoringSSL 이거 프록시에 쓰면 어때?" — 3/21 세션, BoringSSL 검토

#316 feat(tls): 인증서 키 타입 미러링 및 ClientHello 미러링 구현

서버의 인증서 키 타입(RSA/ECDSA)을 감지해서 프록시가 동일한 타입으로 인증서를 생성하는 기능. ClientHello의 확장도 미러링해서 서버가 프록시의 존재를 눈치채기 어렵게 만들었다.

03-22: Block QUIC + 네트워크 테이블 개선

"메인브랜치로 이동해줘, 그리고 그 철수 쿼리 입력하는 부분 쪽에 뜨는 오른쪽 북마크랑 필터도 툴팁이 있었으면 좋겠고" — 3/22 세션

#318 feat: 네트워크 테이블 개선 및 TanStack Table 마이그레이션
#319 feat: 컨텍스트 메뉴 규칙 추가 확장 및 다이얼로그 패턴 통일
#320 feat: Quick Settings에 Block QUIC(Alt-Svc Strip) 옵션 추가

Block QUIC: Chrome이 Alt-Svc 헤더로 HTTP/3(QUIC)으로 전환하면 프록시를 우회한다. Alt-Svc 헤더를 스트립해서 QUIC 전환을 차단하는 옵션.

TanStack Table 마이그레이션: 네트워크 테이블을 TanStack Table로 전환해서 정렬, 필터링, 가상 스크롤 성능을 개선.

03-23: 구조 리팩토링

"동일한 기능인데 구조적으로 다른것들이 있을까? 리팩토링 하고 싶어서" — 3/23 세션

#321 refactor: OpsStore에 Store 로직 통합하여 CLI/MCP 간 중복 제거

03-24: 인증서 안정화 + Rust 의존성 업데이트

"우리 인증서 전략중 MITM이나 찰스에 후달리는거 있어?" — 3/24 세션

MITM/Charles Proxy와 비교해서 인증서 전략의 약점을 분석하고 개선:

#322 feat: 상류 인증서 검증 경고 및 CA/Leaf 유효기간 분리
#323 fix: rcgen Serial Number 128비트 확대 및 Subject DN 완전 복제
#324 chore: Rust 의존성 최신 버전으로 일괄 업데이트
#325 refactor: RcgenAuthority::from_pem 편의 생성자로 보일러플레이트 제거
#326~329 refactor(desktop): 프론트엔드 코드 품질 개선 (4개 PR)

인증서 전략 강화

  • 상류 인증서 검증 경고: 서버 인증서가 만료되거나 자체 서명이면 경고 표시
  • CA/Leaf 유효기간 분리: CA는 10년, Leaf(도메인별) 인증서는 90일로 단축
  • Serial Number 128비트: 기존 64비트에서 128비트로 확대해 충돌 가능성 제거
  • Subject DN 완전 복제: 서버 인증서의 Country/State 정보를 프록시 인증서에 그대로 복제

Rust 의존성 대규모 업데이트

rand 0.10, rcgen 0.14, reqwest 0.13

rcgen 0.14는 API가 크게 바뀌어서 tests, benches, examples, docs까지 전부 마이그레이션 필요.

03-25: 스크립팅 안정화 + Thundering Herd 방지

"인증서 더 안정화 시키려면 방법이?" — 3/25 세션

#330 fix(desktop): 설정 동기화 시 block_quic 필드 누락 수정
#331 fix: 스크립트 UI 동기화 누락 및 V8 OOM 크래시 수정

V8 OOM 크래시 수정

스크립팅 엔진의 V8 힙 메모리 제한이 설정되지 않아서, 큰 스크립트를 로드하면 OOM으로 크래시. V8 힙 크기 제한을 명시적으로 설정하고, RwLock 단순화, loaded_path 추적을 추가.

Thundering Herd 방지

동일 도메인에 대한 인증서 요청이 동시에 여러 개 들어오면, 각각이 인증서를 생성하려고 해서 리소스가 낭비된다(Thundering Herd 문제). mokatry_get_with를 적용해서 동일 키에 대한 동시 생성을 방지.

CA 자동 재생성

CA 인증서 만료가 임박하면 자동으로 재생성하고, 키-인증서 매칭을 검증하는 로직 추가. SPKI(Subject Public Key Info) 비교로 키 쌍 일치를 확인.

숫자로 보는 3/19~3/26

지표수치
기간8일
PR#303 ~ #331 (29개)
새 크레이트2개 (cheolsu_ops, cli)
인증서 개선Serial Number 128비트, Subject DN 복제, CA 자동 재생성, Thundering Herd 방지
V8OOM 크래시 수정, 힙 메모리 제한
프론트엔드TanStack Table, Block QUIC, 코드 품질 4개 PR
1줄 요약

CLI를 MCP와 동일 기능으로 만들기 위해 cheolsu_ops 공유 레이어를 구축하고, 인증서 전략을 Charles/MITM 수준으로 강화하며, V8 OOM/Thundering Herd 같은 프로덕션 이슈를 해결했다.