Over half the firmwares uploaded to TCSL Armor have invalid certificates
tcsltesting.blogspot.com
tcsltesting.blogspot.com
It is rather hard to handle code signing and backdating problems purely in software without either removing the benefit of expiration or requiring someone to go sign for the legitimacy of a lot of things they only sort of trust. This has been comming up a lot with git signing and key lifetimes too.
And if the owner doesn't get that power from whoever designs the OS, it makes a reinstall of the device impossible.
The only way out I see apart from never expiring the certs is having a central third party vet the signature ('Yes, this binary with this signature was in our storage before the expiry.') A microsoft update or debian firmware repository could assume that role. But then you are depending on a third party for hardware you own yourself, and if they would rather have you upgrade, you're toast.
But, where certificates expire the whole _point_ of a code signing or document signing system that makes it different from the Web PKI (certificates for stuff that speaks TLS) is that it makes use of Time Stamping, ala RFC 3161.
The Time Stamping services don't know anything about anything, except they promise to make signed documents saying they saw a particular bit-string (a hash) at a specific moment in time. Timestamps.
And it turns out that this (if you trust any Time Stamping service to know what the time is and not be corrupt) is enough to bootstrap a completely acceptable code signing system where even though the certificate expired in say, January 2017 you can trust that it was valid in March 2015 when its keys were used to sign some code, so therefore the code is still good.
The Certificate Transparency system does a lot MORE than this, but that only makes sense when we want transparency, proprietary vendors mostly do NOT want transparency.
In detail: You create a hash of your executable and send it to the third party, the TSS. They sign the hash, and never even need to see the actual executable. As long as the end user trusts the third party's cert, the TSS can guarantee the executable existed in its current shape on the date you claim it existed. A kind of notary service.
For who wants to know more: Here is a Java article detailling how this works for Java, and what happens if the TSS cert itself expires
https://blogs.oracle.com/java-platform-group/signed-code-nee...
And wikipedia is interesting too:
I will contribute by uploading my firmware as instructed here https://tcsltesting.blogspot.com/2018/08/instructions-on-how...
For more on firmware, open-source and boot integrity, see the talks and references at https://www.platformsecuritysummit.com/2018/topic/boot/, especially "Firmware is the new Software".
The first (?) conference on open-source firmware was held this week in Germany, https://osfc.io.
The first problem is that certs used to sign a lot of firmware seem to be test certs.
The second problem is that (unless the OP misunderstands firmware signing) a lot of the certs were expired at the time the firmware was signed.
All in all this just seems like something that should be enforced through a standards body. Like, to get FCC or customs approval, or some other checkmark that allows selling your product, show that all your software was signed properly.