2012-11-01 19 views
9

Tôi có dịch vụ WCF mà tôi đang cố gắng lưu trữ trên máy chủ web sản xuất (IIS6) của chúng tôi. Tôi đã thiết lập web và liên kết chứng chỉ của chúng tôi với web. Khi tôi cố gắng duyệt đến url dịch vụ, tôi nhận được lỗi sau trong bản ghi sự kiện:Lỗi WCF: 'Có thể chứng chỉ' cert của tôi 'có thể không có khóa riêng có khả năng trao đổi khóa

Thông điệp ngoại lệ là: Có khả năng là giấy chứng nhận 'CN = .mydomain, OU = an toàn liên kết SSL Wildcard , OU = IT, C = US 'có thể không có khóa riêng có khả năng trao đổi khóa hoặc quy trình có thể không có quyền truy cập đối với khóa riêng tư. Vui lòng xem ngoại lệ bên trong để biết chi tiết .. ---> System.ArgumentException: Có khả năng là chứng chỉ 'CN = .mydomain.com, OU = Secure Link SSL Wildcard, OU = IT, O = mydomain, C = Hoa Kỳ 'có thể không có khóa riêng có khả năng trao đổi khóa hoặc quy trình có thể không có quyền truy cập cho khóa riêng tư . Vui lòng xem ngoại lệ bên trong để biết chi tiết. ---> System.Security.Cryptography.CryptographicException: Tay cầm là không hợp lệ.

Tôi đã xác nhận ASP.Net 1.1, 2 và 4 đều được đặt thành 'Cho phép' trong 'Tiện ích mở rộng dịch vụ web'. Tôi cũng đã xác nhận cert được thiết lập trong iis và nó cho thấy 'Bạn có một khóa riêng tương ứng với chứng chỉ này'. Ngoài ra, Execute Permissions được đặt thành 'Script và Executables'.

Trả lời

22

Tôi gặp sự cố này và hóa ra là tài khoản mà dịch vụ đang chạy không có quyền truy cập khóa riêng tư của chứng chỉ.

Dưới đây là các bước tôi đã sử dụng để giải quyết nó:

  • Bắt đầu quản lý Giấy chứng. Thực hiện điều này bằng cách chạy MMC, kích hoạt [File] - [Add/Remove Snap-in ...], sau đó thêm "Certificates", chọn "Computer Account" và "Local Computer" trong hộp thoại wizard sau đó.
  • Trong trình quản lý chứng chỉ, nhấp chuột phải vào chứng chỉ có liên quan và kích hoạt [Tất cả công việc] - [Quản lý khóa riêng]
  • Điều này cung cấp cho bạn cửa sổ quyền. Nhấp vào Thêm
  • Thêm tên tài khoản hoặc nhóm mà dịch vụ này chạy dưới.
+0

khi tôi kiểm tra quản lý khóa riêng tư tôi thấy người dùng của tôi có quyền nhưng tôi vẫn gặp phải lỗi này? – Ilaria

1

Có vẻ như chứng chỉ của bạn đã được tạo cho chữ ký và không trao đổi khóa, những gì tôi cho là bình thường đối với chứng chỉ SSL.

Nếu bạn nhìn vào makecert documentation, bạn có thể thấy rằng chuyển đổi -sky cho phép bạn chỉ định liệu chứng chỉ có nên được sử dụng cho chữ ký hay trao đổi khóa hay không. Bạn có thể thử tạo một chứng chỉ tự ký với trao đổi kiểu và kiểm tra xem liệu ngoại lệ đó có xảy ra hay không. Đừng quên đặt chứng chỉ tự ký vào thư mục cơ quan chứng nhận gốc đáng tin cậy của máy để tránh trường hợp ngoại lệ chứng chỉ không hợp lệ.

+0

Được sử dụng makecert, đã tạo chứng chỉ có thông số trao đổi và được nhập. Đã cập nhật web.config để trỏ đến chứng chỉ mới và nhận được lỗi tương tự. Bất cứ điều gì khác tôi có thể thử? –

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