Подтвердить что ты не робот

#ИМЯ?

Когда я пытался самостоятельно подписать в банке, как показано ниже.

jarsigner -keystore my keystore myjar.jar myalias

Это дает предупреждение, например:

Нет -tsa или -tsacert, и эта банда не имеет отметки времени. Без отметки времени пользователи могут не иметь возможности проверить эту банку после даты истечения срока действия сертификата подписчика (2014-05-08) или после любой будущей даты отзыва.

Помогите решить проблему.

4b9b3361

Ответ 1

Недавняя Java 7 предоставляет предупреждение (любезность?) о том, что было на месте в течение десятилетия...

Надежная отметка времени была представлена ​​на Java 5 (2004). Мотивация заключалась в том, что разработчикам не пришлось бы "повторно подписывать развернутые файлы JAR ежегодно", когда срок действия сертификатов истек.

http://docs.oracle.com/javase/1.5.0/docs/guide/security/time-of-signing.html

Учрежденный на основе URL-адресов агент проверки времени (TSA) обычно предоставляется центром сертификации (CA) для работы с теми же сертификатами, выпущенными CA. Например, digicert tsa url может иметь доступ следующим образом:

jarsigner -tsa http://timestamp.digicert.com [.. other options]

http://www.digicert.com/code-signing/java-code-signing-guide.htm

Временная тиснение с самозаверяющим сертификатом может быть неуловимой целью, поскольку (1) временная метка TSA должна быть надежной транзакцией длины руки (которая исключает "самоограничение времени" ) и (2) типичные URL-адреса TSA настраиваются для работы с сертификатами, предоставленными одной и той же организацией CA (т.е. URL TSA не обрабатывает самозаверяющий сертификат)

Обновление:

URL-адреса, чтобы попытаться выполнить отметку самозаверяющих сертификатов:

  • Symantec: -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp (за комментарий от brad-turek)

Для частной сети можно рассмотреть внутренний орган временной отметки, такой как, например, Thales (nCipher) Time Stamp Server (или исторически OpenTSA)

Ответ 2

Это предупреждение сообщает вам, что сертификат вашей банки может истечь в банке. Следовательно, пользователи не смогут выполнить вашу программу после этой даты.

Чтобы улучшить ситуацию, была добавлена ​​функция отметки времени. Таким образом, вы можете сказать пользователям: "Я использовал сертификат в этот момент времени (который предоставлен и проверен агентством временной марки - tsa), когда он все еще действует!" Пока вы не меняете и не оставляете свою банку, она все равно будет работать даже после истечения срока действия сертификата, потому что пользователи видят, что в момент создания сертификат действительно действительно.

Для справки: http://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html

tl; dr: если вы проигнорируете предупреждение, ваша банка не будет работать после 14-05-08. Добавьте временную метку, и она будет работать до тех пор, пока вы ничего не измените.

Привет

Ответ 3

У меня была та же проблема. Без метки времени банка не будет подписана.

Когда вы добавляете -tsa http://timestamp.digicert.com, это не даст никаких предупреждений или ошибок, но все равно банку не будет подписан.

Но потом я добавил следующую часть, и это сработало для меня.

-tsacert alias

Итак, в основном моя последняя команда была

jarsigner -verbose -tsa http://timestamp.digicert.com -tsacert alias  -sigalg SHA256withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk alias_name

Помните alias_name в команде, а одно в keystore должно быть одинаковым.

Ответ 4

Эта ошибка возникает, если были сделаны обновления с JDK Java/Oracle 1.7 u51. Этот JDK НЕ идентичен предыдущему.

Вы можете установить предыдущую версию JDK до u51 (например, 7u45) или установить JDK 6.

Затем, когда вы перекомпилируете, вы не увидите ошибку.