2012-01-09 51 views
13

Chúng tôi đang tạo xác thực ba yếu tố cho trang web do yêu cầu pháp lý ở một quốc gia Scandinavia. Khách hàng đang sử dụng trình cắm trình duyệt có thương hiệu NetID để thực hiện xác thực chứng chỉ PKCS # 11 trong trình duyệt. Các thẻ thông minh được cung cấp tập trung bởi một đối tác trên khách hàng.Trang web Xác thực thẻ thông minh PKSC# 11 và chứng chỉ ứng dụng khách SSL

Chủ đề này không có sẵn nhiều tài nguyên hoặc hướng dẫn trực tuyến. Có ai đó có bất kỳ con trỏ để triển khai ví dụ hoặc hướng dẫn làm thế nào để làm xác thực PKCS11 trong một trình duyệt web?

EDIT: Tìm thấy về giấy chứng nhận SSL client

  • Hình như phương pháp xác thực là SSL Certificate Khách hàng

  • Làm thế nào để chúng tôi quản lý mối quan hệ giữa người sử dụng và thẻ thông minh của họ?

  • Người dùng có cung cấp cho chúng tôi khóa công khai của họ và chúng tôi xác thực họ không?

  • Chúng tôi có cần ký/cung cấp riêng từng người dùng bằng chứng nhận của chính mình không?

  • Tất cả các thẻ thông minh của người dùng có chứa khóa "chung" mà chúng tôi kiểm tra đối với chứng chỉ của nhà cung cấp không?

http://www.garex.net/apache/

http://www.impetus.us/~rjmooney/projects/misc/clientcertauth.html

https://en.wikipedia.org/wiki/PKCS11

https://service.secmaker.com/examples/plugin.aspx

Trả lời

8

Đừng làm điều đó với JavaScript. JavaScript cryptography has a number of problems và tôi không nghĩ nhiều trình duyệt sẽ cho phép bạn truy cập trực tiếp PKCS # 11 từ JavaScript (chạy từ bên trong trang) một cách dễ dàng.

Một số trình duyệt hỗ trợ PKCS # 11 để xác thực HTTPS, tức là sử dụng PKCS # 11 để xác thực chứng chỉ ứng dụng khách như một phần của kết nối SSL/TLS (như một phần của HTTPS).

Giả sử bạn đã có một thư viện PKCS # 11 có sẵn (giả sử OpenSC trong /usr/lib/opensc.so), bạn có thể cấu hình Firefox để sử dụng nó:

  • Preferences -> Advanced -> Mã hóa, đi vào "Security Devices"
  • Nhấp vào 'Tải'
  • Chọn tên mô-đun (để tham chiếu riêng của bạn trong danh sách) và trỏ đến tệp /usr/lib/opensc.so (hoặc bất kỳ mô-đun PKCS # 11 thích hợp nào trong trường hợp của bạn).

Sau đó, khi bạn kết nối với trang web yêu cầu chứng chỉ ứng dụng khách, trình duyệt sẽ yêu cầu bạn chọn chứng chỉ từ thiết bị hỗ trợ PKCS # 11.

Cơ chế cấu hình PKCS # 11 sẽ thay đổi từ trình duyệt này sang trình duyệt khác, nhưng thường là vấn đề đặt đường dẫn của mô-đun PKCS # 11.

Theo như tôi biết, Internet Explorer không sử dụng PKCS # 11 (ít nhất là không hỗ trợ thêm), nhưng nên dựa vào MS CryptoAPI và InfoCards thay thế.

Ở phía máy chủ, bạn sẽ cần định cấu hình yêu cầu để xác thực chứng chỉ ứng dụng khách. Không có gì cụ thể cho PKCS # 11 ở đó.


Sau chỉnh sửa, bạn nên đọc về Cơ quan chứng nhận (CA) và Cơ sở hạ tầng khóa công khai (PKI). Bạn có thể triển khai PKI nội bộ của riêng mình, nhưng có vẻ như yêu cầu của bạn là tích hợp với PKI hiện có. Đây là một vấn đề hành chính chủ yếu, vì vậy hãy kiểm tra với những người đưa ra yêu cầu này để xem họ muốn dựa vào CA nào (có thể là họ).

Khi sử dụng xác thực chứng chỉ ứng dụng khách, khách hàng sẽ hiển thị chứng chỉ của nó (chứa khóa công cộng của người dùng và các thuộc tính khác, bao gồm số nhận dạng: Tên phân biệt chủ đề) và bắt tay SSL/TLS sẽ đảm bảo rằng khách hàng có khóa cá nhân cho chứng chỉ khóa công khai này. Sau đó, máy chủ xác minh chứng chỉ này với CA mà nó tin tưởng (đó cũng là cài đặt SSL ở phía máy chủ).

Khi bạn đã định cấu hình các CA bạn muốn tin cậy, ánh xạ thường được thực hiện bằng cách sử dụng tiêu đề DN của chứng chỉ cho tên người dùng nội bộ nếu cần. Không có quy tắc cứng cho điều này, vì nó phụ thuộc vào lược đồ đặt tên người dùng nội bộ của bạn. Điều này đang được nói, nó thường là hợp lý để sử dụng đầy đủ DN tiêu đề như tên người dùng.

+0

Cảm ơn. Điều này làm rõ một vài điều cho tôi và dựa trên điều này tôi đã có thể gửi thêm câu hỏi cho nhà cung cấp thẻ thông minh như thế nào giấy chứng nhận sẽ được xử lý. –

2

Bây giờ bạn có thể làm điều đó. Xác thực web bằng thẻ thông minh hoặc thẻ thông minh PKCS # 11 có thể được thực hiện bằng cách sử dụng phiên bản Silverlight của NCryptoki. Xem http://www.ncryptoki.com

Bạn có hai chanches:

1) sử dụng phiên bản Silverlight của NCryptoki và phát triển Silverlight riêng User Control của bạn mà thực hiện giao thức xác thực bằng cách sử dụng PKCS # 11 chức năng được cung cấp bởi các thẻ thông minh

2) bằng cách sử dụng plugin JQuery dựa trên phiên bản Silverlight ở trên và triển khai giao thức xác thực trong JavaScript bằng cách gọi hàm PKCS # 11 trong JavaScript

+0

Cảm ơn. Silverlight thực sự là một con ngựa chết và gắn liền với một nền tảng, vì vậy nó không phải là một lựa chọn ở đây. Tuy nhiên, tôi đã giải quyết vấn đề này với chứng chỉ phía máy khách Apache và SSL. Tôi sẽ đăng câu trả lời của tôi ở đây ngay sau khi nó kết thúc. –

+0

@MikkoOhtamaa bạn có thể vui lòng đăng giải pháp của bạn ở đây không. – guleryuz

3

Hiện tại, bạn không thể thực hiện PKCS # 11 trong quá trình trình duyệt. Tất cả các công nghệ bản địa phù hợp hoặc là chết (NPAPI) hoặc không được thực hiện thông qua tất cả các trình duyệt. Bạn cần phải làm điều đó bên ngoài trình duyệt và tạo ra một số thông tin liên lạc kết nối.

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