IdPのトラストアンカーの確認と必要なCA証明書の導入
現在メタデータリポジトリのサーバ証明書はSHA-1証明書を使用していますが、今後SHA-2証明書に移行する予定です。SHA-2証明書への移 行時にはOSやパッケージのバージョンによって、必要となるCA証明書が入っていない可能性があり、確認・導入の作業が発生する見込みです。
すでにIdPを構築済み・運用中の方は、以下の手順に従って利用しているOS、パッケージのバージョンをご確認ください。
これからIdP構築される方は構築段階で確認・導入しておくことで将来行うべき作業が不要となりますので、今回を機会にご対応ください。
確認方法
CentOS 6で提供されるOpenJDKパッケージを利用している場合
CentOS 6で提供されるjava-1.6.0-openjdkパッケージおよびjava-1.7.0-openjdkパッケージのトラストアンカーはca-certificatesパッケージにて提供されます。ca-certificateパッケージがca-certificates-2013.1.94-65.0.el6.noarch.rpmおよびそれ以降のバージョンであることを確認してください。異なる場合には最新版にアップデートしてください。CentOS 5で提供されるOpenJDKパッケージを利用している場合
CentOS 5で提供されるjava-1.6.0-openjdkパッケージおよびjava-1.7.0-openjdkパッケージのトラストアンカーは同じパッケージ内に含まれた形で提供されていますが、対象となるCA証明書が含まれるパッケージが提供されていません。手順に従って必要なCA証明書を導入してくださ い。Oracle JDK 6を利用している場合
Oracle JDK 6 Update 17およびそれ以降をご利用の場合はトラストアンカーに必要なCA証明書が含まれています。Oracle JDK 6 Update 16およびそれ以前のバージョンを利用している場合は最新版へアップデートしていただくか、手順に従って必要なCA証明書を導入してください。Oracle JDK 7およびそれ以降を利用している場合
Oracle JDK 7およびそれ以降のトラストアンカーには必要な証明書が含まれています。そのため、CA証明書の導入は不要です。
CA証明書の導入方法
IdPのトラストアンカーにSECOMのSHA-2 CA証明書を導入する手順について記載します。
証明書の導入
・https://repository.secomtrust.net/SC-Root2/index.htmlからSecurity Communication Root CA2証明書をダウンロードします。ダウンロードしたファイルのファイル名は SCRoot2ca.cer とします。
・ダウンロードしたCA証明書のフィンガープリントが一致しているか下記の値と確認してください。
$ openssl x509 -inform DER -in SCRoot2ca.cer -noout -fingerprint -md5
MD5 Fingerprint=6C:39:7D:A4:0E:55:59:B2:3F:D6:41:B1:12:50:DE:43
$ openssl x509 -inform DER -in SCRoot2ca.cer -noout -fingerprint -sha1
SHA1 Fingerprint=5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74
$ openssl x509 -inform DER -in SCRoot2ca.cer -noout -fingerprint -sha256
SHA256 Fingerprint=51:3B:2C:EC:B8:10:D4:CD:E5:DD:85:39:1A:DF:C6:C2:DD:60:D8:7B:B7:36:D2:B5:21:48:4A:A4:7A:0E:BE:F6
・OpenJDKまたはOracle JDKがインストールされていることを確認します。本手順ではOracle JDKに関して/usr/java配下にOracle JDK Update 16がインストールされている前提として説明します。
OpenJDK 1.6.0の場合
$ rpm -q java-1.6.0-openjdk java-1.6.0-openjdk-1.6.0.33-1.13.5.0.el5_11OpenJDK 1.7.0の場合
$ rpm -q java-1.7.0-openjdk java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el5_11Oracle JDKの場合は、インストールパスを確認します。
$ ls -l /usr/java/jdk1.6.0_16/
・トラストアンカー(cacerts)にSecurity Communication Root CA2 証明書 [SR3.0用]が含まれているか否かを調査します。含まれている場合には、MD5, SHA1のフィンガープリントが表示されます。
OpenJDK 1.6.0/1.7.0の場合。複数のバージョンを導入している場合にはIdPで利用しているOpenJDKのcacertsをチェックしてください。
$ keytool -list -keystore /etc/alternatives/jre/lib/security/cacerts | \grep -e '6C:39:7D:A4:0E:55:59:B2:3F:D6:41:B1:12:50:DE:43' \-e '5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74'Enter keystore password: ← パスワードを変更していない場合はデフォルトのパスワード'changeit'を入力するか、空のままEnterを入力します。Oracle JDKの場合
$ /usr/java/jdk1.6.0_16/bin/keytool -list -keystore /usr/java/jdk1.6.0_16/jre/lib/security/cacerts | \ grep -e '6C:39:7D:A4:0E:55:59:B2:3F:D6:41:B1:12:50:DE:43' \-e '5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74'
・トラストアンカー(cacerts)にSecurity Communication Root CA2 証明書 [SR3.0用]をインポートします。(aliasオプションを付けない場合はmykeyというエイリアス名になります)
OpenJDKの場合
$ sudo keytool -import -alias scrootca2 -keystore /etc/alternatives/jre/lib/security/cacerts -file SCRoot2ca.cerEnter keystore password: ← パスワードを変更していない場合はデフォルトの 'changeit' を入力します。Owner: OU=Security Communication RootCA2, O="SECOM Trust Systems CO.,LTD.", C=JPIssuer: OU=Security Communication RootCA2, O="SECOM Trust Systems CO.,LTD.", C=JPSerial number: 0Valid from: Fri May 29 14:00:39 JST 2009 until: Tue May 29 14:00:39 JST 2029Certificate fingerprints:MD5: 6C:39:7D:A4:0E:55:59:B2:3F:D6:41:B1:12:50:DE:43SHA1: 5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74Signature algorithm name: SHA256withRSAVersion: 3Extensions:#1: ObjectId: 2.5.29.15 Criticality=trueKeyUsage [Key_CertSignCrl_Sign]#2: ObjectId: 2.5.29.19 Criticality=trueBasicConstraints:[CA:truePathLen:2147483647]#3: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 0A 85 A9 77 65 05 98 7C 40 81 F8 0F 97 2C 38 F1 ...we...@....,8.0010: 0A EC 3C CF ..<.]]Trust this certificate? [no]: ← 'yes'を入力Certificate was added to keystoreOracle JDKの場合
$ sudo /usr/java/jdk1.6.0_16/bin/keytool -import -alias scrootca2 -keystore /usr/java/jdk1.6.0_16/jre/lib/security/cacerts -file SCRoot2ca.cer (内容はOpenJDKの場合と同じですので省略します)
証明書が導入されたことの確認
・トラストアンカー(cacerts)にSecurity Communication Root CA2 証明書 [SR3.0用]がインポートされていることを確認します。表示されたフィンガープリントがSecurity Communication Root CA2 証明書 [SR3.0用]と一致していることを確認してください。
OpenJDK 1.6.0の場合
OpenJDK 1.7.0の場合
Oracle JDKの場合