2010-09-25 5 views
0

L'implémentation 'C' de SSL (OpenSSL) la plus couramment utilisée ne prend pas en charge les opérations en parallèle sur sa session SSL. (c'est-à-dire que vous ne pouvez pas faire un SSL_read & SSL_write) en même temps pour la même session. Est-ce que Java base SSL, JSSE supporte cette fonctionnalité? Pour la même session SSL créée à l'aide de JSSE, puis-je lire et écrire en parallèle sur différents threads? Si oui, gère-t-il également la renégociation (si une demande de renégociation est reçue de l'autre côté, sera-t-elle traitée?)Est-il possible de lire/écrire en parallèle sur un socket SSL basé sur JSSE en Java?

Depuis, j'ai très peu ou pas du tout d'idée de Java, j'ai une autre question très basique aussi, Est-il possible de faire lire/écrire parallèlement à partir de différents threads pour le même socket en Java?

+0

Puisque vous posez des questions sur Java, ne le marquez pas C. Je supprime cette balise. – jer

Répondre

3

Oui, SSLSockets et Sockets peuvent être lus et écrits par des threads séparés; oui un SSLSocket gère la renégociation de façon transparente.

Votre utilisation de 'session' n'est pas tout à fait correcte. Vous pouvez avoir plusieurs SSLSockets (et sockets openSSL) par session SSL. En Java, ils peuvent tous être utilisés indépendamment.

+0

Merci pour votre réponse. Pouvez-vous élaborer plus? Pour autant que je sache, un objet OpenSSL "SSL_S *" ne peut pas être partagé par plusieurs threads sans application utilisant un mutex pour le protéger. Mais, en Java, cela peut-il être réalisé sans qu'une application acquière un mutex? Est-ce fait en interne par Java? Java utilise-t-il OpenSSL en dessous? – Jay

+0

Je l'ai répondu. Vous pouvez utiliser plusieurs threads. Pas de sémaphores ou de mutex ou de synchronisation requise. Java n'utilise pas OpenSSL sous le capot. – EJP

+0

Merci, mais, depuis que j'apprends le SSL depuis un certain temps, je me demande, en cas de renégociation par pair, comment l'implémentation Java le gère-t-elle? Il y a une possibilité dans le cas d'une gestion de renégociation transparente que votre 'lecture' pourrait faire un 'écrire' et 'écrire' pourrait faire une 'lecture' en interne. Comment est-ce géré? Une idée? En outre, je n'ai pas compris votre point de vue sur "plusieurs OpenSSL Sockets par session". Que voulez-vous dire par une session? – Jay