Tôi đang cố sử dụng lớp HttpListener trong ứng dụng C# để có một máy chủ web nhỏ phục vụ nội dung qua SSL. Để làm điều này, tôi cần sử dụng công cụ httpcfg. Tôi có tệp .pfx với cặp khóa công khai và riêng tư của mình. Nếu tôi nhập cặp khóa này bằng tay bằng cách sử dụng mmc vào cửa hàng máy cục bộ, mọi thứ đều hoạt động tốt. Tuy nhiên, nếu tôi nhập cặp khóa này bằng cách lập trình sử dụng lớp X509Store, tôi không thể kết nối với máy chủ web mini của mình. Lưu ý rằng trong cả hai phương thức, cert được nhập vào kho lưu trữ MY trong LocalMachine. Thật kỳ lạ, tôi có thể xem chứng chỉ bằng mmc khi tôi lập trình nhập nó và khi tôi xem nó, giao diện người dùng chỉ ra rằng khóa cá nhân cũng có sẵn cho chứng chỉ này.Nhập chứng chỉ với khóa riêng lập trình
Đào sâu hơn một chút, tôi nhận thấy rằng khi nhập thủ công cặp khóa, tôi có thể thấy một tệp mới xuất hiện trong C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
, nhưng không xuất hiện khi tôi nhập theo chương trình. Trên ghi chú có liên quan, khi tôi xóa chứng chỉ được nhập theo cách thủ công, nó sẽ không xóa tệp khóa cá nhân tương ứng khỏi thư mục được đề cập trước đó.
Cuối cùng, câu hỏi của tôi là: Khi tôi lập trình thêm chứng chỉ vào cửa hàng, khóa cá nhân được lưu trữ ở đâu và tại sao không truy cập được lớp HttpListener (HttpApi)?
Lưu ý rằng câu hỏi này có liên quan một chút nhưng tôi không nghĩ rằng permissioning là vấn đề vì đây là tất cả được thực hiện như là người dùng Windows giống nhau: How to set read permission on the private key file of X.509 certificate from .NET
Hãy đánh dấu câu trả lời này là câu trả lời – Developer
Rất tiếc, tôi phải chờ 48 giờ trước khi tôi có thể làm như vậy vào thời điểm đó tôi có thể sẽ quên làm điều đó. :( – Jason
Tôi lãng phí khoảng 30 phút cố gắng tìm ra lý do tại sao "X509KeyStorageFlags.MachineKeySet & X509KeyStorageFlags.PersistKeySet" không hoạt động. Tất nhiên, nó phải là "X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet". Rõ ràng, chỉ trong trường hợp người khác –