#ИМЯ?
Когда я пытался самостоятельно подписать в банке, как показано ниже.
jarsigner -keystore my keystore myjar.jar myalias
Это дает предупреждение, например:
Нет -tsa или -tsacert, и эта банда не имеет отметки времени. Без отметки времени пользователи могут не иметь возможности проверить эту банку после даты истечения срока действия сертификата подписчика (2014-05-08) или после любой будущей даты отзыва.
Помогите решить проблему.
Ответы
Ответ 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.
Затем, когда вы перекомпилируете, вы не увидите ошибку.