auth: call_client_cert_callback() discards passphrase for encrypted keys
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 1/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 92/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- python
- Domaine
- authentication, security
Piste de recherche
Commencez dans packages/google-auth/google/auth/transport/_mtls_helper.py, au niveau de call_client_cert_callback(), puis lisez test_call_client_cert_callback dans packages/google-auth/tests/transport/test__mtls_helper.py. Mettez à jour l’argument du callback et l’attente du test, puis exécutez le test ciblé pour vérifier que la rotation des clés chiffrées ne perd plus la passphrase.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
call_client_cert_callback() in google.auth.transport._mtls_helper calls get_client_ssl_credentials(generate_encrypted_key=True) and discards the returned passphrase, returning only (cert_bytes, key_bytes).
When using SecureConnect (context_aware_metadata.json), generate_encrypted_key=True passes --with_passphrase to the certificate provider command, producing an encrypted PEM private key. During 401 certificate rotation, AuthorizedSession.request() and AuthorizedHttp.urlopen() pass those credentials to configure_mtls_channel() without the passphrase. SSLContext.load_cert_chain() then receives the encrypted key with password=None, causing OpenSSL to prompt for a passphrase on /dev/tty or fail with OSError and raise MutualTLSChannelError.
By contrast, initial mTLS setup in get_client_cert_and_key() passes generate_encrypted_key=False, relying on secure_cert_key_paths() to keep private keys in memory (os.memfd_create on Linux) or encrypt them on the fly with an ephemeral passphrase when falling back to temporary files.
Proposed Fix
Update call_client_cert_callback() in packages/google-auth/google/auth/transport/_mtls_helper.py to pass generate_encrypted_key=False:
def call_client_cert_callback():
"""Calls the client cert callback and returns the certificate and key."""
_, cert_bytes, key_bytes, _ = get_client_ssl_credentials(
generate_encrypted_key=False
)
return cert_bytes, key_bytes
Update test_call_client_cert_callback in packages/google-auth/tests/transport/test__mtls_helper.py to expect generate_encrypted_key=False.
- Langage dominant
- Python
- Étoiles
- 5.4k
- Forks
- 1.8k
- Merge moyen
- 2 j 9 h
- PR mergées (30 j)
- 138
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 googleapis/google-cloud-python
-
api: spanner type: feature request
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
googleapis/google-cloud-python#18584 ·
Les mainteneurs répondent en général sous 1 jour
-
ci: remove UV_PRERELEASE workaround once Python 3.15 is officially releasedPeut-être pris @daniel-sanche l’a pris il y a 3 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
googleapis/google-cloud-python#18532 ·
Les mainteneurs répondent en général sous 1 jour
-
auth: `impersonated_credentials` loses `subject` on copy, so `with_scopes()` and `with_quota_project()` turn off domain wide delegationPeut-être pris @Om-singhaI l’a pris il y a 22 jours. Ouverteauth priority: p2 type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
googleapis/google-cloud-python#18428 ·
Les mainteneurs répondent en général sous 1 jour
-
priority: p2 type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
googleapis/google-cloud-python#18375 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
ci: enable --strict flag in presubmit twine_checkPeut-être pris @ohmayr l’a pris il y a 12 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100
googleapis/google-cloud-python#18339 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de googleapis/google-cloud-python
Issues similaires
-
SSM GetParameter throttling during concurrent workflow launchesPeut-être pris @alexiswl l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
-
[Bug] Dev image build fails: `npm install` in the root Dockerfile runs out of memory (exit 134)Peut-être pris @andest01 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
pesu-dev/discord_bot#97 ·
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
gradio-app/gradio#13964 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 93/100
BSData/horus-heresy-3rd-edition#3232 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour