-tsa ou -tsacert horodatage de l'applet jar auto-signé
Quand j'ai essayé de signer dans le pot comme ci-dessous.
jarsigner -keystore my keystore myjar.jar myalias
Il donne l'avertissement de la forme:
No -tsa ou -tsacert est fourni et ce pot n'est pas datées. Sans horodatage, il se peut que les utilisateurs ne soient pas en mesure de valider ce jar après la date d'expiration du certificat du signataire (2014-05-08) ou après toute date de révocation future.
s'il vous Plaît aider à résoudre le problème.
4 réponses
le récent Java 7 fournit une (courtoisie?) mise en garde à propos de quelque chose qui est en place depuis une décennie...
Trusted Timestamping a été introduit dans Java 5 (2004). La motivation était de faire en sorte que les développeurs ne soient pas obligés "de signer à nouveau les fichiers JAR déployés chaque année" lorsque les certificats expiraient.
→ http://docs.oracle.com/javase/1.5.0/docs/guide/security/time-of-signing.html
une autorisation D'horodatage basée sur L'URL (TSA) est habituellement fourni par l'autorité de Certification (AC) émettrice travailler avec les mêmes certificats l'autorité de certification émis. Par exemple, l'url digicert tsa peut être accessible comme suit:
jarsigner -tsa http://timestamp.digicert.com [.. other options]
→ http://www.digicert.com/code-signing/java-code-signing-guide.htm
horodatage avec certificat auto-signé peut-être un objectif insaisissable puisque (1) un horodatage TSA doit être une transaction fiable sans lien de dépendance (ce qui exclut "auto timestamping"), et (2) les URLs TSA typiques sont configurées pour fonctionner avec les certificats fournis par la même organisation de L'AC (c.-à-d. L'URL TSA ne traite pas un certificat auto-signé)
mise à Jour:
Url de l'essayer pour l'horodatage des certificats auto-signés:
- Symantec:
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp
(par commentaire par brad-turek)
Pour un réseau privé, on pourrait envisager un Horodatage interne Autorité telle que Thales (nCipher) Time Stamp Server (ou historiquement OpenTSA)
cet avertissement vous indique que votre certificat jar expirera en mai. Par conséquent, les utilisateurs ne seront pas en mesure d'exécuter votre programme après cette date.
pour améliorer la situation, la fonctionnalité timestamp a été ajoutée. De cette façon, vous pouvez dire aux utilisateurs: "j'ai utilisé le certificat à ce moment - là (qui est fourni et vérifié par la time stamp agency-tsa), quand il était encore valide!"Tant que vous ne changez pas et de démissionner de votre pot, il continue à fonctionner, même après l'expiration du certificat, parce que les utilisateurs voient qu'au moment de la création le certificat était en effet valide.
pour référence: http://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html
tl; dr: si vous ignorez l'avertissement, votre pot ne court pas après le 14-05-08. Ajoutez un timestamp, et il fonctionnera aussi longtemps que vous ne modifiez rien.
Cordialement
je faisais face au même problème. Sans le timestamp le pot ne serait pas signé.
quand vous ajoutez -tsa http://timestamp.digicert.com
, il ne ferait pas d'avertissement ou d'erreur, mais le pot ne serait pas signé.
mais ensuite j'ai ajouté la partie suivante et ça a marché pour moi.
-tsacert alias
donc, en gros, ma commande finale était
jarsigner -verbose -tsa http://timestamp.digicert.com -tsacert alias -sigalg SHA256withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk alias_name
Souvenir alias_name
dans la commande et celui de keystore
doit être le même.
cette erreur est causée si des mises à jour ont été faites avec JDK Java/Oracle 1.7 u51. Ce JDK n'est pas identique au précédent.
vous pouvez installer une version précédente du JDK avant u51 (par exemple 1.7u45), ou installer JDK 6.
puis, lorsque vous recompilez, vous ne verrez pas l'erreur.