Code signing industry recently adopted CAB forum recommendations wrt code signing. Now private keys can only stored on hardware (USB key) provided (or managed) by CA.
I see following downsides to this:
Is there a way to avoid some of this pain?
Options I see:
Assuming your private key is held by the DigiCert ONE service, you can replace signtool with Jsign to sign your binaries (disclaimer: I'm the author). Jsign is cross platform and sends directly the hash of your file to the DigiCert API, so you aren't tied to the DigiCert client tools requirements.
The syntax looks like this:
jsign --storetype DIGICERTONE --alias test \
--storepass "<api-key>|/path/to/Certificate_pkcs12.p12|<password>" application.exe