2010-11-14 82 views
15

Tôi thường không bận tâm với việc ký hợp đồng .NET của mình, vì vậy tôi không biết nhiều hơn cơ chế cơ bản của nó. Đối với một dự án nhỏ mà tôi đang làm, tôi cần phải ký tên và tạo một khóa mới, được bảo vệ bằng mật khẩu.Mật khẩu khóa tên mạnh được lưu trữ ở đâu?

Tôi dự kiến ​​sẽ được nhắc nhập mật khẩu này vào thời điểm nào đó khi biên dịch lại bản lắp ráp, nhưng tôi chưa bao giờ cần nhập vào bất cứ đâu sau khi tạo tệp khóa. Điều này dường như đánh bại mục đích của mật khẩu bảo vệ chìa khóa ở nơi đầu tiên.

Tôi tưởng tượng mật khẩu được lưu trữ ở đâu đó, nhưng ở đâu? Có trong một số loại lưu trữ riêng tư không? Nếu tôi cung cấp cho ai đó toàn bộ thư mục giải pháp của tôi cùng với tệp khóa trong đó, họ sẽ được nhắc nhập mật khẩu tôi đã nhập hay họ có thể ký tên vào assembly không có mật khẩu?

Có rất nhiều bài viết trên internet về các phím tên mạnh và sử dụng chúng, nhưng vì một lý do nào đó, tất cả chúng đều che mờ cách sử dụng mật khẩu của Visual Studio.

Cập nhật: Khởi động lại Visual Studio (và Windows) không có hiệu lực, do đó bộ nhớ đệm có vẻ dai dẳng. Xóa tập tin .suo không thay đổi thực tế là không cần mật khẩu để ký tên vào assembly.

+0

Bạn đã bảo vệ mật khẩu tệp bằng cách nào? –

+0

@Lasse: Visual Studio có tùy chọn bảo vệ mật khẩu khi bạn tạo khóa. Tôi đã xác minh rằng nó được bảo vệ bằng cách mở tệp .pfx. – Thorarin

+0

Cảm ơn, tôi không biết điều đó. –

Trả lời

11

Xem tài liệu cho số Create Strong Name Key Dialog Box.

Thông tin mật khẩu được lưu trữ trong cơ sở dữ liệu lưu trữ mật mã của máy tính của bạn.

Thông tin khác từ CLR Inside Out: Using Strong Name Signatures.

Bạn có thể cài đặt khóa cá nhân trong vùng chứa khóa sử dụng danh sách kiểm soát truy cập hạn chế (ACL) để ngăn truy cập trái phép vào vùng chứa khóa. Ngoài ra, bạn có thể lưu trữ khóa riêng trên thẻ thông minh hoặc thiết bị phần cứng riêng biệt khác. Công cụ sn.exe cho phép bạn sử dụng một nhà cung cấp dịch vụ mã hóa khác (CSP) để ký. Hãy xem tùy chọn –c trong tài liệu cho sn.exe.

+1

Thú vị ... Lúc đầu, tôi không thể tìm thấy bất kỳ tham chiếu nào đến "cơ sở dữ liệu lưu trữ mật mã" này. Kể từ đó tôi phát hiện ra rằng tôi có thể sử dụng 'sn.exe' để thêm và xóa các phím đến/từ CSP tên mạnh. Một vấn đề mà tôi vẫn gặp phải là Visual Studio dường như tạo ra một tên container ngẫu nhiên cho khóa, vì vậy tôi không biết làm thế nào để xóa một liên kết với dự án của tôi. Bạn không thể sử dụng sn.exe để liệt kê tất cả tên vùng chứa. – Thorarin

+1

Nhìn vào% AppData% \ Microsoft \ Crypto nơi CSP mặc định (nhà cung cấp lưu trữ mã hóa) lưu trữ các công cụ cụ thể cho người dùng hoặc% AllUsersProfile% \ Microsoft \ Crypto cho các khóa toàn bộ máy. – sisve

+1

Mức độ khá thấp, nhưng tôi đã tìm được khóa (vì đó là khóa duy nhất). Tôi đã thử công cụ này được gọi là KeyPal, nhưng điều đó dường như không còn hoạt động nữa. Cảm ơn sự giúp đỡ cho đến nay mặc dù :) – Thorarin

Các vấn đề liên quan