Configurer Netty avec le 2-way SSL Handsake (client et serveur de certificat)
Je suis maintenant essayer de mettre en place Netty avec un 2 way handshake SSL, où à la fois le client et le serveur de présenter et de vérifier les certificats.
Cela ne semble pas être mis en œuvre dans SslHandler. Quelqu'un a fait cela? Je suppose que ce serait aller dans le SslHandler.fonctionnement de l'échange et être déléguée à javax.net.le protocole ssl.SSLEngine?
Tous les conseils/conseils/pré-implémentations existantes?
Merci!
RÉPONSE (stackoverflow ne me permet pas de poster de façon normale), j'ai trouvé que si je mets le needClientAuth drapeau sur la SSLEngine objet avant de configurer mon SslHandler, qui prend soin de le problème!
OriginalL'auteur MeowCode | 2012-03-05
Vous devez vous connecter pour publier un commentaire.
Voici la solution, basée sur la HttpSnoop exemple de serveur à partir de la netty projet.
Lors de la configuration côté client pipeline, la ssl du moteur doit être réglée comme suit:
Alors votre SSLContext doit être modifié comme suit pour configurer un magasin de confiance en plus d'un fichier de clés (SecureChatSslContextFactory):
OriginalL'auteur MeowCode
Au lieu de
SSLEngine
utilisation nettysSslContext
pour créer un nouveauSslHandler
. Fondamentalement, vous pouvez créer de nouveauxSslContext
en passantKeyManagerFactory
comme suitPuis utilisez créé
SslContext
pour obtenir le gestionnaire deChannelPipeline
.OriginalL'auteur Isuru
L'authentification mutuelle est désormais pris en charge par SslContext (actuellement juste pour le JDK fournisseur, mais OpenSSL est à venir bientôt). Voir newClientContext et newServerContext qui maintenant prise en charge d'un TrustManagerFactory et un KeyManagerFactory. Ces statique méthodes de fabrique également en charge directement la prise de certificat, la clé et le certificat de la chaîne de fichiers pour la construction de la TrustManagerFactory et KeyManagerFactory pour vous.
Voir le JdkSslEngineTest pour un exemple de comment exiger l'authentification du client (pour le JDK fournisseur).
OriginalL'auteur Scott Mitchell