java - -tsa o-tsacert marca de tiempo para applet jar autofirmado
signed-applet (4)
El reciente Java 7 proporciona una advertencia (¿cortesía?) Sobre algo que ha estado vigente durante una década ...
Trusted Timestamping se introdujo en Java 5 (2004). La motivación fue para que los desarrolladores no se vieran obligados "a volver a firmar los archivos JAR implementados anualmente" cuando los certificados expiraran.
→ http://docs.oracle.com/javase/1.5.0/docs/guide/security/time-of-signing.html
Una autoridad de sello de tiempo (TSA) basada en URL generalmente es proporcionada por la autoridad de certificación (CA) que la emite para trabajar con los mismos certificados que la CA emitió. Por ejemplo, se puede acceder a digicert tsa url de la siguiente manera:
jarsigner -tsa http://timestamp.digicert.com [.. other options]
→ http://www.digicert.com/code-signing/java-code-signing-guide.htm
La marca de tiempo con certificado autofirmado puede ser un objetivo difícil de alcanzar ya que (1) una marca de tiempo de TSA debe ser una transacción confiable (lo que descarta la marca de tiempo "), y (2) las URL de TSA típicas están configuradas para funcionar los certificados proporcionados por la misma organización de CA (es decir, la URL TSA no procesa un certificado autofirmado)
Actualizar:
URL para probar los certificados autofirmados de marca de tiempo:
- Symantec:
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp
(por comentario de brad-turek)
Para una red privada, se podría considerar una Autoridad de marca de tiempo interna como Thales (nCipher) Time Stamp Server (o históricamente OpenTSA)
Cuando intentaba autofirmarme en el frasco como abajo.
jarsigner -keystore my keystore myjar.jar myalias
Da advertencia como:
No se proporciona -tsa o -tsacert y este jar no tiene la marca de tiempo. Sin una marca de tiempo, los usuarios no podrán validar este contenedor después de la fecha de vencimiento del certificado del firmante (2014-05-08) o después de cualquier fecha de revocación futura.
Por favor ayuda para resolver el problema.
Esta advertencia le dice que su certificado de tarro caducará en mayo. Por lo tanto, los usuarios no podrán ejecutar su programa después de esta fecha.
Para mejorar la situación, se agregó la característica de marca de tiempo. De esta manera, puede decirle a los usuarios: "¡Usé el certificado en este momento (que es proporcionado y verificado por la agencia de marca de tiempo - tsa), cuando aún era válido!" Mientras no cambies y renuncies a tu archivo, seguirá ejecutándose, incluso después de que caduque el certificado, porque los usuarios ven que, en el momento de la creación, el certificado era realmente válido.
Para referencia: http://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html
tl; dr: si ignora la advertencia, su jarra no se ejecutará después del 14-05-08. Agregue una marca de tiempo y aún se ejecutará mientras no modifique nada.
Saludos
Estaba enfrentando el mismo problema. Sin la marca de tiempo el frasco no se firmaría.
Cuando agregas -tsa http://timestamp.digicert.com
, no daría ninguna advertencia o error, pero el frasco no se firmaría.
Pero luego agregué la siguiente parte y funcionó para mí.
-tsacert alias
Así que, básicamente, mi orden final fue
jarsigner -verbose -tsa http://timestamp.digicert.com -tsacert alias -sigalg SHA256withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk alias_name
Recuerde que alias_name
en el comando y el que está en el keystore
de keystore
debe ser el mismo.
Este error se produce si las actualizaciones se realizaron con JDK Java / Oracle 1.7 u51. Este JDK NO es idéntico al anterior.
Puede instalar una versión anterior de JDK ANTES de u51 (por ejemplo, 1.7u45), o instalar JDK 6.
Luego, cuando vuelva a compilar, no verá el error.