QUICKGUARD ホームページ >

JAVAプログラムよりHTTPS通信した際にエラーが発生する

2015.03.17

JAVAを使っているサーバで、バージョンが著しく古い場合などに起きる
事象ですが、ログに下記のようなエラーが出力されます。

「javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: No trusted
certificate found」

原因は、JAVAのバージョンが古いため該当のルート証明書が
jks キーストアに正しく登録されていなかったためです。

まずは切り分け方法から説明します。
ブログに記載するプログラムパスは、お客様の環境に合わせて
適時読み替えてください。

■keystoreに登録されている証明書の確認

# /usr/java/j2sdk/bin/keytool -v -list -keystore /usr/java/j2sdk/jre/lib/security/cacerts

上記のコマンドを実行すると、keystoreのパスワード入力を
求められます。
※keystoreファイルのデフォルトパスワードは”changeit”

GlobalSignのルート証明書が登録されていない場合は、次の
ステップに進みます。

■GlobalSignのルート証明書をダウンロード
# wget https://jp.globalsign.com/repository/common/cer/rootcacert_r1.cer

■GlobalSignのルート証明書をjksキーストアに登録
GlobalSignのルート証明書をjksキーストアに登録
# /usr/java/j2sdk/bin/keytool -import -alias GlobalSignRootCA -keystore /usr/java/j2sdk/jre/lib/security/cacerts -file rootcacert_r1.cer

ここでも、またキーストアのパスワードを入力を求められます。

所有者: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE
実行者: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE
シリアル番号: 40000000001154b5ac394
有効日: Tue Sep 01 21:00:00 JST 1998 有効期限: Fri Jan 28 21:00:00 JST 2028
証明書のフィンガープリント:
MD5: 3E:45:52:15:09:51:92:E1:B7:5D:37:9F:B1:87:29:8A
SHA1: B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C

この証明書を信頼しますか? [no]: ※「yes」を入力すると以下
が表示される

証明書がキーストアに追加されました。

■登録された証明書の確認
# /usr/java/j2sdk/bin/keytool -v -list -keystore /usr/java/j2sdk/jre/lib/security/cacerts

*******************************************
別名: globalsignrootca
作成日: 2015/03/10
エントリのタイプ: trustedCertEntry

所有者: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE
実行者: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE
シリアル番号: 40000000001154b5ac394
有効日: Tue Sep 01 21:00:00 JST 1998 有効期限: Fri Jan 28 21:00:00 JST 2028
証明書のフィンガープリント:
MD5: 3E:45:52:15:09:51:92:E1:B7:5D:37:9F:B1:87:29:8A
SHA1: B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C
*******************************************

これで、エラー表示が無事に消えた事を確認できました。