Opnieuw ondertekenen Java code door verlopen Sectigo timpestamping certificaat

Met Java code ontwikkelde software ondertekend met een code signing certificaat zal opnieuw ondertekend moeten worden als de code is ondertekend door de timestamping service van timestamp.comodoca.com, met een certificaat dat is uitgegeven voor 4 maart 2019. Het timestamping certificaat verloopt op 9 juli 2019.

Oorzaak

Een handtekening geplaatst met een code signing certificaat verloopt in principe niet. Maar om zeker te weten dat een digitale handtekening geldig is, moet de ondertekening gedaan worden met een geldig certificaat. Dit maakt het noodzakelijk te weten wanneer de handtekening is geplaatst.

Een methode om zeker te weten dat de handtekening is geplaatst met een geldig code signing certificaat, is het alleen accepteren van code die is ondertekend door een nog geldig certificaat. Een ongewenst gevolg hiervan is dat iedere keer als een certificaat verloopt, de code opnieuw ondertekend en verspreid moet worden, ook als de code niet gewijzigd is. Het is voor lange-termijn validatie daarom gemakkelijker om tijdens het ondertekenen van code ook een timestamp toe te voegen. Dit bewijst dat de digitale handtekening op het tijdstip van ondertekening geldig was.

Het certificaat gebruikt voor timestamp.comodoca.com verloopt bijna. Dit betekent dat (sommige) Java applicaties opnieuw ondertekend moeten worden door de vernieuwde timestampserver van timestamp.sectigo.com. Java checkt zowel of het gebruikte code signing als het timestamping certificaat nog geldig zijn, zodra beide verlopen zijn wordt de applicatie als ongeldig of niet-getekend beschouwd.

Gevolgen

Deze issue heeft impact op alle op Java gebaseerde applicaties ondertekend met een Sectigo (Comodo) code signing certificaat dat al is verlopen, of verloopt voor 9 juli 2019, en een timestamp bevat van timestamp.comodoca.com. Gebruikers en processen die gebruikmaken van de applicatie kunnen hierdoor problemen ondervinden. Zodra het timestamping certificaat verloopt zijn Java applicaties niet meer in staat om er vanuit te gaan dat de timestamp is zet toen het certificaat geldig was. Het zal hierdoor niet langer kunnen bevestigen dat de originele handtekening is gemaakt voordat het code signing certificaat is verlopen.

Voor het controleren of de ondertekende JAR bestanden opnieuw ondertekend moeten worden, gebruik je het onderstaande commando;

 C:\>"\Program Files\Java\jdk-12.0.1\bin\jarsigner.exe" -verify signed_file.jar

Opnieuw ondertekenen is noodzakelijk als:

De applicatie zal direct opnieuw ondertekend moeten worden als het 'jar verify' resultaat onderstaande tekst bevat. Een nieuw codesigning certificaat dat nog geldig is, is noodzakelijk;

 The timestamp will expire within one year on 2019-07-09. However, the JAR will be valid until the signer certificate expires on 2019-07-09 (or earlier).

Onderteken de applicatie opnieuw, voordat het huidige codesigning certificaat verloopt, als het 'jar verify' resultaat onderstaande tekst bevat.

 The timestamp will expire within one year on 2019-07-09. However, the JAR will be valid until the signer certificate expires on 2019-07-10 (or later).

Oplossing

Om lange-termijn validatie voor een ondertekende Java applicatie te garanderen, zul je de applicatie opnieuw moeten ondertekenen met de TSA service die bereikbaar is via http://timestamp.sectigo.com. Alle hiermee geplaatste timestamps hebben een geldigheid van ruim tien jaar.

Overige informatie

Meer informatie kan je vinden in de Sectigo knowledgebase

point up