[TLS] Use TiProxy with require issuer
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- go
- Domaine
- authentication, backend, security
Piste de recherche
Reproduisez le cas de l’émetteur TLS avec TiProxy 0.2.0 et TiDB 6.5.1, puis commencez par backend/authenticator.go:198 et comparez le handshake du proxy avec les échecs signalés dans privileges.go:540, conn.go:687 et server.go:644. Le travail est considéré comme terminé lorsqu’un utilisateur configuré avec REQUIRE ISSUER peut se connecter avec succès via TiProxy, avec un comportement identique à celui de TiDB en connexion directe et sans les erreurs d’authentification signalées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report
1. Minimal reproduce step (Required)
Get a TiDB cluster V6.5.1
CREATE USER that require issuer to connect
Get TiProxy latest
Get mysql client
Try to connect with user without SSL to TiProxy : OK
Try to connect with user_withSSL to TiProxy : NOK
Try to connect user_withSSL to TiDB:4000 : OK
MySQL [(none)]> show create user user_withSSL;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for user_withSSL@% |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER 'user_withSSL'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*pwd' REQUIRE ISSUER '/CN=MyCN' PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
TiProxy configuration :
# workdir = "./work"
[proxy]
graceful-close-conn-timeout = 15
pd-addrs = "ip_pd1:2379,ip_pd2:2379,ip_pd3:2379"
[log]
level = "debug"
[security]
min-tls-version = "1.2" # specify minimum TLS version
ssl-verify-server-cert = true
[security.cluster-tls]
# access to other components like TiDB or PD, will use this
ca = "/SSL/tidb-tiproxy_test/ca.crt"
cert = "/SSL/tidb-tiproxy_test/tiproxy.crt"
key = "/SSL/tidb-tiproxy_test/tiproxy.key"
[security.sql-tls]
# access to TiDB SQL(4000) port will use this
ssl-verify-server-cert = true
ca = "/SSL/tidb-tiproxy_test/ca.crt"
cert = "/SSL/tidb-tiproxy_test/client.crt"
key = "/SSL/tidb-tiproxy_test/client.key"
TiDB server config :
enable-telemetry = false
token-limit = 10000
[prepared-plan-cache]
enabled = true
[security]
auto-tls = true
cluster-ssl-ca = "/SSD/tls/ca.crt"
cluster-ssl-cert = "/SSD/tls/tidb.crt"
cluster-ssl-key = "/SSD/tls/tidb.pem"
ssl-ca = "/SSL/client/CA-cert.pem"
ssl-cert = "/SSL/client/Server-cert.pem"
ssl-key = "/SSL/client/Server-key.pem"
session-token-signing-cert="/SSL/tiproxy/tiproxy.crt"
session-token-signing-key="/SSL/tiproxy/tiproxy.key"
graceful-wait-before-shutdown=15
[tikv-client]
grpc-connection-count = 20
2. What did you expect to see? (Required)
When I try to connect with my user that requires issuer, I want to be connected successfuly
3. What did you see instead (Required)
Connection is refused
Error from TiProxy logs :
[2024/01/31 16:41:20.564 +01:00] [DEBUG] [main.proxy.conn.be.authenticator] [backend/authenticator.go:198] [backend does not support capabilities from proxy] [connID=2] [client_addr=127.0.0.1:37772] [addr=0.0.0.0:6000] [common=CLIENT_LONG_PASSWORD|CLIENT_FOUND_ROWS|CLIENT_LONG_FLAG|CLIENT_CONNECT_WITH_DB|CLIENT_LOCAL_FILES|CLIENT_PROTOCOL_41|CLIENT_INTERACTIVE|CLIENT_TRANSACTIONS|CLIENT_SECURE_CONNECTION|CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS|CLIENT_PLUGIN_AUTH|CLIENT_CONNECT_ATTS|CLIENT_DEPRECATE_EOF] [proxy=CLIENT_COMPRESS|CLIENT_ODBC|CLIENT_RESERVED|CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA|CLIENT_ZSTD_COMPRESSION_ALGORITHM] [backend=CLIENT_SSL]
Error from TiDB logs :
[2024/01/31 16:44:07.202 +01:00] [ERROR] [privileges.go:540] ["global priv check ssl fail"] [authUser=user_withSSL [authHost=x.x.x.x]
[2024/01/31 16:44:07.202 +01:00] [WARN] [conn.go:687] ["open new session or authentication failure"] [conn=1303266525565682207] [error="[privilege:1045]Access denied for user 'user_withSSL'@'x.x.x.x' (using password: YES)"]
[2024/01/31 16:44:07.202 +01:00] [WARN] [server.go:644] ["Server.onConn handshake"] [conn=1303266525565682207] [error="[privilege:1045]Access denied for user 'user_withSSL'@'x.x.x.x' (using password: YES)"] ["remote addr"=x.x.x.x:43778]
4. What is your version? (Required)
TiProxy : 0.2.0
TiDB cluster : V6.5.1
- Langage dominant
- Go
- Étoiles
- 73
- Forks
- 41
- Merge moyen
- 4 h 3 min
- PR mergées (30 j)
- 6
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de pingcap/tiproxy
-
migration:bb7133-tiproxy
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
migration:bb7133-tiproxy
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
[Rust-dataplane] Migration backend handshake must preserve CONNECT_WITH_DB when current-db emptyOuvertemigration:bb7133-tiproxy
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
-
[Rust-dataplane] Migration must not force CONNECT_ATTRS on backend lacking it with empty attrsOuvertemigration:bb7133-tiproxy
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
-
migration:bb7133-tiproxy
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Toutes les issues de pingcap/tiproxy
Issues similaires
-
receptorctl version: False version mismatch warning when versions differ only by a leading vOuverteneeds_triage
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 2 jours
-
kind/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
kubernetes-sigs/cluster-api-provider-ibmcloud#3023 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: message-level cache_control on chat messages is dropped, so Anthropic prompt caching never triggersPeut-être pris @Atharva-Kanherkar l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
Les mainteneurs répondent en général sous 1 jour
-
documentation good first issue help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
eugenioenko/ttt#1000 ·
Les mainteneurs répondent en général sous 1 jour
-
bug needs-acceptance wg/developer-experience-ecosystem
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
vllm-project/semantic-router#5249 ·
Les mainteneurs répondent en général sous 1 jour