program story

서명 된 응용 프로그램을 설치할 때 Win8에서 스마트 화면을 전달하는 방법은 무엇입니까?

inputbox 2020. 10. 24. 10:15
반응형

서명 된 응용 프로그램을 설치할 때 Win8에서 스마트 화면을 전달하는 방법은 무엇입니까?


우리는 개발자이며 디지털 서명 된 응용 프로그램 설치 프로그램이 있습니다. 이 응용 프로그램을 설치하면 설치 경험에 영향을 미치는 스마트 화면이 팝업됩니다. 그것은 말한다

Windows가 PC를 보호했습니다.

Windows SmartScreen이 인식 할 수없는 앱의 시작을 차단했습니다.이 앱을 실행하면 PC가 위험에 처할 수 있습니다.

나는 마이크로 소프트가 디지털 서명 외에 애플리케이션을 검증하기위한 전략을 가지고 있다고 생각한다. 누구든지이 문제에 대한 경험이 있으며이 문제를 해결할 수있는 단서를주세요.


CA에서 구입 한 인증서로 설치 프로그램에 서명 한 경우 CA에 연락하여이 경고를 제거하기 위해 Microsoft와 함께 작업하지 못한 이유에 대한 설명을 받아야합니다.

인증서가 CA가 아닌 자체 서명 인증서 인 경우 CA에 의존해야합니다.

Microsoft는 이미 Windows 팀 블로그에 대부분의 정보를 게시했습니다.

https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/

모범 사례

개발자는 이전 블로그 게시물에서 제안한 모범 사례를 따라야합니다. 이 지침에 Windows 스토어를 통해 앱을 배포하는 추가 옵션과 EV 코드 서명 옵션을 추가했습니다.

  • Windows 스토어를 통해 앱 배포

Windows 스토어 개발자 온 보딩 및 애플리케이션 검토 프로세스를 통과하려면 Windows 8 애플리케이션이 필요합니다. Windows 8 응용 프로그램은 Windows 8의 SmartScreen 응용 프로그램 평판 확인 또는 경고 범위에 포함되지 않습니다.

  • 프로그램에 디지털 서명 (표준 또는 EV 코드 서명)

평판이 생성되고 디지털 인증서와 특정 파일에 할당됩니다. 디지털 인증서를 사용하면 데이터를 집계하여 여러 개별 프로그램이 아닌 단일 인증서에 할당 할 수 있습니다. 필수는 아니지만 EV 코드 서명 인증서로 서명 된 프로그램은 해당 파일 또는 게시자에 대한 이전 평판이없는 경우에도 SmartScreen 평판 서비스로 평판을 즉시 설정할 수 있습니다. EV 코드 서명 인증서에는 인증서 갱신시 평판을보다 쉽게 ​​유지할 수있는 고유 식별자도 있습니다. Windows 루트 인증서 프로그램의 구성원 인 CA에서 발급 한 Authenticode 인증서 만 평판을 설정할 수 있습니다.

현재 시만텍과 DigiCert는 EV 코드 서명 인증서를 제공하고 있습니다.

  • 악성 코드에 서명하거나 배포하지 마십시오.

악성으로 탐지 된 코드를 배포하면 EV 코드 서명 인증서로 서명 된 경우에도 파일에서 평판이 제거되고 관련 디지털 인증서에서 평판이 제거됩니다.

  • Windows 로고 또는 Windows 8 데스크톱 앱 인증 신청

여기에서 이러한 프로그램에 대해 자세히 알아보십시오. Windows 8 데스크톱 앱 인증 (Windows 스토어 제출에 필요) Windows 로고 프로그램


방금 이전 Authenticode 인증서에서 인증서로 이동하는 전체 프로세스를 거쳤습니다 (EV 인증서가 아니라 자동화 된 빌드 프로세스에서 사용할 수있는 일반 인증서).

Microsoft는 더 이상 기존 인증서에서 새 인증서로 평판을 이전하는 수단을 제공하지 않습니다. 그러니 그들의 지원을 요청하지 마십시오. 당신은 많은 시간과 에너지를 낭비하게 될 것입니다. 그리고 그들은 도울 수 없을 것입니다.

Microsoft는 이전 인증서와 새 인증서에 동일한 텍스트 콘텐츠가 있으면 평판이 더 빨리 확립된다고 주장합니다. 보다 구체적으로, SmartScreen® Filter의 Application Reputation 기능 지원 팀 으로부터받은 답변은 다음과 같습니다.

평판이 알려진 인증서를 갱신 할 때마다 갱신 된 인증서로 서명 된 파일을 처음 다운로드 할 때 몇 가지 경고가 표시 될 수 있습니다. 그러나 갱신 된 인증서에 대한 알려진 평판은 일반적으로 새 인증서보다 더 빠르게 설정됩니다. 갱신 된 인증서가 평판을 구축하는 동안 사용자는 계속 클릭하여 다운로드를 실행하거나 저장할 수 있습니다. 이를 위해 Actions | 더 많은 옵션 | 다운로드 관리자에서 실행하십시오.

SmartScreen이 사용자에게 경고하지 않도록하는 가장 좋은 방법 은 Windows SDK 다운로드에 포함되어야하는 WACK (Windows 앱 인증 키트 )를 실행하는 것입니다 .

Windows 앱 인증 키트

테스트를 실행 한 후 WACK은 진행 방법을 설명합니다.

최종 보고서-검증 통과

성공적인 애플리케이션 인증의 XML 결과를 https://sysdev.microsoft.com에 업로드합니다 . 며칠 후 SmartScreen은 인증 된 프로그램에 사용 된 디지털 서명을 인식하고 더 이상 다운로드시 사용자에게 경고하지 않습니다.

참고 Windows 8.1의 최신 업데이트에서 응용 프로그램을 인증 할 수 없었으며 모든 프로그램의 유효성을 검사하기 위해 WACK를 얻으려면 Windows 8.1을 새로 설치해야했습니다.


한동안 검색해 왔으니 지금까지 찾은 내용을 공유하겠습니다.

Microsoft의 Windows 8에서이 기능에 대한 문서를 찾지 못했지만 잘못된 위치를 찾고있을 수 있습니다.

필자가 읽은 대부분의 기사에서는 SmartScreen 필터가 다음과 같이 작동한다고 설명합니다.

  • 다운로드 한 설치 프로그램 또는 실행 파일을 실행하기 전에 Windows 8은 데이터베이스를 참조합니다.
  • 데이터베이스는 해당 프로그램이 다음과 같은지 여부를보고 할 수 있습니다.
    • 악성 / 피싱으로보고되고 Microsoft 직원이 확인했습니다.
    • 많은 사람들이 사용 / 운영합니다.

충분한 사람들이 해당 설치 프로그램을 악의적이라고보고하지 않고 실행했다면 결국 해당 프로그램은 안전한 것으로 표시되고 다른 사용자는 성가신 메시지를받지 않게됩니다.

일부 출처 : ( 여기 ) ( 여기 )

사용자가 프로그램을 설치할 때 Microsoft로 전송되는 정보에는 IP 주소, 설치 관리자의 해시 및 디지털 서명, 응용 프로그램의 파일 이름이 포함됩니다. ( 여기 참조 )

Microsoft 직원은 데이터베이스에 직접 액세스하여 모든 Microsoft 응용 프로그램을 추가하고 안전하게 플래그를 지정할 수 있습니다.

아마도 Microsoft는 설치 프로그램을 사전 인증하는 방법을 설정했을 것입니다. 그렇지 않은 경우 충분한 사람이 설치 프로그램을 실행할 때까지 기다려야 할 수도 있습니다. (하지만 얼마나 많은지 확실하지 않습니다).


방금이 과정을 거쳤고 여기에 약간의 정보를 추가하겠습니다.

1) EV를 얻으십시오. 그것은 가치. 다음에 인증서를 업그레이드 할 때 EV 인증서로 업그레이드하십시오. 가격은 연간 약 $ 100 이상입니다. EV 인증서는 훔치기가 더 어렵 기 때문에 더 안전한 것으로 간주됩니다. 귀하에게 발급되면 서명을 완료하기 위해 하드웨어 토큰 장치가 발급됩니다. 불행히도 최종 신호는 자동화 된 빌드와 호환되지 않습니다.

소리만큼 끔찍하지 않습니다. 자동화와 호환되는 실행 파일 (설치 프로그램 내부)에 서명하기위한 두 번째 인증서를 제공합니다. 설치 프로그램의 서명은 하드웨어 토큰과 함께 서명되어야합니다.

2) EV 인증서를 받고 싶지 않다면 평판이 필요합니다. 업그레이드하는 경우 Microsoft는 이전 인증서의 평판을 새 인증서로 전송합니다. MSDN 기술 지원에 문의해야하며 약 1 주일 후에 완료됩니다. 이전 및 새 인증서와 함께 이전 및 새 설치 프로그램을 제출하고 수정했습니다.

3) 이것이 첫 번째 인증서 인 경우 평판을 얻을 때까지 SmartScreen에 붙어 있습니다. sysdev.microsoft.com을 통해 앱 인증을 받아야합니다. 그러나 Microsoft에서 긍정적 인 평판을 얻기 전에 얼마나 많은 다운로드가 필요한지 실제로는 알 수 없습니다.

그것이 제 경험입니다.


Windows 8.1이 나왔기 때문에.

  • Microsoft는 인터넷을 통해 PC에 다운로드하여 설치하려고 할 때 신뢰할 수있는 모든 표준 코드 서명 인증서를 비활성화했지만, USB 또는 CD-ROM을 통해 응용 프로그램을 배포하는 경우 표준 코드 서명 인증서 응용 프로그램이 작동합니다.

  • 를 사용하여 signtool.exe확인 하지 마십시오 ( signtool.exe verify /pa mysetup.exe성공을 표시하지만 다른 사용자가 다운로드하고 SmartScreen 팝업을 설치하려고하면 실패합니다. 팝업이 계속 표시됨)

WACK (Windows 앱 인증 키트) 사용

여기에 이미지 설명 입력

  • This standard code signing certificates are dead. Means if you have standard code signing certificate it wont work anymore reliably like it was in past, even though Windows App Certification Kit (WACK) shows PASS with WARNING, does not mean its 100% verify success

여기에 이미지 설명 입력

You have to purchase EV certificate (https://www.globalsign.com/en/code-signing/)

So, to be 100% success, Follow the spoon feed:

Step 1: go to https://sysdev.microsoft.com and login

a) Create a company account > next

b) Download winqual.exe file which is as zip file provided by microsoft, now sign the winqual.exe with your standard certificate or EV certificate and then click next to upload the file for validation.

In my case it failed because i have standard certificate which Microsoft stop allowing anymore. So all of you have to do now is to buy EV license else you are screwed, and can spend your lifetime solving this problem without any clue.

여기에 이미지 설명 입력


I have tested the EV cert solution and it does work.

Sadly, I will also mention that EV certs are incompatible with TeamBuild which executes signing under the context of a service. EV certs require a hardware token that interfaces with the Cryptographic Service Provider that is provided by SafeNet, Inc for use with all authorized EV cert vendors (VeriSign and DigiCert).

When signing occurs the drivers from Safenet will prompt for a password which is somewhat incompatible with executing under the context of a service. Additionally, Safenet provides protection that prevents signing from anything but the actual console. You cannot even sign from within a remote desktop session. So, signing from within Teambuild is problematic at best and not possible at worst.

I have worked with Microsoft and they have not been able to provide a workaround for signing or any other way to achieve instant reputation under SmartScreen.


Unfortunately I don't have enough rep to simply comment on one of the above answers. However, if you specify partial trust for your published app (I chose Internet zone) and have a code signing cert in place, no smart screen warning is displayed (checked on Win10).


I sign my application in an automated manner using an EV certificate on a token ( GlobalSign ) . Use a .bat file. in the ".bat" file , type ex: (For sha1)

SignTool.exe sign /n "Exact Enterprise name in the cert - token" /t "http://timestamp.globalsign.com/scripts/timstamp.dll" "c:\Patch_to_file\Filename.exe"

The "Exact Enterprise name in the cert - token" should be the exact name that is in the certificate ( token)


"The version of the file is not compatible with the version of windows you're running". Under Windows 2008 server there is no 'More Info" button to choose to install anyway.

As we develop windows desktop software (not 'Apps') using non-Microsoft products (Delphi), and use Innosetup for our installer, the app validation is meaningless. It sits there for 30 minutes doing nothing, we simply start the app, then close the app manually, and it generates a pass report.

We code sign all our releases and every executable within them.

XML을 Microsoft에 업로드 할 때 인증 된 XML은 Microsoft Store에 게시 할 방법이없는 주 개발자 계정과 관련없는 사이트에 있습니다. 애플리케이션 당 45 분이 낭비되었습니다.

참고 URL : https://stackoverflow.com/questions/12311203/how-to-pass-the-smart-screen-on-win8-when-install-a-signed-application

반응형