En ce qui concerne la suite de chiffrement TLS prise en charge par Java8, j'ai vérifié s'il existe une différence entre OracleJDK / AdoptOpenJDK / OpenJDK fourni par Linux.
J'ai créé l'outil de ligne de commande suivant et j'ai obtenu la liste.
J'ai eu une liste des OpenJDK 8 suivants avec l'outil ci-dessus.
Les détails de la version sont les suivants.
OracleJDK8 for Win64:
> java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
AdoptOpenJDK8 for Win64:
> java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_192-b12)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.192-b12, mixed mode)
CentOS7(64bit):
$ sudo yum install java-1.8.0-openjdk.x86_64
-> java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64 a été installé.
$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Amazon Linux 2(64bit):
$ sudo yum install java-1.8.0-openjdk.x86_64
-> java-1.8.0-openjdk-1.8.0.191.b12-0.amzn2.x86_64 a été installé.
$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Ubuntu 18.04 Bionic(64bit):
$ sudo apt update
$ sudo apt-get install openjdk-8-jdk
-> openjdk-8-jdk, 8u191-b12-0ubuntu0.18.04.1 a été installé.
$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Les résultats de la commande suivants ont été redirigés vers un fichier texte et enregistrés dans chaque environnement.
java -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar
java -Djava.security.properties=java.security.crypto.policy-limited -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar
java -Djava.security.properties=java.security.crypto.policy-unlimited -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar
https://github.com/msakamoto-sf/java-jsse-cipher-suites-dump-demo/tree/v201901.1/2019-01-14_result
En regardant les diffs pour chacun, les résultats suivants ont été obtenus:
est le même que l'état par défaut sans personnalisation de
crypto.policy`.Par conséquent, il semble que ce qui suit peut être confirmé.
Sans surprise, JSSE a été implémenté à l'origine en Java 100% pur, et la source est gérée par OpenJDK. Par conséquent, la même suite de chiffrement peut être utilisée avec n'importe quel binaire de construction tant qu'elle est construite à partir d'OpenJDK sans modifier la source.
L'existence de "Cipher Suite qui ne peut être utilisée qu'avec Oracle JDK" est possible, mais en ces jours où l'interopérabilité et la sécurité sont importantes, il est difficile de dire si une telle existence est autorisée dans l'écosystème Java. Sembler. (Il peut s'agir d'une extension spéciale qui ne peut être utilisée que par les utilisateurs payants du JDK Oracle, mais elle est hors de portée compte tenu de l'écosystème OpenJDK.)
Je m'inquiète depuis un moment, "Vraiment? C'est vrai ... ??", donc quand je l'ai essayé brièvement cette fois, j'ai pu confirmer qu'il n'y avait aucune différence. C'était. Pour une vérification plus rigoureuse, il est nécessaire de préparer réellement un socket serveur avec une combinaison de chaque version de protocole x suite de chiffrement unique et de vérifier si la connexion est réellement réussie, mais cette fois ce n'est pas tellement. ... J'ai donc décidé de vérifier la différence dans la plage visible depuis le SSLContext.
Pour le moment, en ce qui concerne SSL / TLS Cipher Suite, j'ai été soulagé car j'ai pu confirmer que "s'il s'agit d'une version OpenJDK, Cipher Suite qui peut être utilisé avec les binaires de n'importe quel fournisseur est le même".
Recommended Posts