Không thể nhập keyfile 'blah.pfx' - lỗi 'Keyfile có thể được bảo vệ bằng mật khẩu'


392

Chúng tôi vừa nâng cấp các dự án Visual Studio 2008 của mình lên Visual Studio 2010. Tất cả các hội đồng của chúng tôi đã được ký kết mạnh mẽ bằng chứng chỉ ký mã Verisign . Kể từ khi nâng cấp, chúng tôi liên tục nhận được các lỗi sau:

Không thể nhập tệp khóa sau: companyname.pfx. Các tập tin quan trọng có thể được bảo vệ bằng mật khẩu. Để sửa lỗi này, hãy thử nhập lại chứng chỉ hoặc cài đặt thủ công chứng chỉ vào CSP Tên mạnh với tên thùng chứa khóa sau: VS_KEY_3E185446540E7F7A

Điều này xảy ra trên một số máy phát triển và không phải máy khác. Một số phương pháp được sử dụng để khắc phục điều này có hiệu quả trong thời gian này bao gồm:

  • Cài đặt lại tệp chính từ Windows Explorer (nhấp chuột phải vào tệp PFX và nhấp Cài đặt)
  • Cài đặt Visual Studio 2010 trên một máy mới lần đầu tiên nhắc bạn nhập mật khẩu vào lần đầu tiên bạn mở dự án và sau đó nó hoạt động. Trên các máy được nâng cấp từ Visual Studio 2008, bạn không có tùy chọn này.

Tôi đã thử sử dụng tiện ích SN.EXE (Công cụ tên mạnh) để đăng ký khóa với CSP tên mạnh như thông báo lỗi, nhưng bất cứ khi nào tôi chạy công cụ với bất kỳ tùy chọn nào sử dụng phiên bản đi kèm với Visual Studio 2010, SN .EXE chỉ liệt kê các đối số dòng lệnh của nó thay vì làm bất cứ điều gì. Điều này xảy ra bất kể tôi tranh luận gì.

Tại sao điều này xảy ra, và các bước rõ ràng để khắc phục nó là gì? Tôi sắp từ bỏ cài đặt ClickOnce và ký mã Microsoft.

Câu trả lời:


447

Tôi đã chạy vào vấn đề này là tốt. Tôi đã có thể giải quyết vấn đề bằng cách chạy
sn -i <KeyFile> <ContainerName>( cài đặt cặp khóa vào một thùng chứa có tên ).

snthường được cài đặt như một phần của SDK Windows. Ví dụ C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe. Nhiều khả năng vị trí này không nằm trên đường tìm kiếm cho môi trường tiêu chuẩn của bạn. Tuy nhiên, "Nhắc lệnh nhà phát triển" được cài đặt bởi Visual Studio sẽ thêm thông tin bổ sung thường bao gồm vị trí chính xác.

Dựa trên bài viết của bạn sẽ giống như

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Điều này phải được chạy từ vị trí tệp PFX của bạn, nếu bạn đã tải giải pháp trong VS 2010, bạn chỉ cần nhấp chuột phải vào tệp pfx từ trình khám phá giải pháp và chọn Open Command Prompt sẽ khởi chạy công cụ nhắc nhở .net 2010 cmd trong đúng thư mục.

Trước khi chạy lệnh sn này, tôi đã cài đặt lại pfx bằng cách nhấp chuột phải vào nó và chọn cài đặt tuy nhiên nó không hoạt động. Chỉ cần một cái gì đó để lưu ý vì nó có thể là sự kết hợp của cả hai đã cung cấp giải pháp.

Hy vọng điều này sẽ giúp giải quyết vấn đề của bạn.


5
Cảm ơn Brandon - có cái này, giống như cài đặt lại thủ công của tệp chính "sắp xếp" giải quyết vấn đề. Vấn đề là ngay khi bạn kiểm tra tệp chính, bất kỳ người dùng nào khác nhận được thông tin mới nhất về tệp chính này đều sẽ gặp phải lỗi này. Nếu bất kỳ ai trong số những người dùng đó kiểm tra "bản sửa lỗi" của họ và tôi nhận được bản mới nhất, thì máy của tôi bây giờ lại bị hỏng ... và cứ thế. Microsoft đã bắt đầu một vé rắc rối về điều này và giao nó cho nhóm VS2010 và nhóm VSS.
JasonD

2
Hấp dẫn. Tôi đã không gặp phải vấn đề đó khi thêm pfx vào CSP mới. Theo hiểu biết của tôi, SN -i không thay đổi tệp pfx vì vậy bạn không cần phải kiểm tra bất cứ điều gì sau đó. Tuy nhiên, nếu bạn thay đổi tệp pfx bằng mọi cách như đặt lại mật khẩu, điều đó sẽ gây ra sự cố vì nó sẽ thay đổi tệp pfx. Giải pháp của bạn có được xây dựng với tệp pfx đó từ bất kỳ máy nào khác không? Nếu vậy thì tệp pfx là chính xác, chỉ cần không được đặt thành CSP chính xác trên máy của bạn đang gặp sự cố xây dựng.
Brandon Manchester

3
Lúc đầu tôi chỉ thử phần sn -i nhưng nó phàn nàn rằng mật khẩu không đúng (mặc dù nó đúng). Tôi xóa chứng chỉ, cài đặt lại và sau đó sn -i ... hoạt động. Về cơ bản xác nhận rằng đối với tôi, cả hai bước đều được yêu cầu. Cài đặt lại cert sau đó thực thi lệnh sn.
Dodgyrabbit

1
Tôi đã tìm thấy trong cả VSS và TFS rằng nếu bạn chạy lệnh sn -i thì nó không hoạt động trừ khi bạn đã kiểm tra tệp PFX và khi bạn kiểm tra thì nó không hoạt động đối với các nhà phát triển khác trên mạng. Tôi sẽ phải thử cài đặt lại cert sau đó chạy lệnh sn -i. Chúng tôi cần nó để làm việc trên tất cả các máy phát triển trong văn phòng.
JasonD

5
Điều này cũng làm việc cho tôi, tuy nhiên tôi chưa bao giờ phải làm điều này trong quá khứ. VS thường chỉ bật lên và hỏi mật khẩu cho mỗi khóa. Điều gì đã thay đổi?
Kevin Berridge

126

Tôi đã phát hiện ra một bản sửa lỗi giúp bạn có thể xây dựng thành công trong môi trường nhiều nhà phát triển:

Thay vì thay đổi mật khẩu (khiến .pfx bị thay đổi), hãy chọn lại tệp .pfx từ hộp tổ hợp. Điều này sau đó gọi hộp thoại mật khẩu. Sau khi nhập mật khẩu, dự án sẽ xây dựng OK. Mọi nhà phát triển có thể làm điều này trên máy cục bộ của mình mà không thực sự sửa đổi tệp .pfx.

Tôi vẫn gặp sự cố khi nhận các bản lắp ráp được ký trên máy chủ xây dựng của chúng tôi. Tôi đang gặp lỗi tương tự ở đó, tuy nhiên sử dụng phương thức sn.exe -i không khắc phục được sự cố cho máy chủ xây dựng.


5
Đã mất một thời gian để không làm việc này trên máy chủ xây dựng TFS của chúng tôi, tôi nhận ra rằng tôi đã đăng nhập như chính tôi, không phải là tài khoản dịch vụ xây dựng, không có gì lạ khi không thể tìm thấy nó - doh!
Daniel Morritt

7
Điều này nên được đánh dấu là câu trả lời vì câu trả lời hiện được đánh dấu sẽ không hoạt động trong môi trường nhiều nhà phát triển. Làm tốt.
Daniel McQuiston

Nếu bạn đang sử dụng cùng một tệp .pfx để ký nhiều tập hợp / dự án trong một giải pháp, bạn chỉ cần thực hiện bước này trên một dự án và nó sẽ áp dụng cho tất cả chúng. Công trình tuyệt vời.
Jon Comtois

1
Vấn đề của tôi là máy chủ xây dựng đã chạy dưới một tài khoản cục bộ. Tôi đã đi vào các tùy chọn và thay đổi, nhưng không nhận ra rằng tôi đã thay đổi nó sai chỗ - điều này khiến tôi phải khắc phục sự cố trong nhiều giờ cho đến khi tôi kiểm tra lại và nhận ra sai lầm của mình!
Người đàn ông Muffin

3
Rực rỡ cảm ơn. Thật buồn khi thấy đây vẫn là một cách giải quyết trong năm 2017.
Billy Jake O'Connor

43

Tôi có cùng một vấn đề và xóa các cửa hàng và đọc không hoạt động. Tôi đã phải làm như sau.

  • Nhận một bản sao của OpenSSL . Nó có sẵn cho Windows . Hoặc sử dụng một hộp Linux vì tất cả chúng đều có nó.

  • Chạy phần sau để xuất thành tệp chính:

    openssl pkcs12 -in certfile.pfx -out backupcertfile.key
    
    openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
    

Sau đó, trong các thuộc tính dự án, bạn có thể sử dụng tệp PFX.


1
Cảm ơn bạn!! Tôi nghĩ rằng điều này làm việc cho tôi. Tôi đã lấy openssl ở đây: gnuwin32.sourceforge.net/packages/openssl.htm
aherrick

Tôi muốn thêm tùy chọn để bao gồm chứng chỉ thực tế trong pfx: openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt -keysig -keyex
Pete

Đảm bảo chạy openssl với tư cách quản trị viên, nếu không bạn sẽ gặp lỗi "không thể viết 'trạng thái ngẫu nhiên'" Ngoài ra: Tôi vẫn phải thực hiện câu trả lời của Brandon Manchester với điều "sn -i ..." sau khi thực hiện openssl Điều.
Lee Richardson


Đây là giải pháp duy nhất, cuối cùng đã làm việc cho tôi. Cảm ơn!
Ladislav

37

Tôi đã nói quá sớm! Rebuild đưa các lỗi trở lại vào chơi ...

Tôi thấy điều này hoạt động - nhấp chuột phải vào Solution Explorer và loại trừ nó khỏi dự án. Nhấp vào Hiển thị tất cả các tệp , nhấp chuột phải và bây giờ đưa nó vào dự án một lần nữa. Bây giờ hoàn tác các thay đổi đang chờ xử lý ...

Vì một số lý do, việc này đã sắp xếp nó cho tôi và tương đối không đau!


Takin 'nó trở lại, không giúp đỡ. Không nhận ra nó đã loại bỏ pfx khỏi cài đặt dự án. Tôi nghĩ rằng câu trả lời nằm trong câu trả lời từ Stefan stackoverflow.com/a/14644793/1735721
DennisWelu

Câu trả lời này là tuyệt vời. Nó làm việc cho tôi, và nó rất dễ dàng.
Ben Rubin

Làm việc cho tôi (VS2017 15.7.4). Cảm ơn bạn cho giải pháp tốt đẹp và nhanh chóng.
cuộc họp

Làm việc cho tôi trên VS2019 16.1.3. Cảm ơn!!
JordanTDN

35

Tôi thấy rằng trong một số trường hợp, bạn nên cố gắng xóa khóa này trước khi cài đặt nó. Vì vậy, làm như sau:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

1
CÁi này đã sửa nó giúp tôi! Bản thân việc cài đặt đã thất bại với đối tượng đã tồn tại.
Andy

Tôi cũng đã thử và nó không giúp được gì. Có thể một cái gì đó sai với chính giấy chứng nhận?
Tomáš Zato - Phục hồi Monica

2
Cảm ơn bạn, việc xóa phải được thực hiện với tư cách quản trị viên - nếu chạy như người dùng thông thường, người ta sẽ gặp lỗi sai "Không tìm thấy hộp chứa khóa tên mạnh".
Astrowalker

Cảm ơn công việc của nó cho tôi.
Rikin Patel

31

VSCommands 2010 (plugin cho Visual Studio) có thể tự động sửa lỗi này - chỉ cần nhấp chuột phải vào lỗi và nhấp vào Áp dụng Khắc phục từ menu. Bạn có thể lấy nó từ thư viện Visual Studio .


1
Tôi tin rằng đây là phiên bản pro - không có tùy chọn này trong phiên bản rút gọn của tôi
Adam Butler

2
Phiên bản tôi vừa tải xuống (vào tháng 9 năm 2011) đi kèm với tùy chọn này.
Jim đếm

4
Nó vẫn đòi hỏi một giấy phép chuyên nghiệp.
John Baughman

27

Sau khi thử tất cả các giải pháp này (và nhiều hơn nữa), tôi thấy rằng vấn đề nằm ở một nơi khác. Đối với những người trải qua cùng khổ sở với tôi sau khi mua chứng chỉ, tôi sẽ chia sẻ giải pháp cho vấn đề của mình.

Hành vi

Tôi hiểu rằng 'dấu hiệu' áp dụng một tên mạnh chứ không phải mã xác thực cho DLL hoặc EXE. Đây là lý do tại sao signtool sẽ hoạt động trong trường hợp này, nhưng 'đăng nhập' trong Visual studio sẽ không hoạt động.

Lý do

Trước đây tôi đã có kinh nghiệm với các chứng chỉ từ Verisign. Họ có một KeySpec=2chứng chỉ - được sử dụng với chức năng 'ký' trong Visual Studio. Các chứng chỉ này hoạt động tốt cho cả Visual Studio và signtool.

Bây giờ tôi đã mua chứng chỉ từ Comodo, có KeySpec=1chứng chỉ ký mã không chính xác . Điều đó có nghĩa là các chứng chỉ này hoạt động tốt với signtool (Authenticode) nhưng không có tên mạnh (thả xuống dấu hiệu).

Giải pháp

Có hai cách để giải quyết vấn đề này:

  1. Tạo một chứng chỉ riêng cho tên mạnh của bạn bằng cách sử dụng sn -k [name].snk. Ký tên hội đồng bằng cách sử dụng snk và sau đó sử dụng signtool với chứng chỉ ký mã của bạn để thực hiện ký DLL / EXE với chữ ký xác thực. Mặc dù điều này có vẻ lạ, nhưng theo những gì tôi hiểu thì đây là một cách chính xác để xử lý các chứng chỉ, bởi vì các tên mạnh có mục đích khác với Authenticode (xem thêm liên kết này để biết chi tiết về cách thức hoạt động của nó).
  2. Nhập chứng chỉ của bạn dưới dạng KeySpec=2. Thủ tục cho điều này được chi tiết ở đây .

Vì tôi muốn sử dụng nhiều tên mạnh, tôi hiện đang sử dụng tùy chọn (1), mặc dù tùy chọn (2) cũng hoạt động.


Để đảm bảo giải pháp này sẽ không bao giờ bị mất trong tương lai, đây là quy trình của giải pháp 2:

  1. Sử dụng MMC "Chứng nhận" xuất bộ khóa ( KeySpec=1) hiện có sang tệp PFX. Lưu ý: Vui lòng sao lưu tệp này vào vị trí an toàn và kiểm tra xem tệp có thể được nhập ok trên máy khác không nếu bạn thực sự muốn chơi an toàn!
  2. Xóa chứng chỉ hiện có khỏi cửa hàng tiền điện tử (stlll bằng MMC).
  3. Mở một dấu nhắc CMD.
  4. Nhập tệp PFX bằng lệnh này:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. Nhập cụm mật khẩu cho pfx khi được nhắc.

Bây giờ bạn nên có một keyset / chứng chỉ với KeySpec=2. Nếu cần, bây giờ bạn có thể xuất tệp này sang tệp PFX khác bằng cách sử dụng lại MMC.


Giải pháp số 2 của bạn là điều duy nhất hiệu quả với tôi (mà không sử dụng công cụ dòng lệnh phụ hoặc quy trình) Cảm ơn.
Bron Davies

1
Vâng, tôi thực sự không hiểu tại sao một số giải pháp ở đây có nhiều phiếu bầu; đây thực sự là điều duy nhất phù hợp với tôi và tôi khá chắc chắn rằng hầu hết mọi người mua chứng chỉ CS đều có cùng một vấn đề. Ôi
chà

1
Đây là giải pháp duy nhất làm việc cho tôi. Ngoài ra, tệp .pfx không thể bao gồm thông tin chuỗi chứng chỉ để ký các hội đồng.
Shih-Wen Su

Cảm ơn bạn đã hướng dẫn chi tiết như vậy. Mỗi bước được mô tả chính xác.
Dmitriy

1
Giải pháp đầu tiên của bạn rất quan trọng để hiểu ở đây: hoàn toàn không cần phải ký hợp đồng mạnh với chứng chỉ được bảo vệ bằng mật khẩu đắt tiền! Khi bạn hiểu điều này và chỉ cần sử dụng tệp snk, vấn đề này sẽ biến mất hoàn toàn. Xem ghi chú cảnh báo ở đâyđây .
Paul

11

Để giải quyết vấn đề này trong Visual Studio 2012, tôi nhấp chuột phải vào dự án, thuộc tính -> "ký" và sau đó bỏ chọn "Ký vào bảng kê khai ClickOnce".


2
Đây là một câu trả lời hoàn hảo nếu không có nhu cầu ký. Nó sẽ loại bỏ sự cần thiết cho dự án được ký kết.
Tom Anderson

8

Tôi đã chọn lại tệp Khóa (pfx) trong hộp thả xuống "Chọn tệp khóa tên mạnh", sau đó cung cấp mật khẩu trong Cửa sổ bật lên "ENTER PASSWORD". Lưu dự án của tôi và đã xây dựng lại.build đã thành công.

  • Mở thuộc tính dự án.
  • Nhấp vào phần Ký.
  • Trong đó ghi 'Chọn tệp khóa tên mạnh:', chọn lại giá trị hiện tại từ hộp thả xuống:

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

  • Visual Studio sẽ nhắc bạn nhập mật khẩu. Nhập nó

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

  • Lưu dự án của bạn và làm lại.

  • Nếu nhận được thông báo lỗi: Sau đó, một nỗ lực đã được thực hiện để tham chiếu mã thông báo không tồn tại, chỉ cần bỏ qua nó và Tiếp tục các bước dưới đây

  • Nhấp vào nút 'Thay đổi mật khẩu mật khẩu:

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

  • Nhập mật khẩu gốc vào cả ba ô và bấm OK. Nếu bạn muốn thay đổi mật khẩu của mình (hoặc nếu mật khẩu cũ của bạn không đáp ứng các yêu cầu phức tạp), bạn có thể thực hiện ngay bây giờ.

  • Lưu dự án của bạn và làm lại.

Thêm thông tin..


3
Toàn bộ lỗi này có vẻ như hoàn toàn ngẫu nhiên để giải quyết, nhưng giải pháp này hiệu quả với tôi. Nếu bất cứ ai khác nhận được điều này ở xa trang, tôi chỉ có thể đề nghị thử mọi thứ.
DeusExMachina25

6

Như một giải pháp thay thế, tôi đã thử chạy Visual Studio 2010 với tư cách quản trị viên và nó hoạt động với tôi.

Tôi hi vọng cái này giúp được.


Nó vì một số lý do ngừng hoạt động. Tôi không thể tin rằng điều này thực sự giải quyết vấn đề. Cảm ơn bạn!!!
Gerhard Powell

4

Là tác giả ban đầu của công việc xoay quanh báo cáo lỗi kết nối, có HAI biến thể của thông báo này (tôi đã phát hiện ra sau)

Đối với một biến thể, bạn sử dụng sn.exe (thường là nếu bạn đang thực hiện đặt tên mạnh) để nhập khóa vào cửa hàng đặt tên mạnh.

Biến thể khác mà bạn sử dụng certmgr để nhập là khi bạn đang mã hóa cho những thứ như triển khai nhấp một lần (lưu ý bạn có thể sử dụng cùng một chứng chỉ cho cả hai mục đích).

Hi vọng điêu nay co ich.


Vâng, chúng tôi đã thử một cái với sự hỗ trợ của Microsoft, và đó là cách để nhập mã ký. Vấn đề thực sự có vẻ là mật khẩu chứng chỉ bị mất trong quá trình kiểm tra nguồn an toàn. Nhưng đây không phải là vấn đề thực sự. Có vẻ như nếu bạn nhập chi tiết chứng chỉ trên máy Widnows 7 # 1, sau đó di chuyển chính xác tệp đó sang một máy khác và đăng ký, đăng ký sẽ hoạt động, nhưng quá trình xây dựng sẽ thất bại. Microsoft vẫn đang xem xét nó cho chúng tôi. Hiện tại chúng tôi đã phải vô hiệu hóa ký mã và ký thủ công trong quá trình phát hành.
JasonD

3

Không có gì làm việc cho tôi, nhưng sau đó tôi đã đi và xem xét trình quản lý chứng chỉ (mmc.exe). Chứng chỉ không được nhập trong cửa hàng cá nhân, vì vậy tôi đã nhập thủ công và sau đó dự án được biên dịch.

Xem Đăng nhập bằng cách ký tên và ký tên mạnh mẽ của ClickOnce bằng cách sử dụng Trang ký tên của nhà thiết kế dự án Visual Studio, các bản hợp đồng ký tên .


Điều này cũng giải quyết được vấn đề cho tôi sau khi thực hiện sửa lỗi SN.exe.
CodingSamurai

2

Chọn lại tệp chính trong hộp tổ hợp và nhập mật khẩu sẽ giúp chúng tôi.

Nhưng nó là cần thiết để làm mỗi lần tập tin chính thay đổi và nó dường như không ổn.


2

Tôi gặp vấn đề tương tự sau khi chuyển cài đặt Windows sang SSD . Không có giải pháp nào khác làm việc cho tôi.

Giải pháp của tôi là mở tệp dự án trong Notepad và xóa tất cả các tham chiếu đến các khóa PFX. Khi tệp được lưu, hãy mở giải pháp trong Visual Studio. Đi đến dự án -> Thuộc tính -> Ký kết. Bạn không nên thấy bất kỳ khóa nào được liệt kê trong hộp tổ hợp 'chọn tệp khóa tên mạnh'. Trong hộp tổ hợp, duyệt đến phím, chọn nó và dự án của bạn bây giờ có thể được xây dựng.


2

Vấn đề của tôi là Bộ điều khiển xây dựng TFS đang chạy như một dịch vụ mạng và vì một số lý do tôi không hiểu tại sao chứng chỉ dịch vụ Visual Studio Build Host không được sử dụng. Tôi đã thay đổi danh tính của dịch vụ Visual Studio Build thành một thứ dễ quản lý hơn, đảm bảo rằng nó có quyền trên máy chủ TFS và thêm thủ công các chứng chỉ bằng MMC.

Vấn đề cũng là MSBuild không thể thêm chứng chỉ được bảo vệ bằng mật khẩu vào cửa hàng.


Cửa hàng nào bạn cần thêm nó vào ??
felickz

Tôi cũng đã làm như vậy (và cũng đưa certs vào người dùng này Cá nhân / Root đáng tin cậy / Pub Pub đáng tin cậy .. không chắc đã sửa nó) và có thể chuyển sang lỗi TFS tiếp theo mà tôi có không gian làm việc xung đột, vì vậy để khắc phục rằng tôi cũng đã mắc phải để loại bỏ và thêm một tác nhân xây dựng mới.
felickz

2

Tôi gặp vấn đề tương tự, nhưng sau khi chọn pfx trong ComboBox "Tệp khóa tên mạnh" và nhập mật khẩu, tôi vẫn gặp một lỗi tương tự (không có phần tên container):

Không thể nhập tệp khóa sau: companyname.pfx. Các tập tin quan trọng có thể được bảo vệ bằng mật khẩu. Để sửa lỗi này, hãy thử nhập lại chứng chỉ hoặc cài đặt chứng chỉ theo cách thủ công

Ngoài ra, bảng thông tin chứng chỉ "Ký vào bảng kê khai ClickOnce" không được điền.

Tôi đã thực hiện "Chọn từ tệp ..." trên pfx của mình và nó đã giải quyết được vấn đề.


1

Tất cả các phương pháp được mô tả ở đây không giúp tôi. Nhưng khi tôi xóa tệp * .pfx khỏi dự án của mình và thêm nó vào ký kết của hội đồng, tôi đã xây dựng dự án của mình mà không gặp bất kỳ lỗi nào! Tôi không thể giải thích lý do tại sao. Nhưng nó làm việc cho tôi.


1

Được rồi, điều này làm việc cho tôi. Mở giải pháp / dự án cũ với tư cách quản trị viên trong Visual Studio 2010 và mở giải pháp / dự án mới hoặc sao chép. Là quản trị viên, hãy xóa tệp pfk đã sao chép trong giải pháp / dự án Visual Studio 2010 mới và đi đến thuộc tính dự án và bỏ chọn nó.

Với cả hai dự án mở, sao chép dán vào dự án mới. Chuyển đến thuộc tính dự án và chọn Build. Tôi đã mở và đóng Visual Studio và cả sau khi xóa khỏi dự án mới đã xây dựng nó trước khi sao chép nó từ dự án cũ và chọn nó. Tôi đã nhận được lỗi khi bắt đầu bài đăng này lần đầu tiên khi tôi sao chép dự án và cố gắng xây dựng nó.


1

Trong kịch bản của tôi, dịch vụ xây dựng không sử dụng cùng một tài khoản người dùng mà tôi đã nhập khóa bằng cách sử dụng sn.exe .

Sau khi thay đổi tài khoản thành tài khoản quản trị viên của tôi, mọi thứ đều hoạt động tốt.


Tôi cũng gặp vấn đề tương tự, khi đọc bình luận của bạn đã chỉ cho tôi thực tế là tôi đã nâng cấp lên windows 10 từ windows 7 và bây giờ VS bắt buộc phải được chạy với tư cách Quản trị viên. Vì vậy, chạy VS với tư cách quản trị viên và không có vấn đề gì
Cảm ơn

1

Điều này đã giải quyết vấn đề của tôi: Mở Dự án VS của bạn

Nhấp đúp chuột vào Gói.appxmanifest

Chuyển đến tab Đóng gói

bấm chọn chứng chỉ

nhấp vào cấu hình chứng chỉ

chọn từ tệp và sử dụng example.pfx mà thống nhất hoặc bất kỳ thứ gì khác được tạo


0

Tôi đã tự giải quyết vấn đề này bằng cách thay đổi dòng sau trong tệp .csproj của dự án Visual Studio:

Điều này đã ném lỗi 'không thể nhập':

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

Thay đổi giá trị thành sai khiến lỗi mất đi.


7
Thông thường các hội đồng được ký kết cho mục đích và việc xóa SignManifests sẽ gây ra rắc rối khi triển khai trong một số môi trường. Vì vậy, nó không phải là một giải pháp cho một vấn đề
Georgy Smirnov

0

Tôi đã nhận được cùng một lỗi. Trong trường hợp của tôi, tôi đã thử tất cả các cách trên, nhưng tôi không thể nhận được kết quả.

Cuối cùng tôi nhận ra rằng trong trường hợp của tôi, lý do của lỗi là mật khẩu chứng chỉ không được nhập hoặc nhập sai. Lỗi biến mất khi tôi nhập mật khẩu một cách chính xác. thành công


0

Thật không may, không có cách tiếp cận được đề cập ở đây làm việc cho tôi. Tôi phải đăng ký vài PFX trong một container docker và tôi cần truyền mật khẩu qua dòng lệnh.

Vì vậy, tôi đã phát triển lại sn.exe -i <infile> <container>lệnh trong C # bằng cách sử dụng RSACryptoServiceProvider . Nguồn và ứng dụng có trên GitHub trong SnInstallPfx dự án .

các SnInstallPfx ứng dụng chấp nhận một phím PFX và mật khẩu của mình. Nó tự động tính toán tên thùng chứa khóa (VS_KEY_ *) (mượn từ mã nguồn MSBuild) và cài đặt nó vào tên mạnh CSP.

Sử dụng:

SnInstallPfx.exe <pfx_infile> <pfx_password>
// or pass a container name if the default is not what you need (e.g. C++)
SnInstallPfx.exe <pfx_infile> <pfx_password> <container_name>

0

Dành cho ai đang sử dụng vận động viên GitLab:

  • Hãy chắc chắn chạy người chạy bằng tài khoản mà bạn có thể đăng nhập: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"(Tôi phải dừng và gỡ cài đặt trước)
  • làm theo hướng dẫn này để cấp quyền cho người dùng bản dựng để đăng nhập như một dịch vụ
  • đăng nhập với người dùng xây dựng như vậy
  • sử dụng lệnh được đề xuất trong các câu trả lời khác: sn -i certificate.pfx VS_KEY_C***6

tên container được đề xuất trong đầu ra Công việc thất bại trên GitLab (đầu ra msbuild) nhập mô tả hình ảnh ở đây

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.