Мы подписали наше приложение Java Web Start с сертификатом подписи кода из CA (Thawte). Подпись имеет временную метку (мы передаем аргумент -tca https://timestamp.geotrust.com/tsa инструменту jarsigner), чтобы быть действительным после истечения срока действия сертификата. В настоящее время, когда сертификат действителен, приложение работает отлично. Но когда мы пытаемся изменить местное время для симуляции срока действия сертификата, приложение не запустится. Мы получаем следующее исключение:Как проверить, будет ли приложение Java Web Start продолжать работу после истечения срока действия сертификата
java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Responder's certificate not within the validity period
at com.sun.deploy.security.RevocationChecker.checkOCSP(Unknown Source)
at com.sun.deploy.security.RevocationChecker.check(Unknown Source)
at com.sun.deploy.security.TrustDecider.checkRevocationStatus(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.isAllPermissionGrantedInt(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: Responder's certificate not within the validity period
at sun.security.provider.certpath.OCSPResponse.verify(Unknown Source)
at sun.security.provider.certpath.OCSP.check(Unknown Source)
at sun.security.provider.certpath.OCSP.check(Unknown Source)
at sun.security.provider.certpath.OCSP.check(Unknown Source)
at com.sun.deploy.security.RevocationChecker$2.run(Unknown Source)
at com.sun.deploy.security.RevocationChecker$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.RevocationChecker.doPrivilegedOCSPCheck(Unknown Source)
... 20 more
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Thu Dec 17 00:59:59 CET 2015
at sun.security.x509.CertificateValidity.valid(Unknown Source)
at sun.security.x509.X509CertImpl.checkValidity(Unknown Source)
... 28 more
Свидетельство действует с 09.10.2015 по 08.11.2017.
Мы попытались проверить подписанный JAR с помощью инструмента jarsigner. Кажется, что все файлы имеют временную метку:
[entry was signed on 9.10.15 16:42]
X.509, CN="GEOVAP, spol. s.r.o.", OU=Software, O="GEOVAP, spol. s.r.o.", L=Pardubice, ST=Czech Republic, C=CZ
[certificate is valid from 9.10.15 2:00 to 8.11.17 0:59]
X.509, CN=thawte SHA256 Code Signing CA, O="thawte, Inc.", C=US
[certificate is valid from 10.12.13 1:00 to 10.12.23 0:59]
Таким образом, вывод jarsigner представляется правильным. Может ли кто-нибудь подтвердить, что это действительно означает, что подпись имеет временную метку?
Мы заметили, что если мы изменим местное время всего на несколько (3) дней вперед, приложение будет работать. Но если мы изменим его больше (неделя), то получим исключение. Проверяет ли сервер ЦС время локального клиента? Если это так, как мы можем имитировать срок действия сертификата? Спасибо.
Кажется, что Oracle установил на j8U151. По крайней мере, у нас была эта проблема и она не воспроизводится в 151. Не могли бы вы поделиться ссылкой на эту проблему? – docDevil
@docDevil: Цитата из одного из наших случаев в рамках платной поддержки Oracle. Эти случаи не являются общедоступными, поэтому я не могу предоставить ссылку. Тем не менее, я также собираюсь проверить поведение 8u151. – Holger
@docDevil: Мой тест с 8u151 Web Start также показывает, что подписи остаются в силе даже после даты истечения срока действия сертификатов и сертификатов TSA. 8u144 Web Start блокирует приложение. – Holger