Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

auth: call_client_cert_callback() discards passphrase for encrypted keys

Ouverte Adaptée aux débutants
#18,467 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@kwy404 y travaille déjà.

Depuis le 1/10/2026.

  • #18538 par @kwy404 — ouverte

É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

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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de googleapis/google-cloud-python

Toutes les issues de googleapis/google-cloud-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.