TLS avec SNI en Java clients
Il y a un débat en cours sur la la sécurité et la confiance du groupe de travail pour NHIN Direct concernant la propriété intellectuelle-à-domaine de la cartographie problème qui est créé avec la traditionnelle SSL. Si un PSIS (tel que défini par NHIN Direct) veut accueillir des milliers de NHIN Direct "Domaines de la Santé" pour les fournisseurs, alors il sera un "artificiellement gonflé coût" pour l'achat d'une adresse IP pour chacun de ces domaines.
Car Apache et OpenSSL ont récemment publié TLS avec le soutien de la SNI extension, il est possible d'utiliser SNI comme une solution à ce problème sur le côté serveur. Cependant, si nous décidons que nous allons permettre implémentations de serveur de la NHINDirect couche de transport de charge TLS+SNI, alors nous devons besoin que tous les clients de soutien SNI trop. OpenSSL les clients doivent le faire par défaut, et l'on peut toujours nous stunnel pour mettre en œuvre un TLS+SNI connaissance client et le proxy si votre langage de programmation donné SSL mise en œuvre ne prend pas en charge le SNI. Il semble que natif des applications Java à l'aide de OpenJDK ne supporte pas encore la SNI, mais je ne peux pas obtenir une réponse claire de ce projet. Je sais qu'il y a OpenSSL bibliothèques Java disponible, mais je n'ai aucune idée si cela peut être considéré comme viable.
Pouvez-vous me donner un "état de l'art" résumé de l'endroit où TLS+SNI soutien est pour des clients Java? J'ai besoin d'un Java exécutants point de vue sur ce.
OriginalL'auteur ftrotter | 2010-05-10
Vous devez vous connecter pour publier un commentaire.
Je suis en train de travailler sur le même projet que ftrotter.
Remarque: l'exigence de soutien pour milliers de domaines. Je ne pense pas que SANs allons couper la moutarde pour deux raisons. Tout d'abord, la taille du certificat va devenir énorme, qui risquent d'entraîner des problèmes de performances à un minimum. Deuxièmement, ces domaines vont et viennent fréquemment, en particulier dans les premiers jours de NHIN Direct. Le fardeau opérationnel de devoir mettre à jour le certificat à chaque fois un domaine vient ou va, va être inacceptable, à mon humble avis.
À ftrotter demande, j'ai fait quelques recherches sur google sur le sujet de java, TLS et de la SNI, et d'autres façons de mettre en œuvre ce qui équivaut à un nommé hébergement virtuel basé sur la situation, avec un certificat par l'hôte virtuel. Voici ce que j'ai trouvé:
JSSE (Java Secure Socket Extension) prend en charge TLS, et a "une prise en charge partielle" pour TLS+SNI. Je n'ai aucune idée de ce qu'une prise en charge partielle signifie dans ce contexte. Le commentaire, je suis voyant indique que le soutien qui existe n'est pas suffisant pour faire nommée hôtes virtuels basés sur l', qui est essentiellement ce que nous avons besoin.
J'ai trouvé un article qui prétend le JDK7 version de JSSE sera prise en charge de TLS+SNI (daté 11/20/2008), et j'en ai trouvé un qui prétend qu'il ne va pas (daté 2/27/2009). Ni est particulièrement autoritaire.
Certains des gens qui travaillent sur OpenJDK 7 discuté les questions autour de l'ajout de SNI soutien à JSSE de retour en Février-mars 2009, incluant l'affichage d'une source de patch. (thread commence ici:
http://www.mail-archive.com/[email protected]/msg00612.html). OpenJDK7 ne va pas être libérés quelque temps avant septembre 2010. Je n'ai aucune idée de quand la Java 7 plate-forme sera libéré.
Il n'y a rien de fond sur java.sun.com à tous, donc je ne sais vraiment pas ce que Sun plans sont à tous les.
Apparemment, il y a une façon différente de faire des serveurs virtuels par nom qui est apparemment largement compatible, à l'aide d'un seul certificat par le serveur qui l'héberge qui contient plusieurs noms communs et plusieurs autres noms. Voir http://wiki.cacert.org/VhostTaskForce et Servir les différents certificats pour la même application Tomcat à l'aide des connecteurs?
Cette approche permettrait de créer de très grandes certificats (à cause de tous ceux Snc et SANs) si vous avez beaucoup de serveurs virtuels. L'un des gens de chez NHIN Direct récente de face-à-face a été de parler au sujet de vouloir soutenir milliers des hôtes virtuels. Ma conjecture est que cela va casser beaucoup de mises en œuvre. En outre, le fait de mettre à jour le certificat à chaque fois que vous ajoutez ou supprimez un hôte virtuel sonne comme un ridicule charge opérationnelle.
En résumé, l'actuel Java état de l'art pour l'hébergement virtuel par nom avec certificats séparés par hôte virtuel semble être "non". En outre, il n'est pas clair quand ou si elle sera ajoutée.
Quelqu'un d'accord ou pas d'accord? Personne ne sait si le projet OpenJDK a aucune intention de "le portage" SNI prise en charge de Java 6?
OriginalL'auteur user337533
JavaSE 7 a SNI Soutien dans JSSE.
http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html
Remarque, il semble y avoir un problème avec elle, comme vous pouvez le lire ici:
SSL handshake alerte: unrecognized_name erreur depuis la mise à niveau vers Java 1.7.0
une idée de comment la désactiver pour les applets?
Vous pouvez ajouter (global) propriétés du système pour les Applets et WebStart dans le Panneau de Contrôle du Système. Le fichier JNLP ne peut pas spécifier les paramètres du système qui ne sont pas sûr de liste blanche. (Je pense que cette liste peut être modifiée de quelque part, mais ce n'est pas un officiel de l'interface).
Oracle JSSE amélioration du lien ci-dessus est cassé - nouveau lien est docs.oracle.com/javase/7/docs/technotes/guides/security/...
Merci, j'ai corrigé.
OriginalL'auteur
il est également possible de le patcher avec quelques lignes de l'orig Sun JDK (bootclasspath) pour obtenir Serveur SNI de travail.
Classe: le soleil.de sécurité.le protocole ssl.ServerHandshaker
Ajouter Un Champ
Patch Méthode clientHello (ajouter ces lignes)
Patch Méthode setupPrivateKeyAndChain (changer)
Ajouter à la Classe soleil.de sécurité.le protocole ssl.ServerNameExtension
OriginalL'auteur SkateScout