Record the code-signing decision
Waiting for a certificate from the organisation's own certificate authority rather than buying one from a public CA. Every server this installer runs on is centrally managed and already trusts that root, so an internally issued Authenticode certificate removes the unknown-publisher warning exactly where it matters; a public certificate would buy trust on machines this software never reaches. Notes the interim measure that costs nothing: publish the SHA-256 through a channel separate from the installer, since a hash beside the file is only as trustworthy as write access to that location. Wording avoids naming internal infrastructure, since docs/ is published.
This commit is contained in:
@@ -154,6 +154,23 @@ warning, and the SHA-256 is the only integrity check. This is the significant
|
|||||||
remaining gap before wider distribution: a checksum published next to the file
|
remaining gap before wider distribution: a checksum published next to the file
|
||||||
protects against corruption, not against someone who can write to that location.
|
protects against corruption, not against someone who can write to that location.
|
||||||
|
|
||||||
|
The decision taken is to wait for a certificate from the organisation's own
|
||||||
|
certificate authority rather than buy one from a public CA. Every server this
|
||||||
|
installer runs on is centrally managed, and that CA's root is already trusted on
|
||||||
|
those machines, so an internally issued Authenticode certificate removes the
|
||||||
|
warning exactly where it matters. A public certificate would buy trust on
|
||||||
|
machines this software never reaches.
|
||||||
|
|
||||||
|
Until then, publish the SHA-256 through a channel SEPARATE from the installer
|
||||||
|
itself. A hash sitting beside the file is only as trustworthy as write access to
|
||||||
|
that location; a hash the operator gets another way means tampering has to
|
||||||
|
succeed twice.
|
||||||
|
|
||||||
|
Wiring it up afterwards is small: Inno has native SignTool support, so a
|
||||||
|
directive in the script and a signtool configuration on the build machine sign
|
||||||
|
the installer and its uninstaller. Include a timestamp server, or signatures
|
||||||
|
stop verifying when the certificate expires.
|
||||||
|
|
||||||
**Compiling requires Windows.** `build-installer.ps1` exists so the whole
|
**Compiling requires Windows.** `build-installer.ps1` exists so the whole
|
||||||
process can run on a Windows workstation. Nothing about it runs in CI, so a
|
process can run on a Windows workstation. Nothing about it runs in CI, so a
|
||||||
release is a deliberate act by a person.
|
release is a deliberate act by a person.
|
||||||
|
|||||||
Reference in New Issue
Block a user