37

First and foremost, this is my very first experience with Code Signing.

I bought Standard Code Signing from Certum for 3 years.

I intend to publish applications in Czech republic mostly.

But to the point, on Windows 10, when I download the signed executable, I get bumped by Smart-Screen filter which blocks the application.

I don't know what to think. I used SHA256 and a time stamp. I signed it on Windows 8.1 fully updated.

Here is a code snippet I used to sign the EXE file:

SignTool sign /fd SHA256 /a /tr http://time.certum.pl "Barvy.exe"

Did I do something wrong?

Here is a picture detail of the signature of the EXE file:

digital signature

6
  • 1
    When you say that a smartscreen message pops up does is it mean you get the blue message: "windows protected your pc" or another message? can you mention which message you get? Commented Jan 26, 2019 at 18:57
  • @NicolasGuérinet This question is dated and with Windows 8.1 system. Commented Jan 27, 2019 at 2:39
  • thkx, with the certificate that you mentioned in your question, did the smartscreen message stopped to appear at some point? Commented Jan 27, 2019 at 7:42
  • 2
    @NicolasGuérinet I do not know, as I switched to Linux 2 years ago, and don't develop Windows applications any further. Commented Jan 27, 2019 at 7:55
  • Related question: Transferring Microsoft SmartScreen reputation to renewed certificate. Commented Oct 15, 2020 at 10:59

2 Answers 2

31

Applications that are signed with a standard code signing certificates need to have a positive reputation in order to pass the Smart Screen filter. Microsoft establishes the reputation of an executable based upon the number of installations world wide of the same application. Since you haven't published your application as yet (and therefore the reputation hasn't been established as yet), the Smart Screen will continue to flag the application.

There are two solutions: either wait till the application has a large user base and its reputation will be adjusted by the Smart Screen. However, the current working status might prevent users from installing and trusting the application. The second option is to sign it with an EV (Extended Validation) code signing certificate. Applications signed with an EV certificate establishes its reputation right away. To quote Microsoft:

Programs signed by an EV code signing certificate can immediately establish reputation with SmartScreen reputation services even if no prior reputation exists for that file or publisher.

You can find further details at Microsoft SmartScreen & Extended Validation (EV) Code Signing Certificates blogpost.

17
  • 31
    extortion scheme!
    – tofutim
    Commented Mar 22, 2018 at 11:39
  • 14
    Thanks for the info. So having just bought $100 dollars worth of trust from Comodo, I now find I need to buy an additional $250 dollars worth of trust? Extortion is right.
    – SmacL
    Commented Dec 11, 2018 at 9:35
  • 6
    @void_in Microsoft establishes the reputation of an executable based upon the number of installations world wide of the same application: when not using EV-code-signing, does someone have an estimation of the number of installations required to get whitelisted by SmartScreen?
    – Basj
    Commented Mar 20, 2019 at 13:37
  • 3
    @Basj Wonder if the same application also means the same version, or if the reputation counter will reset every time you release an updated installer :-/
    – Gertsen
    Commented Feb 20, 2020 at 13:04
  • 2
    I have the same question @Gertsen, it would be a shame if the counter resets to 0, but it's probably the case :/
    – Basj
    Commented Feb 20, 2020 at 13:41
9

If you have a standard code signing certificate, some time will be needed for your application to build trust. Microsoft affirms that an Extended Validation (EV) Code Signing Certificate allows to skip this period of trust building. According to Microsoft, extended validation certificates allow the developer to immediately establish reputation with SmartScreen. Otherwise, for some time, until your application builds trust, the users will see a warning like "Windows Defender Smartscreen prevented an unrecognized app from starting. Running this app might put your PC at risk.", with the two buttons: "Run anyway" and "Don't run".

Another Microsoft resource states the following (quote): "Although not required, programs signed by an EV code signing certificate can immediately establish reputation with SmartScreen reputation services even if no prior reputation exists for that file or publisher. EV code signing certificates also have a unique identifier which makes it easier to maintain reputation across certificate renewals."

My experience is the following. We have used regular (non-EV) code signing certificates for signing .MSI, .EXE and .DLL files since 2005, with timestamping, and never had problems with SmartScreen, until 2018, when there were just one case when it took 3 days for a beta version of our application to build trust since we have released it to beta testers, and it was in the middle of certificate validity period. I have no idea what the SmartScreen might not have liked in that particular version of our application, but there were no complaints since then. Therefore, if your certificate is a non-EV, it is a signed application (such as an .MSI file) that will build trust over time, not a certificate. As in our case, a certificate can be issued a few months ago and used to sign many files, but for each signed file you are publishing, it may take several days for SmartScreen to stop complaining about the file after it is published.

6
  • 4
    They don't mention that EV certificate uses a hardware key, and cannot be used on with cloud build infrastructure :(
    – MarcusUA
    Commented May 29, 2019 at 15:47
  • 2
    @MarcusUA Exactly - Not being able to sign in DevOps or similar non-local deployment pipeline is extremely annoying. I suspect it might be possible if the certificate is stored in Azure Key Vault, but you can't reuse your local certificate for that, it requires a separate certificate for this, effectively doubling the price of an already very expensive certificate.
    – Gertsen
    Commented Feb 20, 2020 at 13:02
  • 1
    @MarcusUA Do all EV certificates require a hardware key?
    – Basj
    Commented Sep 8, 2020 at 9:02
  • 1
    @Basj yes, that's the thing
    – MarcusUA
    Commented Sep 12, 2020 at 21:34
  • 1
    It seems there is another way to get certified without buying an expensive EV by (quite) "distributing your apps through the Windows Store". See: docs.microsoft.com/en-us/archive/blogs/ie/… I hope getting into the WinStore is not more expensive than the EV :)
    – IceCold
    Commented Sep 30, 2020 at 9:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .