Java のインストール方法とか同梱される cacerts や tzdb.dat の確認
Java の導入方法や配置されるファイルを説明しているページがなかったので作った。
TL;DR
- Oracle Java SE とそれ以外の各種 OpenJDK 配布物についていろいろと確認
- (Amazon Corretto / OpenJDK(Redhat) 以外では) cacerts の更新を別の運用として考えておくほうがよさそう
- 利用する Web サービスの情報に合わせるか、とりあえず最新情報を反映するか
- 手放しだとどこかで刺さりそう
- 証明書の検証が失敗する問題に出くわす可能性
- 利用している配布物の違いにより片方では証明書の検証に成功し、もう一方では失敗するなどの問題に出くわす可能性
- (OpenJDK(Redhat) 以外では) tzdb.dat の更新を別の運用として考えておくほうがよさそう
- Oracle の提供する tzupdater を利用する (提供ライセンスは BCL)
- Azul の提供する ziupdater を利用する (提供ライセンスは GPLv2+CE)
- だがどちらも tzdata2018f.tar.gz より新しいタイムゾーンデータを反映できないという不具合がある
- Redhat はこの不具合を解決済みで tzdata2018g を反映している!
- 要チェック! JDK-8212684
対象にした配布物
- Amazon Corretto 8
- Azul Zulu 8
- Azul Zulu 11
- Oracle OpenJDK 11
- Oracle Java SE 11
- OpenJDK 8 (AdoptOpenJDK)
- OpenJDK 11(AdoptOpenJDK)
- OpenJDK 8 (Redhat)
- OpenJDK 11 (Redhat)
考慮事項
- 環境
- インストール方法
- 配置先
- バージョン情報
- cacerts
- tzdb.dat
調査した結果
Amazon Corretto 8
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ amazon-linux-extras install corretto8 $ yum install -y java-1.8.0-amazon-corretto-devel
配置
インストール先は /usr/lib/jvm
の下でした。
alternatives
にも対応しています。
$ ls -ld /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64 drwxr-xr-x 9 root root 4096 Nov 23 05:38 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64 $ alternatives --config java There are 4 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java 2 /usr/lib/jvm/zulu-8/bin/java 3 /usr/lib/jvm/zulu-11/bin/java *+ 4 /usr/java/jdk-11.0.1/bin/java Enter to keep the current selection[+], or type selection number: ^C
バージョン情報
2018/11/23 時点ではバージョン情報に amazon-corretto-preview
という文字列が入っています。
$ /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java -version openjdk version "1.8.0_192" OpenJDK Runtime Environment (build 1.8.0_192-amazon-corretto-preview-b12) OpenJDK 64-Bit Server VM (build 25.192-b12, mixed mode)
cacerts
cacerts
は ca-certificates
パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。
依存パッケージとして管理されているため、更新の手間は軽減できそうです。
キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。
$ yum deplist java-1.8.0-amazon-corretto | grep ca-certificate dependency: ca-certificates provider: ca-certificates.noarch 2018.2.22-70.0.amzn2 $ ls -l /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/security/cacerts lrwxrwxrwx 1 root root 53 Nov 23 05:35 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/security/cacerts -> ../../../../../../../../../../../etc/pki/java/cacerts $ ls -l /etc/pki/java/cacerts lrwxrwxrwx 1 root root 40 Oct 10 18:54 /etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts $ yum provides /etc/pki/ca-trust/extracted/java/cacerts Loaded plugins: ovl, priorities 153 packages excluded due to repository priority protections ca-certificates-2017.2.14-71.amzn2.noarch : The Mozilla CA root certificate bundle Repo : amzn2-core Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2018.2.22-70.0.amzn2.noarch : The Mozilla CA root certificate bundle Repo : amzn2-core Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2018.2.22-70.0.amzn2.noarch : The Mozilla CA root certificate bundle Repo : installed Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts $ keytool -list -keystore /etc/pki/ca-trust/extracted/java/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 133 entries $ grep -c "BEGIN CERTIFICATE" /etc/pki/tls/cert.pem 133
tzdb.dat
tzdb.dat
は Java だけが利用するタイムゾーン情報データベースです。
tzdata2018e
から変換したファイルが配置されていました。
OS の tzdata
パッケージとは独立しています。
IANAで公開されているデータベースファイルを ziupdater や tzupdater で変換して使用します。
$ ls -l /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat -rw-r--r-- 1 root root 105882 Nov 13 17:31 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat $ od -Ax -t x1z /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
Azul Zulu 8
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ yum install -y https://cdn.azul.com/zulu/bin/zulu8.33.0.1-jdk8.0.192-linux.x86_64.rpm
RHEL や Oracle Linux なら Yum リポジトリを利用することもできる。
$ yum-config-manager --add-repo http://repos.azulsystems.com/rhel/zulu.repo $ yum-config-manager --enable zulu $ yum install -y zule-8
配置
インストール先は /usr/lib/jvm
の下でした。
alternatives
にも対応しています。
$ ls -ld /usr/lib/jvm/zulu-8 drwxr-xr-x 9 root root 4096 Nov 23 18:14 /usr/lib/jvm/zulu-8 $ alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java *+ 2 /usr/lib/jvm/zulu-8/bin/java Enter to keep the current selection[+], or type selection number:
バージョン情報
2018/11/23 時点ではバージョン情報に Zulu 8.33.0.1-linux64
という文字列が入っています。
$ /usr/lib/jvm/zulu-8/jre/bin/java -version openjdk version "1.8.0_192" OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01) OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 158 でした。
$ keytool -list -keystore /usr/lib/jvm/zulu-8/jre/lib/security/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 158 entries
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat -rw-r--r-- 1 root root 105882 Oct 20 00:52 /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat $ od -Ax -t x1z /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
Azul Zulu 11
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
yum install -y https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux.x86_64.rpm
RHEL や Oracle Linux なら Yum リポジトリを利用することもできる。
$ yum-config-manager --add-repo http://repos.azulsystems.com/rhel/zulu.repo $ yum-config-manager --enable zulu $ yum install -y zule-11
配置
インストール先は /usr/lib/jvm
の下でした。
alternatives
にも対応しています。
$ ls -ld /usr/lib/jvm/zulu-11 drwxr-xr-x 9 root root 4096 Nov 23 21:23 /usr/lib/jvm/zulu-11 $ alternatives --config java There are 4 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java 2 /usr/lib/jvm/zulu-8/bin/java 3 /usr/lib/jvm/zulu-11/bin/java *+ 4 /usr/java/jdk-11.0.1/bin/java Enter to keep the current selection[+], or type selection number: ^C
バージョン情報
2018/11/23 時点ではバージョン情報に Zulu11.2+3
という文字列が入っています。
$ /usr/lib/jvm/zulu-11/bin/java -version openjdk version "11.0.1" 2018-10-16 LTS OpenJDK Runtime Environment Zulu11.2+3 (build 11.0.1+13-LTS) OpenJDK 64-Bit Server VM Zulu11.2+3 (build 11.0.1+13-LTS, mixed mode)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 158 でした。
$ keytool -list -keystore /usr/lib/jvm/zulu-11/lib/security/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 158 entries
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/zulu-11/lib/tzdb.dat -rw-r--r-- 1 root root 105882 Oct 20 00:04 /usr/lib/jvm/zulu-11/lib/tzdb.dat $ od -Ax -t x1z /usr/lib/jvm/zulu-11/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
Oracle OpenJDK 11
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ curl -L https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz | tar xzf - -C /usr/lib/jvm/
配置
配布形式が tar.gz
のため、インストール先は任意。
当然 alternatives
にも未対応。
$ ls -ld /usr/lib/jvm/jdk-11.0.1 drwxr-xr-x 8 root root 4096 Nov 24 09:12 /usr/lib/jvm/jdk-11.0.1
バージョン情報
2018/11/23 時点ではバージョン情報に特徴的な文字列が入っていません。
$ /usr/lib/jvm/jdk-11.0.1/bin/java -version openjdk version "11.0.1" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 93 でした。
$ ls -l /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts -rw-r--r-- 1 668 668 102883 Oct 6 21:17 /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts $ keytool -list -keystore /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 93 entries
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat -rw-r--r-- 1 668 668 105882 Oct 6 21:17 /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat $ od -Ax -t x1z /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
Oracle Java SE 11
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ yum install -y jdk-11.0.1_linux-x64_bin.rpm
配置
インストール先は /usr/java
の下でした。
alternatives
にも対応しているようです。
$ ls -ld /usr/java/jdk-11.0.1 drwxr-xr-x 9 root root 4096 Nov 24 11:27 /usr/java/jdk-11.0.1 $ alternatives --config java There are 4 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java + 2 /usr/lib/jvm/zulu-8/bin/java 3 /usr/lib/jvm/zulu-11/bin/java * 4 /usr/java/jdk-11.0.1/bin/java Enter to keep the current selection[+], or type selection number: ^C
バージョン情報
特徴的なのは Java(TM)
という文字列ですね。
$ /usr/java/jdk-11.0.1/bin/java -version java version "11.0.1" 2018-10-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 93 でした。
Oracle OpenJDK のファイルと完全に一致しています (diff
で確認)。
$ ls -l /usr/java/jdk-11.0.1/lib/security/cacerts -rw-r--r-- 1 root root 102883 Oct 6 21:30 /usr/java/jdk-11.0.1/lib/security/cacerts $ /usr/java/jdk-11.0.1/bin/keytool -list -cacerts -storepass changeit | head -n 4 Keystore type: JKS Keystore provider: SUN Your keystore contains 93 entries $ diff /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts /usr/java/jdk-11.0.1/lib/security/cacerts
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
Oracle OpenJDK のファイルと完全に一致しています (diff
で確認)。
$ ls -l /usr/java/jdk-11.0.1/lib/tzdb.dat -rw-r--r-- 1 root root 105882 Oct 6 21:30 /usr/java/jdk-11.0.1/lib/tzdb.dat $ od -Ax -t x1z /usr/java/jdk-11.0.1/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.< $ diff /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat /usr/java/jdk-11.0.1/lib/tzdb.dat
OpenJDK 8 (AdoptOpenJDK)
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ curl -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u192-b12/OpenJDK8U-jdk_x64_linux_hotspot_8u192b12.tar.gz | tar xzf - -C /usr/lib/jvm/
配置
配布形式が tar.gz
のため、インストール先は任意。
当然 alternatives
にも未対応。
$ ls -ld /usr/lib/jvm/jdk8u192-b12 drwxrwxr-x 9 root root 4096 Nov 1 04:41 /usr/lib/jvm/jdk8u192-b12
バージョン情報
特徴的なのは AdoptOpenJDK
という文字列ですね。
$ /usr/lib/jvm/jdk8u192-b12/jre/bin/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)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 92 でした。
Oracle OpenJDK よりも 1 少ない。
diff
や Java 11 のリリースノート(JDK-8210432) より、TeliaSonera
のルート証明書が不足しているようです。
Jira 課題は JDK-8210432 で解決済みになっています。 バックポートが必要だと思うのですが… あとで報告します。
$ ls -l /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts -rw-rw-r-- 1 root root 101493 Nov 1 04:41 /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts $ /usr/lib/jvm/jdk8u192-b12/jre/bin/keytool -list -keystore /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 92 entries $ diff -u oopenjdk_cacerts.txt adoptopenjdk8_cacerts.txt | grep -E '^[\+\-]' --- oopenjdk_cacerts.txt 2018-11-24 10:00:11.942617000 +0900 +++ adoptopenjdk8_cacerts.txt 2018-11-24 17:46:05.708039000 +0900 -Your keystore contains 93 entries +Your keystore contains 92 entries -addtrustclass1ca [jdk], Dec 1, 2017, trustedCertEntry, -Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D +addtrustclass1ca [jdk], Dec 1, 2017, trustedCertEntry, +Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D -keynectisrootca [jdk], Dec 1, 2017, trustedCertEntry, -Certificate fingerprint (SHA1): 9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97 +keynectisrootca [jdk], Dec 1, 2017, trustedCertEntry, +Certificate fingerprint (SHA1): 9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97 -verisignclass3g3ca [jdk], Dec 1, 2017, trustedCertEntry, -Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6 -certumtrustednetworkca [jdk], Dec 1, 2017, trustedCertEntry, -Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E -teliasonerarootcav1 [jdk], Sep 6, 2018, trustedCertEntry, -Certificate fingerprint (SHA1): 43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37 +certumtrustednetworkca [jdk], Dec 1, 2017, trustedCertEntry, +Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E +verisignclass3g3ca [jdk], Dec 1, 2017, trustedCertEntry, +Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6 -globalsigneccrootcar5 [jdk], Jul 13, 2018, trustedCertEntry, -Certificate fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA -ttelesecglobalrootclass2ca [jdk], Jul 13, 2018, trustedCertEntry, -Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9 +globalsigneccrootcar5 [jdk], Jul 13, 2018, trustedCertEntry, +Certificate fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA -digicertglobalrootca [jdk], Dec 1, 2017, trustedCertEntry, -Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36 +ttelesecglobalrootclass2ca [jdk], Jul 13, 2018, trustedCertEntry, +Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9 +digicertglobalrootca [jdk], Dec 1, 2017, trustedCertEntry, +Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat -rw-rw-r-- 1 root root 105882 Nov 1 04:41 /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat $ od -Ax -tx1z /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
OpenJDK 11(AdoptOpenJDK)
確認した環境
amazonlinux:2.0.20181010 (d656eea421ba)
インストール方法
$ curl -L https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.1%2B13/OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz | tar xzf - -C /usr/lib/jvm/
配置
配布形式が tar.gz
のため、インストール先は任意。
当然 alternatives
にも未対応。
$ ls -ld /usr/lib/jvm/jdk-11.0.1+13 drwxrwxr-x 10 root root 4096 Nov 15 19:42 /usr/lib/jvm/jdk-11.0.1+13
バージョン情報
特徴的なのは AdoptOpenJDK
という文字列ですね。
$ /usr/lib/jvm/jdk-11.0.1+13/bin/java -version openjdk version "11.0.1" 2018-10-16 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)
cacerts
cacerts
に登録されている CA ルート証明書の総数は 93 でした。
Oracle OpenJDK のファイルと完全に一致しています (diff
で確認)。
$ ls -l /usr/java/jdk-11.0.1/lib/security/cacerts -rw-r--r-- 1 root root 102883 Oct 6 21:30 /usr/java/jdk-11.0.1/lib/security/cacerts $ /usr/lib/jvm/jdk-11.0.1+13/bin/keytool -list -cacerts -storepass changeit | head -n 4 Keystore type: JKS Keystore provider: SUN Your keystore contains 93 entries $ diff /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts /usr/lib/jvm/jdk-11.0.1+13/lib/security/cacerts
tzdb.dat
tzdata2018e
から変換したファイルが配置されていました。
Oracle OpenJDK のファイルとは一致しませんが、内容は変わらないと考えたい (diff
で確認)。
$ ls -l /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat -rw-rw-r-- 1 root root 105882 Nov 15 19:42 /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat $ od -Ax -t x1z /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65 >...TZDB....2018e< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.< $ diff /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat Binary files /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat and /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat differ
OpenJDK 8 (Redhat)
確認した環境
$ cat /etc/os-release NAME="Red Hat Enterprise Linux Server" VERSION="7.5 (Maipo)" ID="rhel" ID_LIKE="fedora" VARIANT="Server" VARIANT_ID="server" VERSION_ID="7.5" PRETTY_NAME="Red Hat Enterprise Linux Server 7.5 (Maipo)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:redhat:enterprise_linux:7.5:GA:server" HOME_URL="https://www.redhat.com/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7" REDHAT_BUGZILLA_PRODUCT_VERSION=7.5 REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION="7.5"
インストール方法
$ yum install -y java-1.8.0-openjdk-headless
配置
インストール先は /usr/lib/jvm
の下でした。
alternatives
にも対応しているようです。
$ ls -ld /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64 drwxr-xr-x. 3 root root 17 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64 $ alternatives --config java There is 1 program that provides 'java'. Selection Command ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java) Enter to keep the current selection[+], or type selection number: ^C
バージョン情報
特徴的なところが何もありません。
$ /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/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)
cacerts
cacerts
は ca-certificates
パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。
依存パッケージとして管理されているため、更新の手間は軽減できそうです。
キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。
$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts lrwxrwxrwx. 1 root root 41 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts -> ../../../../../../../etc/pki/java/cacerts $ ls -l /etc/pki/java/cacerts lrwxrwxrwx. 1 root root 40 Nov 17 02:38 /etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts $ ls -l /etc/pki/ca-trust/extracted/java/cacerts -r--r--r--. 1 root root 160286 Nov 17 02:38 /etc/pki/ca-trust/extracted/java/cacerts $ yum provides /etc/pki/ca-trust/extracted/java/cacerts Failed to set locale, defaulting to C Loaded plugins: product-id, search-disabled-repos, subscription-manager Repo rhel-7-server-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/2829246006869238773-key.pem ca-certificates-2013.1.95-71.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2014.1.98-70.0.el7_0.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2014.1.98-72.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2015.2.4-70.0.el7_1.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2015.2.4-71.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2015.2.6-70.1.el7_2.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2015.2.6-73.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2017.2.11-70.1.el7_3.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2017.2.14-70.1.el7_3.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2017.2.14-71.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2017.2.20-71.el7.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2018.2.22-70.0.el7_5.noarch : The Mozilla CA root certificate bundle Repo : rhel-7-server-rpms Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts ca-certificates-2017.2.20-71.el7.noarch : The Mozilla CA root certificate bundle Repo : @anaconda/7.5 Matched from: Filename : /etc/pki/ca-trust/extracted/java/cacerts $ yum deplist java-1.8.0-openjdk-headless | grep ca-certificates Failed to set locale, defaulting to C dependency: ca-certificates provider: ca-certificates.noarch 2018.2.22-70.0.el7_5 dependency: ca-certificates provider: ca-certificates.noarch 2018.2.22-70.0.el7_5 $ usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/keytool -list -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts -storepass changeit | head -n 4 Keystore type: jks Keystore provider: SUN Your keystore contains 133 entries $ grep -c "BEGIN CERTIFICATE" /etc/pki/tls/cert.pem 133
tzdb.dat
tzdb.dat
は tzdata-java
パッケージに含まれるファイルを参照するようになっています。
依存パッケージとして管理されているため、更新の手間は軽減できそうです。
2018/11/24 時点では tzdata2018g
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat lrwxrwxrwx. 1 root root 30 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat $ ls -l /usr/share/javazi-1.8/tzdb.dat -rw-r--r--. 1 root root 105734 Oct 29 14:27 /usr/share/javazi-1.8/tzdb.dat $ yum provides /usr/share/javazi-1.8/tzdb.dat Failed to set locale, defaulting to C Loaded plugins: product-id, search-disabled-repos, subscription-manager epel/x86_64/filelists | 10 MB 00:00:01 rhel-7-server-rpms/7Server/x86_64/filelists_db | 37 MB 00:00:03 tzdata-java-2015e-1.el7.noarch : Timezone data for Java Repo : rhel-7-server-rpms Matched from: Filename : /usr/share/javazi-1.8/tzdb.dat (省略) $ yum deplist java-1.8.0-openjdk-headless | grep tzdata-java Failed to set locale, defaulting to C dependency: tzdata-java >= 2015d provider: tzdata-java.noarch 2018g-1.el7 dependency: tzdata-java >= 2015d provider: tzdata-java.noarch 2018g-1.el7 $ od -Ax -t x1z /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 67 >...TZDB....2018g< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<
OpenJDK 11 (Redhat)
確認した環境
$ cat /etc/os-release NAME="Red Hat Enterprise Linux Server" VERSION="7.5 (Maipo)" ID="rhel" ID_LIKE="fedora" VARIANT="Server" VARIANT_ID="server" VERSION_ID="7.5" PRETTY_NAME="Red Hat Enterprise Linux Server 7.5 (Maipo)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:redhat:enterprise_linux:7.5:GA:server" HOME_URL="https://www.redhat.com/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7" REDHAT_BUGZILLA_PRODUCT_VERSION=7.5 REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION="7.5"
インストール方法
$ yum install -y java-11-openjdk-headless
配置
インストール先は /usr/java
の下でした。
alternatives
にも対応しているようです。
$ ls -ld /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64 drwxr-xr-x. 6 root root 68 Nov 24 03:58 /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64 $ alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java) 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/java) Enter to keep the current selection[+], or type selection number: ^C
バージョン情報
Oracle OpenJDK と完全に一致しています。
/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/java -version openjdk version "11.0.1" 2018-10-16 LTS OpenJDK Runtime Environment 18.9 (build 11.0.1+13-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode, sharing)
cacerts
cacerts
は ca-certificates
パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。
依存パッケージとして管理されているため、更新の手間は軽減できそうです。
キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。
$ ls -l /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/security/cacerts lrwxrwxrwx. 1 root root 21 Nov 24 03:58 /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/security/cacerts -> /etc/pki/java/cacerts $ yum deplist java-11-openjdk-headless | grep ca-certificates Failed to set locale, defaulting to C dependency: ca-certificates provider: ca-certificates.noarch 2018.2.22-70.0.el7_5 dependency: ca-certificates provider: ca-certificates.noarch 2018.2.22-70.0.el7_5 $ /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/keytool -list -cacerts -storepass changeit | head -n 4 Keystore type: JKS Keystore provider: SUN Your keystore contains 133 entries
tzdb.dat
tzdb.dat
は tzdata-java
パッケージに含まれるファイルを参照するようになっています。
依存パッケージとして管理されているため、更新の手間は軽減できそうです。
2018/11/24 時点では tzdata2018g
から変換したファイルが配置されていました。
$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat lrwxrwxrwx. 1 root root 30 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat $ yum deplist java-11-openjdk-headless | grep tzdata-java | head -n 10 Failed to set locale, defaulting to C dependency: tzdata-java >= 2015d provider: tzdata-java.noarch 2018g-1.el7 dependency: tzdata-java >= 2015d provider: tzdata-java.noarch 2018g-1.el7 $ od -Ax -t x1z /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/tzdb.dat | head 000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 67 >...TZDB....2018g< 000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a >.W..Africa/Abidj< 000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61 >an..Africa/Accra< 000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41 >..Africa/Addis_A< 000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67 >baba..Africa/Alg< 000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d >iers..Africa/Asm< 000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65 >ara..Africa/Asme< 000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b >ra..Africa/Bamak< 000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69 >o..Africa/Bangui< 000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00 >..Africa/Banjul.<