常见问题
以下是关于 SSLcat 的常见问题解答,如果您有其他问题,请随时联系我们。
general
SSLcat est un serveur de proxy inverse SSL open source de niveau entreprise écrit en Go. Il regroupe nginx + Caddy + interface Web + GitOps dans un unique binaire : émission et renouvellement automatiques Let's Encrypt, routage intelligent par domaine, équilibrage de charge, WAF, hébergement d'applications Docker / Runner et un panneau d'administration Web moderne. Depuis la v2.1, il embarque également un serveur MCP afin que Claude / Cursor et d'autres clients IA puissent appeler ses outils directement.
MCP (Model Context Protocol) est un protocole ouvert qui connecte les clients IA à des outils externes. Depuis la v2.1, SSLcat est lui-même un serveur MCP et, à partir de la v2.3.0-rc1, il expose 22 outils (CRUD pour sites / certificats / routes proxy, contrôle de santé upstream, requêtes de tâches longues, et `error_log_list` / `error_log_tail` pour inspecter les erreurs récentes) plus 5 ressources (configuration actuelle expurgée, instantané des métriques d'exécution, fin du journal d'accès, sources des journaux d'erreurs, contenu des journaux d'erreurs). Insérez un jeton dans Claude Desktop / Cursor / Cherry Studio / Continue.dev et l'IA peut lister les sites, émettre des certificats, modifier les routes et inspecter les journaux d'accès / d'erreurs — les actions destructives passent toujours par une confirmation en deux phases.
En une ligne sur macOS / Linux : `curl -fsSL https://raw.githubusercontent.com/xurenlu/sslcat/main/install.sh | bash`. Vous pouvez également récupérer les binaires depuis la page GitHub Releases (linux-amd64 / linux-arm64 / darwin-arm64 / darwin-amd64). La documentation complète se trouve sous `docs/` et sur le site web.
Oui. SSLcat intègre Let's Encrypt (ACME). L'ajout d'un domaine déclenche l'émission automatique, et les certificats sont renouvelés 30 jours avant expiration sans interruption de service. Les défis HTTP-01 et DNS-01 sont tous deux pris en charge ; DNS-01 associé à AWS Route53 (et d'autres fournisseurs) permet d'émettre des certificats wildcard comme `*.example.com`.
Par rapport à nginx : SSLcat livre un panneau d'administration Web, SSL automatique, déploiement GitOps, supervision en temps réel et sécurité pilotée par IA dès l'installation — plus besoin de modifier les fichiers de configuration à la main. Par rapport à Caddy : SSLcat propose 6 algorithmes d'équilibrage de charge, une gestion multi-utilisateurs, le déploiement par image Docker et Runner, un système de jetons API, le streaming de journaux en direct basé sur WebSocket, et depuis la v2.1, l'intégration MCP intégrée.
HTTP/1.1, HTTP/2 et HTTP/3 (QUIC) complets, avec TLS 1.3 imposé. Les connexions WebSocket et SSE longue durée bénéficient d'un traitement particulier, et les longues tâches ACME utilisent des battements de cœur, des exemptions de délai d'écriture et une isolation de concurrence par domaine afin qu'elles ne puissent pas se ralentir mutuellement.
Six algorithmes sont intégrés (round-robin, round-robin pondéré, least-conn, IP hash, aléatoire, réponse la plus rapide), combinés à des contrôles de santé TCP et à la persistance de session. Vous pouvez attacher une liste de backends pondérés au niveau de la route sur un seul domaine.
Ajoutez SSLcat comme remote Git, puis exécutez `git push sslcat main` pour déployer — style Dokku/Heroku. L'entrée de déploiement Runner est en couches : téléversez un répertoire, téléversez un binaire, tirez directement une image Docker, construisez à partir d'un `git push`, ou utilisez un modèle. Tous les chemins convergent vers la même spécification Runner unifiée (variables d'environnement, ports, montages, commande de démarrage).
Runner est la couche d'hébergement d'applications intégrée à SSLcat. Il peut exécuter des conteneurs Docker, exécuter des binaires téléversés, exécuter des images construites à partir d'un `git push`, ou déployer à partir de modèles. Lorsque SSLcat lui-même redémarre, il ne réconcilie que l'état des conteneurs Runner — il ne redémarre jamais vos conteneurs métiers, le trafic de production n'est donc jamais accidentellement interrompu.
Correspondance de règles WAF (l'analyse du corps de requête est plafonnée à 1 Mo pour limiter la mémoire), protection DDoS, anti-force brute, listes de blocage et listes blanches d'IP / UA / empreintes TLS, jetons API à granularité fine, MFA TOTP, journaux d'audit, gestion de versions de configuration, et un détecteur d'anomalies par IA basé sur Isolation Forest avec entraînement en ligne, persistance du modèle au format JSON et inférence sur trafic réel.
Préférez la commande de réinitialisation intégrée : `sslcat users password -username admin -new-password 'NewStrongPass123!'`. À partir d'une arborescence source, vous pouvez également exécuter : `go run tools/cmd/reset_password/main.go admin 'NewStrongPass123!'`.
À partir de la v2.0.0-rc22, vous pouvez également réinitialiser via un code de récupération à usage unique. Pour générer manuellement un hachage bcrypt avec Ruby : installez bcrypt avec `gem install bcrypt`, puis exécutez `SSL_PASS='NewStrongPass123!' ruby -rbcrypt -e 'puts BCrypt::Password.create(ENV.fetch("SSL_PASS"), cost: 10)'`.
Avec Python : `python3 -m pip install bcrypt`, puis `SSL_PASS='NewStrongPass123!' python3 -c 'import bcrypt, os; print(bcrypt.hashpw(os.environ["SSL_PASS"].encode(), bcrypt.gensalt(rounds=10)).decode())'`.
Écrivez le hachage dans `admin.password_file` (généralement `/opt/sslcat/data/admin.pass` ou `./data/admin.pass`) avec le mode `600`. La récupération par fichier de mot de passe ne nécessite généralement pas de redémarrer SSLcat — la prochaine connexion lit le nouveau hachage.
`http://<your-host>:8080/sslcat-panel/`, compte par défaut `admin`, mot de passe par défaut `admin*9527` (changez-le à la première connexion). Le préfixe URL d'administration et le port de gestion sont tous deux configurables.
Oui. SSLcat émet des certificats wildcard tels que `*.example.com` via le défi DNS-01 de Let's Encrypt. Les domaines wildcard sont automatiquement forcés sur DNS-01 et s'associent à AWS Route53 et à d'autres fournisseurs DNS pour la vérification.
Ajoutez un domaine, un hôte cible et un port sous « Sites » dans le panneau d'administration. Pour ajouter plusieurs backends, activez `load_balancer_enabled`, choisissez l'algorithme (round_robin / least_conn / ip_hash etc.), activez les contrôles de santé et listez les backends. Vous pouvez également éditer directement la configuration JSON (SSLcat utilise JSON, pas YAML).
Oui. La gamme v2.0 continue de renforcer les chemins de production : écritures atomiques pour les certificats, les clés, les versions de configuration, les jetons et les sessions ; Stop / Close idempotents sur chaque composant ; mise en cache upstream plus sûre en cas de concurrence ; WAF à haut débit ; connexions longue durée HTTP/2 / HTTP/3 / WebSocket extrêmement stables. Les optimisations récentes ont fait passer le CPU en état d'inactivité de 50–100 % à moins de 1 % et les configurations multi-Runner d'environ 97 %.
1) Activez MCP : `sslcat mcp enable`. 2) Créez un jeton : `sslcat mcp token create --name claude-desktop --scopes read,site:write,cert:write`. Le jeton en clair n'est affiché qu'une seule fois — conservez-le en lieu sûr. 3) Configurez Claude Desktop avec le point d'entrée Streamable HTTP (par défaut `https://your-domain/sslcat-panel/mcp/stream`) et le jeton bearer. Voir `docs/mcp-client-setup.md` pour les configurations complètes couvrant Cursor, Cherry Studio, Continue.dev et le débogage curl.
Oui. Chaque outil destructif utilise une confirmation en deux phases : le premier appel renvoie un aperçu dry-run avec des informations d'impact (par exemple, `cert_delete` signale si le certificat est référencé par une règle de proxy et combien de jours restent ; `proxy_route_delete` liste les préfixes et les backends) plus un `confirm_token` avec un TTL de 60 secondes. L'IA doit retransmettre ce jeton dans l'argument `confirm` d'un second appel pour exécuter réellement. Les jetons sont liés à (token_name, outil, hachage des arguments), ils ne peuvent donc pas être réutilisés entre outils ou arguments.
Un Isolation Forest est intégré à SSLcat. Un `RequestSampler` extrait des caractéristiques de chaque requête réelle dans un tampon circulaire de 5 000 emplacements ; l'entraînement tire les échantillons directement du tampon et persiste la forêt au format JSON sous `${data_dir}/ml/isolation_forest.json` (chargé automatiquement au prochain démarrage). Les inférences atterrissent dans un tampon circulaire de 200 emplacements, donc l'onglet « Détections récentes » du panneau d'administration reflète le trafic réel, pas des données factices codées en dur.
Linux (toutes les distributions majeures), macOS et Windows ; les binaires amd64 et arm64 sont tous deux publiés. Nous recommandons d'exécuter SSLcat sous systemd sur Linux en production.
Minimum : 512 Mo de RAM, 100 Mo de disque. Recommandé : 2 Go de RAM, 1 Go de disque. La compilation depuis les sources nécessite Go 1.21+.
Tous les trois. WebSocket est transféré de manière transparente vers l'upstream ; SSE sur HTTP/2 / HTTP/3 est réglé pour que les délais d'écriture ne puissent pas interrompre les flux longue durée ; les sites PHP fonctionnent via un backend FastCGI.
Le panneau d'administration lit les journaux avec un tail borné (les gros fichiers de journaux ne sont jamais chargés en mémoire). Vous pouvez également effectuer un tail directement sur le fichier de journal configuré. Via MCP, les clients IA peuvent récupérer la fin avec une ressource telle que `sslcat://logs/access?since=10m&domain=foo.com&limit=200`.
SSLcat cible Let's Encrypt par défaut — une autorité de certification publique gratuite qui existe pour faire de HTTPS la norme. Vous pouvez toujours téléverser des certificats commerciaux via `cert_upload` ; SSLcat valide l'analyse PEM, l'appariement certificat/clé et la couverture CN/SAN.
1) `sslcat doctor --json` exécute un auto-diagnostic en une commande couvrant la configuration, les ports, le répertoire des certificats, les racines de sites, les upstreams et l'état des jetons MCP. 2) `sslcat status --json` affiche la version, les paramètres d'écoute, et un résumé sites / certificats / MCP. 3) Lisez le journal d'erreurs de SSLcat et `${data_dir}/mcp_audit.YYYYMMDD.log`, ou laissez l'IA les lire via les outils MCP `error_log_list` / `error_log_tail` (couvre SSLcat lui-même ainsi que chaque site proxy / statique / php). 4) `sslcat proxy health-check --domain foo.com --include-routes --json` sonde le backend principal et chaque backend PathPrefixRule en parallèle. 5) Le serveur expose sa version via les en-têtes de réponse `X-App-Version` / `X-Server-Version` afin que vous puissiez confirmer quelle image traite réellement le trafic.
v2.2.0-rc1 ajoute des commandes d'opérations CLI : `sslcat status [--json]` (résumé d'exécution), `sslcat doctor [--json]` (auto-diagnostic couvrant configuration / ports / certificats / racines de sites / upstreams / jetons MCP), `sslcat site list/add/update/delete/enable/disable` (CRUD pour les sites statiques et PHP — la suppression nécessite un `--yes` explicite) et `sslcat proxy health-check [--domain] [--include-routes] [--json]` (sonde TCP). Le `-config` global peut être placé avant la sous-commande. v2.3.0-rc1 ajoute les outils MCP `error_log_list` et `error_log_tail`, plus les ressources `sslcat://logs/error-sources` et `sslcat://logs/error{?id,kind,domain,since,keyword,limit,max_bytes}` afin que les clients IA puissent lister et lire les erreurs récentes de SSLcat lui-même et de sites individuels. En coulisse, `internal/mcp/logview` est un lecteur de journaux borné (par défaut le dernier 1 Mo, max 4 Mo) afin que les gros fichiers de journaux ne puissent pas bloquer le chemin de requête.
Déjà livré : intégration MCP complète P1–P5 (v2.1.0), commandes d'opérations CLI et d'auto-diagnostic (v2.2.0-rc1), lecture des journaux d'erreurs via MCP plus le lecteur de journaux borné (v2.3.0-rc1). Prévu : intégration Kubernetes, prise en charge multi-clusters, stratégies de mise en cache avancées, système de plugins et API GraphQL.
MIT. Le code, les issues et les releases vivent tous sur GitHub : https://github.com/xurenlu/sslcat . Les issues, les PR et les cas d'utilisation supplémentaires sous `docs/` sont les bienvenus.
没有找到您要的答案?
如果您有其他问题或需要技术支持,请通过以下方式联系我们:
📧 邮箱: xurenlu@gmail.com
💬 GitHub Issues:github.com/xurenlu/sslcat/issues