常见问题
以下是关于 SSLcat 的常见问题解答,如果您有其他问题,请随时联系我们。
general
SSLcat은 Go로 작성된 오픈 소스 엔터프라이즈급 SSL 리버스 프록시 서버입니다. nginx + Caddy + Web UI + GitOps를 하나의 바이너리에 묶었습니다: Let's Encrypt 자동 발급 및 갱신, 스마트 도메인 라우팅, 로드 밸런싱, WAF, Docker / Runner 앱 호스팅, 그리고 현대적인 Web 관리자 패널을 제공합니다. v2.1부터 MCP 서버가 내장되어 Claude / Cursor 등 AI 클라이언트가 도구를 직접 호출할 수 있습니다.
MCP (Model Context Protocol)는 AI 클라이언트를 외부 도구에 연결하는 개방형 프로토콜입니다. v2.1부터 SSLcat 자체가 MCP 서버이며, v2.3.0-rc1 기준으로 22개의 도구(사이트 / 인증서 / 프록시 경로 CRUD, 업스트림 헬스 체크, 장기 실행 작업 쿼리, 최근 오류를 검사하는 `error_log_list` / `error_log_tail`)와 5개의 리소스(편집된 현재 설정, 런타임 메트릭 스냅샷, 액세스 로그 tail, 오류 로그 소스, 오류 로그 콘텐츠)를 노출합니다. Claude Desktop / Cursor / Cherry Studio / Continue.dev에 토큰을 넣으면 AI가 사이트 목록 조회, 인증서 발급, 경로 변경, 액세스 / 오류 로그 검사를 할 수 있으며 — 파괴적인 작업은 여전히 2단계 확인을 거칩니다.
macOS / Linux에서 한 줄 설치: `curl -fsSL https://raw.githubusercontent.com/xurenlu/sslcat/main/install.sh | bash`. GitHub Releases 페이지(linux-amd64 / linux-arm64 / darwin-arm64 / darwin-amd64)에서 바이너리를 받을 수도 있습니다. 전체 문서는 `docs/`와 웹사이트에 있습니다.
네. SSLcat은 Let's Encrypt (ACME)와 통합되어 있습니다. 도메인을 추가하면 자동 발급이 시작되며, 만료 30일 전에 무중단으로 갱신됩니다. HTTP-01 및 DNS-01 챌린지를 모두 지원하며, DNS-01과 AWS Route53(및 기타 공급자)을 결합하면 `*.example.com` 같은 와일드카드 인증서를 발급할 수 있습니다.
nginx와 비교: SSLcat은 Web 관리자 패널, 자동 SSL, GitOps 배포, 실시간 모니터링, AI 기반 보안을 기본 제공합니다 — 더 이상 손으로 설정 파일을 편집할 필요가 없습니다. Caddy와 비교: SSLcat은 6가지 로드 밸런싱 알고리즘, 다중 사용자 관리, Docker 이미지 및 Runner 배포, API 토큰 시스템, WebSocket 기반 실시간 로그 스트리밍을 제공하며, v2.1부터는 내장 MCP 통합을 추가했습니다.
HTTP/1.1, HTTP/2 및 HTTP/3 (QUIC)를 모두 지원하며, TLS 1.3이 강제됩니다. 장기 WebSocket 및 SSE 연결은 특별 처리되며, 긴 ACME 작업은 하트비트, 쓰기 시간 초과 면제, 도메인별 동시성 격리를 사용하여 서로를 끌어내리지 않도록 합니다.
6가지 알고리즘이 내장되어 있습니다(round-robin, 가중 round-robin, least-conn, IP hash, 무작위, 최단 응답), TCP 헬스 체크 및 세션 고정과 결합됩니다. 단일 도메인의 경로 수준에서 가중치가 있는 백엔드 목록을 첨부할 수 있습니다.
SSLcat을 Git 원격으로 추가한 다음 `git push sslcat main`을 실행하여 배포합니다 — Dokku/Heroku 스타일입니다. Runner 배포 진입점은 계층화되어 있습니다: 디렉터리 업로드, 바이너리 업로드, Docker 이미지 직접 풀, `git push`로 빌드, 또는 템플릿 사용. 모든 경로는 동일한 통합 Runner 사양(환경 변수, 포트, 마운트, 시작 명령)으로 수렴됩니다.
Runner는 SSLcat의 내장 앱 호스팅 계층입니다. Docker 컨테이너 실행, 업로드된 바이너리 실행, `git push`로 빌드된 이미지 실행, 또는 템플릿에서 배포할 수 있습니다. SSLcat 자체가 재시작되면 Runner 컨테이너 상태만 조정합니다 — 비즈니스 컨테이너를 절대 재시작하지 않으므로, 운영 트래픽이 실수로 끊기는 일이 없습니다.
WAF 규칙 매칭(요청 본문 스캔은 메모리를 제한하기 위해 1 MB로 제한됨), DDoS 방어, 무차별 대입 공격 방지, IP / UA / TLS 핑거프린트 차단 및 화이트리스팅, 세분화된 API 토큰, TOTP MFA, 감사 로그, 설정 버전 관리, 그리고 온라인 학습, JSON 모델 영속화, 실제 트래픽 추론을 갖춘 Isolation Forest 기반 AI 이상 탐지기.
내장 재설정 명령을 사용하세요: `sslcat users password -username admin -new-password 'NewStrongPass123!'`. 소스 트리에서는 다음도 실행할 수 있습니다: `go run tools/cmd/reset_password/main.go admin 'NewStrongPass123!'`.
v2.0.0-rc22부터는 일회용 복구 코드로도 재설정할 수 있습니다. Ruby로 bcrypt 해시를 수동으로 생성하려면: `gem install bcrypt`로 bcrypt를 설치한 다음, `SSL_PASS='NewStrongPass123!' ruby -rbcrypt -e 'puts BCrypt::Password.create(ENV.fetch("SSL_PASS"), cost: 10)'`를 실행하세요.
Python의 경우: `python3 -m pip install bcrypt`, 그런 다음 `SSL_PASS='NewStrongPass123!' python3 -c 'import bcrypt, os; print(bcrypt.hashpw(os.environ["SSL_PASS"].encode(), bcrypt.gensalt(rounds=10)).decode())'`.
해시를 `admin.password_file`(일반적으로 `/opt/sslcat/data/admin.pass` 또는 `./data/admin.pass`)에 모드 `600`으로 작성합니다. 비밀번호 파일 복구는 일반적으로 SSLcat을 재시작할 필요가 없습니다 — 다음 로그인 시 새 해시가 읽힙니다.
`http://<your-host>:8080/sslcat-panel/`, 기본 계정 `admin`, 기본 비밀번호 `admin*9527` (첫 로그인 시 변경하세요). 관리자 URL 접두사와 관리 포트는 모두 구성 가능합니다.
네. SSLcat은 Let's Encrypt DNS-01 챌린지를 통해 `*.example.com` 같은 와일드카드 인증서를 발급합니다. 와일드카드 도메인은 자동으로 DNS-01로 강제되며, AWS Route53 및 기타 DNS 공급자와 짝을 이루어 검증을 수행합니다.
관리자 패널의 "사이트"에서 도메인, 대상 호스트, 포트를 추가하세요. 여러 백엔드를 추가하려면 `load_balancer_enabled`를 활성화하고, 알고리즘(round_robin / least_conn / ip_hash 등)을 선택하고, 헬스 체크를 켜고, 백엔드를 나열하세요. JSON 설정을 직접 편집할 수도 있습니다(SSLcat은 YAML이 아닌 JSON을 사용합니다).
네. v2.0 라인은 운영 경로를 지속적으로 강화하고 있습니다: 인증서, 키, 설정 버전, 토큰, 세션의 원자적 쓰기; 모든 컴포넌트에서 멱등적 Stop / Close; 동시성에서 더 안전한 업스트림 캐싱; 고처리량 WAF; 견고한 HTTP/2 / HTTP/3 / WebSocket 장기 연결. 최근 튜닝으로 유휴 상태 CPU를 50–100%에서 <1%로, 다중 Runner 설정을 약 97% 감소시켰습니다.
1) MCP 활성화: `sslcat mcp enable`. 2) 토큰 생성: `sslcat mcp token create --name claude-desktop --scopes read,site:write,cert:write`. 평문 토큰은 한 번만 표시됩니다 — 안전하게 보관하세요. 3) Claude Desktop을 Streamable HTTP 엔드포인트(기본값 `https://your-domain/sslcat-panel/mcp/stream`)와 베어러 토큰으로 구성하세요. Cursor, Cherry Studio, Continue.dev 및 curl 디버깅을 다루는 전체 구성은 `docs/mcp-client-setup.md`를 참조하세요.
네. 모든 파괴적인 도구는 2단계 확인을 사용합니다: 첫 번째 호출은 영향 정보(예: `cert_delete`는 인증서가 프록시 규칙에 의해 참조되는지 여부와 남은 일수를 표시; `proxy_route_delete`는 접두사와 백엔드를 나열)와 60초 TTL `confirm_token`이 포함된 dry-run 미리보기를 반환합니다. AI는 실제로 실행하기 위해 두 번째 호출의 `confirm` 인수에 그 토큰을 다시 전달해야 합니다. 토큰은 (token_name, tool, args hash)에 바인딩되어 있어 도구나 인수 간에 재사용할 수 없습니다.
Isolation Forest가 SSLcat에 내장되어 있습니다. `RequestSampler`는 각 실제 요청에서 5,000개 슬롯 링 버퍼로 특징을 추출합니다; 학습은 링에서 직접 샘플을 가져와 포레스트를 `${data_dir}/ml/isolation_forest.json` 아래에 JSON으로 영속화합니다(다음 시작 시 자동 로드). 추론 결과는 200개 슬롯 링 버퍼에 들어가므로, 관리자 패널의 "최근 탐지" 탭은 하드코딩된 모의 데이터가 아닌 실제 트래픽을 반영합니다.
Linux(모든 주요 배포판), macOS, Windows; amd64 및 arm64 바이너리가 모두 게시됩니다. 운영 환경에서는 Linux의 systemd 아래에서 SSLcat을 실행하는 것을 권장합니다.
최소: 512 MB RAM, 100 MB 디스크. 권장: 2 GB RAM, 1 GB 디스크. 소스에서 빌드하려면 Go 1.21+가 필요합니다.
모두 지원합니다. WebSocket은 업스트림으로 투명하게 전달됩니다; HTTP/2 / HTTP/3 상의 SSE는 쓰기 시간 초과가 장기 실행 스트림을 죽이지 않도록 튜닝되어 있습니다; PHP 사이트는 FastCGI 백엔드를 통해 작동합니다.
관리자 패널은 제한된 tailing으로 로그를 읽습니다(큰 로그 파일은 메모리에 절대 로드되지 않습니다). 구성된 로그 파일을 직접 tail할 수도 있습니다. MCP를 통해 AI 클라이언트는 `sslcat://logs/access?since=10m&domain=foo.com&limit=200` 같은 리소스로 tail을 가져올 수 있습니다.
SSLcat은 기본적으로 Let's Encrypt를 타깃으로 합니다 — HTTPS를 기본값으로 만들기 위해 존재하는 무료 공용 CA입니다. `cert_upload`를 통해 상용 인증서를 업로드할 수도 있습니다; SSLcat은 PEM 파싱, 인증서/키 쌍 매칭, CN/SAN 커버리지를 검증합니다.
1) `sslcat doctor --json`은 설정, 포트, 인증서 디렉터리, 사이트 루트, 업스트림, MCP 토큰 상태에 걸친 원샷 자체 점검을 실행합니다. 2) `sslcat status --json`은 버전, 리스닝 매개변수, 사이트 / 인증서 / MCP 요약을 출력합니다. 3) SSLcat 오류 로그와 `${data_dir}/mcp_audit.YYYYMMDD.log`를 읽거나, MCP `error_log_list` / `error_log_tail` 도구를 통해 AI가 읽도록 하세요(SSLcat 자체와 모든 프록시 / 정적 / php 사이트를 다룹니다). 4) `sslcat proxy health-check --domain foo.com --include-routes --json`은 메인 백엔드와 모든 PathPrefixRule 백엔드를 병렬로 프로브합니다. 5) 서버는 `X-App-Version` / `X-Server-Version` 응답 헤더를 통해 버전을 노출하므로, 실제로 트래픽을 처리하는 이미지가 무엇인지 확인할 수 있습니다.
v2.2.0-rc1은 CLI 운영 명령을 추가합니다: `sslcat status [--json]`(런타임 요약), `sslcat doctor [--json]`(설정 / 포트 / 인증서 / 사이트 루트 / 업스트림 / MCP 토큰에 걸친 자체 점검), `sslcat site list/add/update/delete/enable/disable`(정적 및 PHP 사이트용 CRUD — 삭제는 명시적 `--yes`가 필요함), `sslcat proxy health-check [--domain] [--include-routes] [--json]`(TCP 프로브). 전역 `-config`는 하위 명령 앞에 배치할 수 있습니다. v2.3.0-rc1은 MCP 도구 `error_log_list` 및 `error_log_tail`과 리소스 `sslcat://logs/error-sources` 및 `sslcat://logs/error{?id,kind,domain,since,keyword,limit,max_bytes}`를 추가하여 AI 클라이언트가 SSLcat 자체와 개별 사이트의 최근 오류를 나열하고 읽을 수 있습니다. 내부적으로 `internal/mcp/logview`는 제한된 로그 리더(기본 마지막 1 MB, 최대 4 MB)이므로 큰 로그 파일이 요청 경로를 차단할 수 없습니다.
이미 출시됨: 전체 MCP 통합 P1–P5 (v2.1.0), CLI 운영 및 자체 점검 명령 (v2.2.0-rc1), MCP 오류 로그 읽기 및 제한된 로그 리더 (v2.3.0-rc1). 계획됨: Kubernetes 통합, 다중 클러스터 지원, 고급 캐싱 전략, 플러그인 시스템, GraphQL API.
MIT. 코드, 이슈, 릴리스 모두 GitHub에 있습니다: https://github.com/xurenlu/sslcat . 이슈, PR, `docs/` 아래의 추가 사용 사례를 매우 환영합니다.
没有找到您要的答案?
如果您有其他问题或需要技术支持,请通过以下方式联系我们:
📧 邮箱: xurenlu@gmail.com
💬 GitHub Issues:github.com/xurenlu/sslcat/issues