Lỗi Signtool: Không tìm thấy chứng chỉ nào đáp ứng tất cả các tiêu chí đã cho với Ứng dụng Windows Store?


294

Tôi đang cố gắng ký một gói appx Windows 8 với tệp pfx mà tôi có. Tôi đang sử dụng một lệnh như vậy:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

Và từ đây, tôi nhận được:

Lỗi SignTool: Không tìm thấy chứng chỉ nào đáp ứng tất cả các tiêu chí đã cho.

"Tiêu chí" nào tôi không đáp ứng? Đây chỉ là để thử nghiệm vì vậy đây là những chứng chỉ tự ký. Tôi đã thử nhập khóa và sau đó ký, nhưng nó luôn dẫn đến cùng một lỗi. Làm thế nào để tôi sửa lỗi này?


Tôi nghĩ rằng Signtoolđang cố gắng tìm chứng chỉ trong cửa hàng chứng chỉ gốc đáng tin cậy và bạn không có chứng chỉ ký mã ở đó.
crea7or

15
Tôi gặp lỗi này là do chứng chỉ được sử dụng cho việc ký đã hết hạn
Mark Homer

1
Tôi đã có một vấn đề tương tự và đăng một câu trả lời ở đây. Hi vọng điêu nay co ich.
SurenSaluka

Câu trả lời:


590

Khi gặp lỗi này thông qua Visual Studio, đó là do có một thiết lập chứng chỉ ký để khớp với máy tính mà nó được phát triển ban đầu.

Bạn có thể kiểm tra điều này bằng cách vào thuộc tính dự án> tab ký và kiểm tra chi tiết chứng chỉ.

Bạn có thể bỏ chọn "Ký vào bảng kê khai ClickOnce" để tắt ký.

Ký thuộc tính

Nếu bạn không muốn tắt tùy chọn này, bạn sẽ phải cài đặt chứng chỉ.


12
Chỉ cần thêm vào những gì @JDandChips đề xuất: Để gỡ lỗi và kiểm tra, bạn cũng có thể sử dụng chứng chỉ kiểm tra tạm thời bằng cách nhấp vào nút 'Tạo chứng chỉ kiểm tra' được hiển thị trong ảnh chụp màn hình ở trên.
nam

"Cài đặt chứng chỉ" nghĩa là gì?
Sean Kendle 15/03/2016

Trong tình huống của tôi, chứng chỉ đã có sẵn từ máy được phát triển ban đầu, vì vậy tôi có thể chọn "Chọn từ Tệp ..." để cài đặt chứng chỉ bị thiếu. Ngoài ra, bạn luôn có thể tạo một cái mới và sử dụng nó!
JDandChips

@JDandChips Làm thế nào để bạn tạo một chứng chỉ mới?
erotavlas

3
Dành cho người mới VS. Đảm bảo bạn nhấp chuột phải vào dự án, không phải giải pháp, vì điều đó sẽ bật lên một menu hoàn toàn khác!
B5A7

109

Hãy thử với / gỡ lỗi. 1,2 Như trong:

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

Nó sẽ giúp bạn tìm hiểu những gì đang xảy ra. Bạn sẽ nhận được đầu ra như thế này:

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

Bạn có thể xem bộ lọc nào khiến chứng chỉ của bạn không hoạt động hoặc nếu không có chứng chỉ nào được xem xét.

Tôi đã thay đổi băm và thông tin khác, nhưng bạn sẽ có được ý tưởng. Hi vọng điêu nay co ich.


1 Xin lưu ý: signtoolcụ thể về nơi /debugtùy chọn được đặt. Nó cần phải đi sau signtuyên bố.
2 Cũng lưu ý: /debugtùy chọn chỉ hoạt động với một số phiên bản signtool. Phiên bản WDK có tùy chọn, trong khi phiên bản Windows SDK thì không.


3
Làm việc cho tôi. Không phải tôi hiểu phản hồi từ signtool, nhưng / debug đã làm những gì cần làm. Upvote!
noelicus

1
Lệnh này đặc biệt với nơi bạn đặt / gỡ lỗi Nếu bạn đặt nó không theo thứ tự, nó sẽ báo lỗi.
Daniel

12
/ debug chỉ hoạt động cho các phiên bản cụ thể của signtool.exe. Cái đi kèm với WDK cung cấp tùy chọn này, cái còn lại từ SDK Windows thì không.
Paul Kertscher

3
Ngoài ra, / gỡ lỗi phải đi sau dấu signtool, không ở giữa.
Denis V

Cho thấy chứng chỉ của tôi đã hết hạn. Làm tốt lắm.
avantprime

36

Vui lòng luôn kiểm tra ngày hết hạn của chứng chỉ vì hầu hết các chứng chỉ đều có thời hạn sử dụng. Trong trường hợp chứng chỉ của tôi đã hết hạn và tôi đang cố gắng xây dựng dự án.


2
Để kiểm tra hết hạn chứng chỉ, hãy chuyển đến dòng lệnh, điều hướng đến nơi chứng chỉ của bạn, sau đó nhập certutil -dump mycertificate.pfx. Nhìn vào mục cuối cùng vì mục đầu tiên là CA, không phải chứng chỉ ký mã của bạn.
HockeyJ

23

Nếu bạn không phải ký ứng dụng, nhấp chuột phải vào dự án của bạn

Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"

Cũng như bài viết này của MS cho thấy,

Nếu bạn đang sử dụng Visual Studio 2008 và đang nhắm mục tiêu .NET 3.5 và sử dụng các bản cập nhật tự động, bạn chỉ cần thay đổi chứng chỉ và triển khai phiên bản mới,


1
Bạn cũng có thể nhấp vào tạo chứng chỉ kiểm tra để tiếp tục. cảm ơn
MindRoasterMir

16

chỉ cần bỏ chọn 'Đăng ký nhấp chuột một lần từ bảng kê khai trong thuộc tính dự án, nó sẽ xóa lỗi và bạn có thể tạo một cái mới như từ đó.


15

Có cùng một vấn đề, hóa ra khóa riêng cho chứng chỉ không được phép.
Để khắc phục - mở quản lý certifacte, tìm chứng chỉ của bạn, nhấp chuột phải -> Quản lý khóa riêng và sau đó bảo mật trên cùng, hãy chắc chắn rằng người dùng của bạn đã được thêm và cấp quyền, đã sửa nó cho tôi.


15

Trong trường hợp của tôi, tôi có loại chứng chỉ sai mà tôi đang cố gắng liên kết.
Tôi đã có "Xác thực máy chủ" thay vì "Ký mã" .
Bạn sẽ có thể thấy điều này trong snap snap trong phần Mục đích dự định.
Sau đó, nó chỉ hoạt động tốt.


1
Vâng, đó là, tôi đã vật lộn trong 2 ngày để tìm câu trả lời này.
Hakan Fıstık

14

Trong trường hợp có ai khác gặp phải vấn đề này: Vấn đề của tôi cuối cùng là tôi cần chạy dấu nhắc lệnh với tư cách quản trị viên trước khi sử dụng ứng dụng signtool.exe. Sau đó, mọi thứ hoạt động tuyệt vời.


11
Không giúp gì trong trường hợp của tôi.
bgplaya

1
Tôi đang chạy signtool từ VS2015 dưới dạng tập lệnh và tôi đã gặp phải vấn đề tương tự. Tôi đã chạy VS2015 với tư cách quản trị viên và signtool đã có thể ký vào tệp của tôi>
hamaney

10

Tôi gặp vấn đề tương tự trong quá trình phát triển ứng dụng bảng điều khiển của mình và như một cách giải quyết nhanh chóng ,

đi đến project propertiesđó

nhấp vào signingtab và bỏ chọn "Đăng ký bản kê khai ClickOnce".

Mô tả hình ảnh:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

FYI Bạn cũng có thể xem giải pháp video ít hơn một phút này . Hình trên được lấy từ video.


1
Bạn cũng có thể nhấp vào tạo chứng chỉ kiểm tra để tiếp tục. cảm ơn
MindRoasterMir

9

Tôi đã giải quyết điều này bằng cách sử dụng /smcờ để chỉ định để tìm trong cửa hàng máy thay vì mặc định, đó là cửa hàng của tôi (Người dùng cục bộ). Ngoài ra, nó có thể giúp bật gỡ lỗi cho signtool bằng cách sử dụng /debug.


8

Tôi đã có vấn đề này và tôi không hoàn toàn chắc chắn bước nào dưới đây đã khiến nó hoạt động, nhưng hy vọng điều này sẽ giúp người khác ... đây là những gì tôi đã làm:

  • Cài đặt chứng chỉ tải về (.crt) vào giấy chứng nhận (tôi đặt nó vào cửa hàng “cá nhân”) - nhấp chuột phải vào tập tin .crt và nhấp vào Cài đặt chứng chỉ .
  • Chạy certmgr.mscxuất chứng chỉ (được tìm thấy trong bất kỳ cửa hàng nào bạn đã sử dụng trong bước 1) dưới dạng tệp pfx bao gồm khóa riêng và các thuộc tính mở rộng (có thể không cần thiết)
  • Sử dụng tệp .pfx đã xuất khi ký dự án của bạn
  • Ví dụ signtool: signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    trong đó mật khẩu giống như được cung cấp trong quá trình Xuất

1
Cảm ơn, điều này đã lừa Tôi đã sử dụng .crttệp mà Comodo cung cấp thay vì cài đặt chứng chỉ và sau đó xuất .pfxtệp.
Joshua Pinter

1
Cảm ơn bạn rất nhiều!
Bruno Soares

6

Tôi đang gặp vấn đề tương tự, đọc một số câu trả lời (đăng ở đây), tôi thấy chứng chỉ của mình đã hết hạn.

Chỉ cần tạo một cái mới từ dự án bắt đầu của tôi. Sau đó, tại chứng chỉ quản lý đã xóa chứng chỉ hết hạn.

Bây giờ mọi thứ biên dịch tốt.


5

Các tiêu chí bao gồm tên tài khoản (có khóa riêng được liên kết), tên miền, công ty, ngày hết hạn, mục đích dự định, trong số những thứ khác.

Có nhiều lý do khác nhau có thể xảy ra cho lỗi này, một số đã được liệt kê. Đây là một mẹo khác: Khi nhập chứng chỉ, hãy chắc chắn rằng bạn làm việc với tệp gốc nhận được từ cơ quan chứng nhận (CA) , nếu không một số thuộc tính có thể bị mất.

Ví dụ: gần đây tôi đã cố gắng nhập chứng chỉ được xuất từ ​​một tài khoản khác trên cùng một máy. Chứng chỉ đã hiển thị với tài khoản của tôi nhưng không được liên kết với tài khoản của tôi và kết quả là signtoolđã từ chối nhận nó mà không cung cấp rõ ràng tên tệp và mật khẩu. Mà, khi được thực hiện như một phần của quá trình xây dựng và được viết rõ ràng trong một tệp bó hoặc tệp nguồn, có thể không đủ an toàn. (Nhập chứng chỉ gốc do CA cấp đã giải quyết nó.)


4

Tôi đã có cùng một thông báo " Sau bộ lọc Khóa riêng, 0 certs bị bỏ lại " và dành quá nhiều cuộc đời để cố gắng tìm hiểu ý nghĩa của tin nhắn.

Vấn đề là tôi đã cài đặt chứng chỉ không chính xác trong kho Chứng chỉ Windows nên không có khóa riêng liên quan đến chứng chỉ ký mã.

Những gì tôi nên làm là thế này:

  1. Sử dụng Firefox hoặc Internet Explorer, gửi yêu cầu cho nhà phát hành. Điều này tạo ra một khóa RIÊNG TƯ được trình duyệt lưu trữ âm thầm (một hộp thoại xuất hiện trong một phần của giây trong Firefox). Lưu ý rằng các trình duyệt khác có thể không hoạt động: cuộc sống của bạn quá ngắn để tìm hiểu xem chúng có hoạt động không.

  2. Gửi yêu cầu, nhảy qua các vòng và xác nhận của nhà phát hành, hy sinh một con dê, cầu nguyện với các vị thần, gửi một tuyên bố đã ký từ ông bà tuyệt vời của bạn, vv

  3. Tải xuống chứng chỉ (.crt) và nhập nó vào cùng một trình duyệt . Trình duyệt hiện có cả khóa riêng và chứng chỉ .

  4. Xuất chứng chỉ từ trình duyệt dưới dạng tệp Trao đổi thông tin cá nhân (.p12). Bạn sẽ được yêu cầu cung cấp mật khẩu để bảo vệ tập tin này.

  5. Giữ một bản sao lưu của tập tin .p12.

  6. Chạy Trình quản lý chứng chỉ (certmgr.msc), nhấp chuột phải vào kho Chứng chỉ cá nhân , chọn Tất cả tác vụ / Nhập ... và nhập tệp .p12 vào Windows. Bạn sẽ được yêu cầu nhập mật khẩu bạn đã sử dụng để bảo vệ tập tin. Tại thời điểm này, tùy thuộc vào yêu cầu bảo mật của bạn, bạn có thể đánh dấu khóa là có thể xuất để bạn có thể khôi phục bản sao từ cửa hàng Windows. Bạn cũng có thể đánh dấu rằng mật khẩu là bắt buộc trước khi sử dụng nếu bạn muốn phá vỡ các tập lệnh bó.

  7. Chạy signtool thành công, thở phào nhẹ nhõm và suy ngẫm về cuộc sống mà bạn đã lãng phí bao nhiêu do thông báo lỗi xấu và tài liệu kém hoặc thiếu.


2

Tôi cũng đã có vấn đề này, đã cố gắng rất nhiều. SDK đã sử dụng cũng như ký Visual Studio, nhưng ở mọi nơi tôi nhận được "Không tìm thấy chứng chỉ nào đáp ứng tất cả các tiêu chí nhất định".

Giải pháp: Lưu ý rằng, nếu "sau bộ lọc khóa riêng": '0 trái' hiển thị với tùy chọn / gỡ lỗi signtool ..., nguyên nhân là PC của bạn không có CA trong cửa hàng. Để giải quyết vấn đề này, hãy cài đặt CA trước (trong trường hợp của tôi là tệp .crt), sau đó chạy lại ký. Nó nên hoạt động ngay bây giờ!

Signtool chỉ có thể được sử dụng với một CA được yêu cầu và được sở hữu bởi cùng một PC.


Tôi không gặp vấn đề gì khi sử dụng signtool với CA đến từ một PC khác.
bparker

2

Vấn đề của tôi đã kết thúc là tôi không hiểu các tùy chọn signtool. Tôi đã cung cấp tùy chọn / n với thứ gì đó không khớp với chứng chỉ của tôi. Khi tôi gỡ bỏ nó đã ngừng phàn nàn.


2

Tôi gặp vấn đề tương tự tên máy tính của tôi đã thay đổi và chứng chỉ đã hết hạn. Tôi đã có thể giải quyết vấn đề này bằng cách tạo chứng chỉ kiểm tra mới.

Trong Visual Studio, nhấp chuột phải vào dự án trong giải pháp thám hiểm. Chọn thuộc tính. Chọn Đăng nhập cửa sổ thuộc tính. Nhấp vào "Tạo chứng chỉ kiểm tra ....". Nhập thông tin mật khẩu cho chứng chỉ kiểm tra và nhấp vào ok.


2

Với / gỡ lỗi, khi bạn nhận được thông báo này "Sau bộ lọc Khóa riêng, còn lại 0 certs.", Một lý do có thể là tệp pfx không có khóa riêng. Khi bạn xuất chứng chỉ đã cài đặt sang tệp pfx, đảm bảo bật hộp kiểm cũng bao gồm khóa riêng.


1

Đi đến project propertiesvà bỏ chọn tất cả các trường từ Firmtrước khi khởi tạo quá trình biên dịch

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.