(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Javaプログラム起動が「証明書の確認に失敗しました。アプリケーションは実行されません。」で止められる

(ヽ'ω`) < セキュリティ保護のためにブロックされたアプリケーション

Java Web Startで提供されているアプリケーションが、下記のメッセージが表示されて起動できない。

証明書の確認に失敗しました。アプリケーションは実行されません。

f:id:tsugi-hagi:20141125113203p:plain

詳細情報をクリックすると

f:id:tsugi-hagi:20141125113216p:plain

sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: algorithm constraints check failed
    at sun.security.validator.PKIXValidator.doValidate(Unknown Source)
    at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at com.sun.deploy.security.TrustDecider.getValidationState(Unknown Source)
    at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
    at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.security.cert.CertPathValidatorException: algorithm constraints check failed
    at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(Unknown Source)
    at sun.security.provider.certpath.PKIXCertPathValidator.doValidate(Unknown Source)
    at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(Unknown Source)
    at java.security.cert.CertPathValidator.validate(Unknown Source)
    ... 21 more

どうやら、アルゴリズムの制限チェックに引っかかっているっぽい。

(ヽ'ω`) < と、言われましても…

例外のメッセージで検索すると簡単にヒット。

TECH TIP: "Failed to validate certificate" erro... | CA Communities

なんでもJRE7u40からアプリケーション証明書に必要な鍵長が1024bit以上になったと。

これ以下の鍵長(上記ページでは512bit)の場合は、アルゴリズムの制限チェックに引っかかりエラーが発生する。

(ヽ'ω`) < 対処法

上記URLに書いてあるとおり、

JREがインストールされているディレクトリ、WindowsのデフォルトであればC:\Program Files (x86)\Java\jre*、の更に下、lib/security/java.securityファイルを開く。

下記の行があるはずなので

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

例えばこのように書き換える

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 256

(ヽ'ω`) < でもこれってダメですよね

基本的にはダメ。アプリケーションの発行元に問い合わせて、妥当な鍵長の証明書に更新してもらうべき。