web-dev-qa-db-fra.com

Horodatage -tsa ou -tsacert pour le pot d'applet auto-signé

Quand j'essayais de m'auto-signer dans le pot comme ci-dessous.

jarsigner -keystore my keystore myjar.jar myalias

Il donne un avertissement comme:

Aucun -tsa ou -tsacert n'est fourni et ce pot n'est pas horodaté. Sans horodatage, les utilisateurs peuvent ne pas être en mesure de valider ce bocal après la date d'expiration du certificat du signataire (2014-05-08) ou après toute date de révocation future.

Veuillez aider à résoudre le problème.

46
Raja Peela

Le récent Java 7 fournit un avertissement (de courtoisie?) À propos de quelque chose qui est en place depuis une décennie ...

Trusted Timestamping a été introduit dans Java 5 (2004). La motivation était que les développeurs ne soient pas obligés "de re-signer 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 autorité d'horodatage (TSA) basée sur l'URL est généralement fournie par l'autorité de certification (CA) émettrice pour fonctionner avec les mêmes certificats que l'autorité de certification a é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 difficile à atteindre car (1) un horodatage TSA doit être une transaction sans lien de confiance (qui exclut l '"auto-horodatage"), et (2 ) les URL TSA typiques sont configurées pour fonctionner avec les certificats fournis par la même organisation d'autorité de certification (c'est-à-dire que l'URL TSA ne traite pas un certificat auto-signé)

Mise à jour:

URL à essayer pour horodater les certificats auto-signés:

  • Symantec: -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp (par commentaire de brad-turek)

Pour un réseau privé, on pourrait envisager une autorité d'horodatage interne telle que Thales (nCipher) Time Stamp Server (ou historiquement OpenTSA)

59
l --marc l

Cet avertissement vous indique que le certificat de votre pot expirera en mai. Par conséquent, les utilisateurs ne pourront pas exécuter votre programme après cette date.

Pour améliorer la situation, la fonction d'horodatage a été ajoutée. De cette façon, vous pouvez dire aux utilisateurs: "J'ai utilisé le certificat à ce moment (qui est fourni et vérifié par l'agence d'horodatage - tsa), alors qu'il était encore valide!" Tant que vous ne modifiez pas et ne démissionnez pas de votre pot, il s'exécutera toujours, même après l'expiration du certificat, car 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 fonctionnera pas après le 14-05-08. Ajoutez un horodatage et il fonctionnera aussi longtemps que vous ne modifiez rien.

Cordialement

21
Malte

J'étais confronté au même problème. Sans l'horodatage, le pot ne serait pas signé.

Lorsque vous ajoutez -tsa http://timestamp.digicert.com, il ne donnerait aucun avertissement ou erreur mais le pot ne serait pas signé.

Mais j'ai ajouté la partie suivante et cela a fonctionné pour moi.

-tsacert alias

Donc, fondamentalement, 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

Se souvenir du alias_name dans la commande et celui dans keystore doivent être identiques.

1
vedant shirke