Tôi có ứng dụng C# tự cung cấp Owin cung cấp dịch vụ Web API trên 127.0.0.1:5555 (chỉ nghe trên máy cục bộ, không có kết nối bên ngoài).Chứng chỉ SSL tự ký cho localhost, cách tin cậy
Các dịch vụ Web API này được gọi bằng cách sử dụng Ajax từ ứng dụng AngularJS. Ngoài ra: lý do cho ứng dụng Owin là sự tương tác nhất định với phần cứng là cần thiết, điều không thể thực hiện được từ bên trong trình duyệt. Ngoài ra, ứng dụng AngularJS là để sử dụng nội bộ, vì vậy tôi có quyền kiểm soát đối với các trình duyệt được sử dụng.
Ở trên hoạt động rất tốt trên HTTP, nhưng ứng dụng Angular JS cần sử dụng SSL, ứng dụng này không hoạt động trừ khi ứng dụng Owin cũng sử dụng SSL (nếu không bạn gặp lỗi "Nội dung hỗn hợp").
Tôi đã mua chứng chỉ chính thức cho ứng dụng AngularJS và tôi đang sử dụng các chứng chỉ tự ký cho các công cụ địa phương của Owin.
Vấn đề là tôi nhận được "NET :: ERR_CERT_AUTHORITY_INVALID" (khi testin từ Chrome) và "net :: ERR_INSECURE_RESPONSE" từ ứng dụng AngularJS khi nói chuyện với API Web Owin.
Dưới đây là những gì tôi đã làm, trong đột quỵ rộng:
tôi đã sử dụng một hộp CentOS để tạo ra các CERT cho localhost và xuất khẩu nó để pkcs12/định dạng PFX. Tôi cũng tạo ra một CA cert và xuất khẩu nó theo cùng một cách.
Sử dụng MMC Tôi đã nhập chứng chỉ localhost trên máy tính Windows 7 chạy ứng dụng Owular Angular & vào Chứng chỉ (Máy tính cục bộ)> Cá nhân> Chứng chỉ.
tôi cũng nhập khẩu các cert CA trên máy tính Windows 7 vào Certificates (Local Computer)> Trusted Root Certification Auhorities> Chứng chỉ
Nhìn vào cert localhost, nó nói "Cấp cho: localhost", Cơ quan cấp: "ca.acme.com", "Bạn có khóa riêng để chứng thực chứng chỉ này", (theo Đường dẫn chứng nhận) "Chứng chỉ này là Ok"
CA CA nói "Đã phát hành tới: ca.acme.com" , Được phát hành bởi: "ca.acme.com", "Bạn có khóa riêng có chứng nhận này", (theo Đường dẫn chứng nhận) "Chứng chỉ này là Ok"
netsh http show sslcert
IP:port : 127.0.0.1:5555
Certificate Hash : 1234555555555555555555511155555555555555
Application ID : {1234a123-1234-1234-1234-123412341234}
Certificate Store Name : (null)
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
Tôi đang thiếu gì? Làm thế nào tôi có thể làm cho Chrome, vv tin tưởng SSL cert cho localhost?
Nếu điều này chỉ dành cho thử nghiệm của riêng bạn: Gọi URL HTTPS trực tiếp sử dụng chứng chỉ đó và thêm ngoại lệ trong trình duyệt của bạn. Nếu bạn muốn nó hoạt động ở mọi nơi trong trình duyệt của người dùng trên web - thì bạn cần nhận chứng chỉ được CA tin cậy ký. – CBroe
http://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate – epascarello
@CBroe Nó không phải để thử nghiệm. Ngoài ra, điều này sẽ được sử dụng trên một số lượng lớn các máy tính nội bộ; Tôi có thể nhận được một cert chính thức cho localhost và sử dụng nó trên tất cả chúng bằng cách nào đó? Vì đây là tất cả lưu lượng truy cập localhost (không có dữ liệu nhạy cảm), tôi thực sự không có vấn đề về bảo mật. – Lars335