Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it acceptable practice to install an Authenticode code signing certificate directly on my build server to create a production signed build?

Is it acceptable practice to install an Authenticode code signing certificate directly on a build server to create a production signed build? I’m looking for some resources on the net that suggest or support that this practice is legitimate providing you’ve taken appropriate steps to secure the build server and the process by which a build is created and deployed.

All the “best practice” guidance I can find about code signing practices are way over the top in terms of suggested process. Microsoft’s reference document has as many as 6 servers in play for the simple act of signing a single assembly. http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/best_practices.doc

Some background:

My company creates simple rich-client line of business applications for its employees and direct customers. We do not create commercial software. My build server is physically secured and network secured using my companies strict security policies and procedures. Only very specific people in the organization have the ability to even start a build in my environment.

Our current process requires me to break a build/deploy process into many stages with a lot of manual process in place. We use physical devices to store the Authenticode certificates, requiring user-entered PINs to access. We have to shuffle the assemblies/manifests that require code signing to designated code signing PCs which also have to be physically secured.

To me, it is less secure to pass around a physical token/device and leave all these manual steps in place. There is nothing stopping a person with physical access to the token/device from signing anything they want. At least, with an automated, logged, controlled build server environment, you know what was signed and by who.

like image 489
Nate Jackson Avatar asked Sep 25 '12 15:09

Nate Jackson


People also ask

Where do I put code signing certificate?

The browser installs the certificate files in the browser's personal certificate store. Internet Explorer and Microsoft Edge install your code signing certificate in the Personal Certificate Store of your Computer Account in the MMC. See (Windows) Verifying Your Code Signing Certificate Installation.

What is Microsoft authenticode certificate?

Authenticode is a Microsoft code-signing technology that identifies the publisher of Authenticode-signed software. Authenticode also verifies that the software has not been tampered with since it was signed and published. Authenticode uses cryptographic techniques to verify publisher identity and code integrity.

Why do I need a code signing certificate?

Code signing increases user confidence and trust Code Signing Certificates are used by software developers to digitally sign applications, drivers, executables and software programs as a way for end-users to verify that the code they receive has not been altered or compromised by a third party.


1 Answers

The main problem with installing a certificate on a build server and making it accessible to a build account, is that now any developer can sign any malicious piece of code by temporarily commiting it to some legitimate project, and reverting it back after the build.

No matter the actions are logged, the breach is hard to identify or prevent. Especially if development is active and several builds are done per day.

The only solution I can think of is to limit a number of people who can trigger an "RTM" build. Other build types may use a test certificate or avoid signing at all.

In fact, this is the question I bother my head too.

like image 173
Paul Shmakov Avatar answered Oct 16 '22 00:10

Paul Shmakov