3-8. 보안과 프로토콜 확장 2026-03-10 ~ 03-11

03-10: 보안 기능과 안정성

mTLS (클라이언트 인증서)

feat: Client SSL Certificate (mTLS) 기능 추가
feat(mTLS): mTLS 고급 기능 구현 (인증서 정보 표시, 도메인별 인증서, request_client_cert)
feat(mTLS): 커스텀 CA 인증서 임포트 및 PKCS12 지원

서버가 클라이언트 인증서를 요구하는 환경을 지원. 도메인별로 다른 인증서를 설정할 수 있고, PKCS12 형식도 지원.

SSL Proxying 모드

feat: SSL Proxying 도메인 화이트리스트 기능 추가
feat(tui): TUI에 SSL Proxying 화이트리스트 설정 화면 추가

특정 도메인만 TLS 인터셉트하거나(화이트리스트), 특정 도메인을 제외하거나(블랙리스트).

프록시 인증

feat: 프록시 인증(Proxy Authentication) 기능 추가
fix: 프록시 인증 보안 이슈 수정 - CONNECT 터널 인증 우회 방지 및 Debug 마스킹 테스트

Bearer/ApiKey 인증 방식 지원. CONNECT 터널에서 인증이 우회되는 보안 이슈를 발견하고 즉시 수정.

연결 풀

feat(proxy): 연결 풀 및 리소스 제한 기능 추가 (#24)

프록시 연결을 재사용해서 성능 향상. 동시 연결 수 제한, 최대 바디 크기 제한도 함께.

안정성 대수술

fix: 크리티컬 안정성 이슈 4건 수정 및 감사 보고서 추가
fix: HIGH 안정성 이슈 6건 수정
fix: MEDIUM 안정성 이슈 10건 수정 (#11~#20)
test: 크리티컬 안정성 수정에 대한 유닛테스트 13건 추가

안정성 감사를 실행해서 크리티컬 4건, HIGH 6건, MEDIUM 10건을 수정. 유닛테스트 13건 추가. STABILITY_AUDIT.md 보고서도 생성.

트러블슈팅: macOS 데드락 연쇄 삽질

이 날 데드락 관련 버그만 6커밋:

fix: update_client_certificate의 blocking I/O로 인한 데드락 해결
fix: 모든 async Tauri 커맨드의 blocking I/O를 spawn_blocking으로 이동
fix: 인증서 생성/OpenSSL 동기 호출을 모두 spawn_blocking으로 이동
fix(desktop): app.emit()을 전용 OS 스레드로 이동하여 macOS 데드락 해결
fix(desktop): 트레이 ↔ 메인 윈도우 IPC 동기화 제거로 macOS 데드락 해결
fix(desktop): macOS WebKit 메인 스레드 데드락 수정 — emit()을 run_on_main_thread()로 변경

macOS의 WebKit은 메인 스레드에서만 UI 업데이트를 할 수 있다. Tauri의 app.emit()이 메인 스레드에서 호출되면, WebKit이 이미 메인 스레드를 잡고 있어서 데드락. 모든 blocking I/O를 spawn_blocking으로 옮기고, emit()run_on_main_thread()로 변경해서 해결.

코드 내보내기

feat: 다양한 코드 내보내기 포맷 추가 (fetch, HTTPie, Python requests)

캡처된 요청을 다양한 포맷으로 내보내기. cURL, fetch, HTTPie, Python requests.

기타

  • feat: Quick Settings에 No Gzip 토글 기능 추가
  • feat: multipart/form-data 및 urlencoded 바디 뷰어 추가
  • feat: 자동 세션 저장/복원 기능 구현
  • feat(desktop): 찰스 프록시 스타일의 Proxy/Tools 네이티브 메뉴 추가
  • refactor: React Hook Form + Zod 도입
  • refactor: localStorage 직접 접근을 Zustand persist store로 통합

03-11: 프로토콜 확장

SSE 캡처

feat: SSE 스트리밍 캡처, gRPC 디코딩, 연결 모니터링 기능 추가

Server-Sent Events 스트리밍을 실시간 캡처. 이벤트별로 파싱해서 보여준다.

TLS 도메인별 세분화

feat(TLS): 도메인별 TLS 버전/암호화 스위트 세분화 설정 시스템 구현
feat(TLS): 인증서 생성 개선 및 TLS 이벤트 훅 아키텍처 구현

도메인별로 TLS 버전, 암호화 스위트를 각각 설정할 수 있다. 레거시 서버와 최신 서버를 같이 다룰 때 유용.

Eager/Lazy 연결 전략

feat: Eager/Lazy 연결 전략 구현 — 백그라운드 인증서 스니핑 지원
feat: 연결 전략 UI 설정 추가 — 런타임 Lazy/Eager/EagerWithFallback 변경 지원
  • Lazy — 요청이 올 때 서버에 연결 (기본)
  • Eager — 미리 연결해서 인증서를 가져옴 (빠름)
  • EagerWithFallback — Eager 시도 후 실패하면 Lazy로 폴백

SSL Proxying 모드 확장

feat(proxy_daemon): SSL Proxying 블랙리스트/화이트리스트 모드 구현
feat(desktop,tui): SSL Proxying 모드 UI 추가 및 i18n 번역 완료

tauri-store 전환

feat(desktop): zustand용 tauri-store storage adapter 및 마이그레이션 유틸리티 추가
refactor(desktop): 전체 store의 persist backend를 tauri-store로 전환
feat: Rust에서 store 파일 직접 읽어 프록시 시작 시 설정 자동 동기화

모든 Zustand store의 persist backend를 tauri-plugin-store로 통합. Rust에서 store 파일을 직접 읽어서 프록시 시작 시 설정을 자동 동기화.

설정 페이지 리팩토링

refactor: 설정 페이지 사이드바 네비게이션 + 통합 저장 버튼 리팩토링
refactor: Context 방식을 React Hook Form으로 전환
feat: Quick Settings를 폼 통합 — Save 버튼으로 일괄 저장

설정 페이지를 사이드바 네비게이션 + 통합 Save 버튼 구조로 전면 개편.

CONNECT 터널 토글

feat: CONNECT 터널 요청 표시 토글 설정 추가

프록시를 쓰면 CONNECT 요청이 엄청 많이 나온다. 이걸 숨길 수 있는 토글.

트레이 패널 부활 삽질

feat(desktop): 트레이 패널 기능 부활 — Rust 백엔드 중개 방식
fix(desktop): 트레이 프록시 토글 시 사이드바 상태 동기화 + 패널 높이 조정

03-08에서 문제가 많았던 트레이 패널을 Rust 백엔드 중개 방식으로 다시 구현.

1줄 요약

03-10에 mTLS, 프록시 인증, 연결 풀, 안정성 대수술(크리티컬 4+HIGH 6+MEDIUM 10건)을 하고, 03-11에 SSE 캡처, TLS 도메인별 설정, Eager/Lazy 전략, tauri-store 전환을 완료했다.