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

Add OpenSSL::SSL::SSLContext#client_hello_cb= (binding for SSL_CTX_set_client_hello_cb())

Ouverte
#1,125 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

@kou y travaille déjà.

Depuis le 13/10/2026.

  • #1126 par @kou — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
53/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
c, ruby
Domaine
backend, security

Piste de recherche

Start by reading the existing OpenSSL::SSL::SSLContext#servername_cb= binding and its tests, then inspect how the project handles OpenSSL version and LibreSSL support. Add the client_hello_cb= binding for OpenSSL 1.1.1 or later and AWS-LC, and verify it can switch contexts early enough for SNI-selected version settings to take effect.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

How about adding OpenSSL::SSL::SSLContext#client_hello_cb=, a binding for SSL_CTX_set_client_hello_cb()?

Motivation

Apache httpd and nginx use the ClientHello callback for SNI-based virtual host selection:

OpenSSL::SSL::SSLContext#servername_cb= uses the servername callback (SSL_CTX_set_tlsext_servername_callback()) for the same purpose.

The ClientHello callback is invoked at the beginning of ClientHello processing, before the protocol version is negotiated. The servername callback is invoked after that. So settings of the SSLContext selected by SNI, such as min_version and max_version, can take effect only when the context is switched in the ClientHello callback. Both commits above describe this as the reason for the change.

Compatibility

  • OpenSSL 1.1.1 or later: supported
  • AWS-LC: supported (SSL_CTX_set_client_hello_cb() is available)
  • LibreSSL: not supported (the API isn't available)
Langage dominant
C
Étoiles
276
Forks
201
Merge moyen
1 j 41 min
PR mergées (30 j)
8

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 ruby/openssl

Toutes les issues de ruby/openssl

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

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