Comment puis-je faire TLS avec BouncyCastle?
Quelqu'un sait à propos des exemples de TLS avec BouncyCastle? J'ai été surpris par le manque d'eux sur Internet. Si il n'y a vraiment aucune, nous allons recueillir les réponses.
source d'informationauteur Jakub Adamek
Vous devez vous connecter pour publier un commentaire.
C'est un exemple de base, avec le serveur d'authentification uniquement et auto-signé cert. Le code est basé sur la colombie-britannique 1.49, surtout leightweight API:
où
C'est le code de client:
Vous devez utiliser l'entrée et la sortie de flux de tlsClient/ServerProtocol de lire et d'écrire des données chiffrées (par exemple tlsClientProtocol.getInputStream()). Sinon, si vous avez utilisé par exemple douille.getOutputStream(), vous pouvez simplement écrire des données non chiffrées.
Comment mettre en œuvre validateCertificate? Je suis à l'aide de certificats auto-signés. Cela signifie que je viens de regarder dans la clé-magasin sans aucun certificat de chaînes. C'est comment j'ai créer la clé de stockage:
Et c'est la validation:
Ce qui est plutôt déroutant, sont les trois différents Certificat de classes. Vous avez pour convertir entre eux, comme indiqué ci-dessus.
Scénario: Notre serveur de production est à l'aide de JDK1.6. Toutefois client serveur est mis à niveau à ne communiquer en TLS 1.2. La Communication SSL entre les deux serveurs est cassé. Mais nous ne pouvons tout simplement pas de mise à niveau JDK6 à 8 (ce qui est le soutien de TLS 1.2 par défaut) parce que cela va provoquer d'autres bibliothèques de problème de compatibilité.
L'exemple de code suivant utilise jdk1.6.0_45 et bcprov-jdk15on-153.jar (Château Gonflable SIGNÉ FICHIERS JAR) pour se connecter à n'importe quel serveur à l'aide de TLS.
Exemple montre que le JDK 6 pouvez obtenir la page de serveur dans TLS, plutôt que de certaines SSL Exception:
Un exemple de plus, bâtie sur le serveur uniquement auth réponse: TLS avec auto-signé certs avec l'authentification du client (je suis en train de montrer seulement le changement de pièces). C'est la partie serveur:
Et c'est la partie client: