Un développeur chinois a récemment rencontré un problème SSL déroutant : un certificat fonctionnait parfaitement sur nginx mais échouait sur Kestrel, le serveur web multiplateforme d'ASP.NET Core. Le problème est survenu lors de la mise à jour des certificats SSL pour un projet utilisant CYarp, qui expose Kestrel comme passerelle externe. Alors que les navigateurs acceptaient le nouveau certificat, les appareils clients – probablement avec des magasins de confiance limités ou personnalisés – le rejetaient. L'auteur a systématiquement comparé le comportement de Kestrel et de nginx, découvrant que Kestrel effectue par défaut une validation plus stricte de la chaîne de certificats. Cela inclut une vérification plus rigoureuse des certificats intermédiaires et des ancres de confiance, tandis que nginx accepte souvent des chaînes que Kestrel juge incomplètes. L'article fournit des étapes de débogage pratiques, telles que l'inspection de la chaîne de certificats avec OpenSSL et l'ajustement des paramètres de validation de Kestrel via la configuration `KestrelServerOptions`. Pour les développeurs .NET déployant Kestrel dans des rôles de périphérie ou de passerelle, c'est un rappel crucial de tester la confiance SSL sur tous les types de clients, pas seulement les navigateurs. La cause profonde n'est pas un bug mais une différence de conception : Kestrel privilégie la sécurité à la compatibilité, ce qui peut interrompre les connexions des clients anciens ou embarqués.
Un cas de débogage réel révèle que la validation de la chaîne de certificats SSL de Kestrel diffère de celle de nginx, provoquant des erreurs de confiance dans des environnements clients contraints.