2012-06-27 30 views

Trả lời

5

Bạn có thể phát triển dịch vụ timestamping của riêng bạn. Bạn có thể viết máy chủ TSP (RFC 3161) nhưng Authenticode không sử dụng định dạng RFC 3161 nhưng PKCS # 7/PKCS # 9 như được mô tả trong MSDN article (mà bạn cũng có thể triển khai). Các thành phần SecureBlackbox của chúng tôi bao gồm thành phần máy chủ timestamping hỗ trợ cả hai định dạng. Cập nhật: các cập nhật gần đây cho Authenticode sử dụng dấu thời gian chuẩn RFC 3161.

Nhưng vấn đề là nhận chứng chỉ mà bạn sẽ sử dụng để ký dấu thời gian. Chứng chỉ này phải được cấp bởi một trong các CA và như tôi hiểu, có tồn tại các yêu cầu nghiêm trọng về các khía cạnh quản lý và cơ sở hạ tầng của việc chạy một máy chủ dấu thời gian. Đặc biệt, bạn cần phải có một phần cứng timestamping an toàn. Tôi không đào sâu vào câu hỏi này, nhưng những khía cạnh này phức tạp hơn nhiều sau đó viết một đoạn mã.

Vẫn còn nếu bạn chạy cơ sở hạ tầng PKI của riêng bạn (có chứng chỉ gốc đáng tin cậy của riêng bạn và chứng chỉ CA), thì vấn đề có chứng chỉ thời gian tin cậy được giải quyết tự động - bạn có thể tạo chứng chỉ của riêng mình.

5

Bạn cần phải viết máy chủ Dấu thời gian HTTP tùy chỉnh. Cần tuân theo các quy tắc RFC 3161 Giao thức đóng dấu thời gian (TSP).

Khi bạn ký DLL của mình để xác thực bằng công cụ như Signtool.exe từ Windows SDK, bạn có thể chỉ định url của máy chủ dấu thời gian (với/t swich. Xem thêm/tr và/td). Sau đó, bạn sẽ trỏ đến máy chủ của mình.

Xem ở đây trên SO cho một câu hỏi liên quan: Trusted Timestamps - understanding the format (rfc3161)

và cũng: Alternative timestamping services for Authenticode

+0

Nguồn tuyệt vời. – Alexandru

+2

Authenticode không sử dụng RFC 3161. Nó sử dụng định dạng PKCS # 7/PKCS # 9. –

1

Giả sử bạn muốn điều này để thử nghiệm, nếu bạn vui khi sử dụng signtool.exe với công cụ chuyển đổi/tr, bạn không phải xem RFC, vì openssl thực hiện đủ điều này cho bạn. Chỉ cần viết trình xử lý HTTP POST bằng ngôn ngữ yêu thích của bạn, chuyển dữ liệu đã đăng vào nguyên văn "openssl ts -reply", gửi lại dữ liệu trả lời TS mở. Điều này là đủ tốt để đánh lừa "signtool.exe verify/pa", ngay cả khi nó không đúng theo RFC.

EDIT: Có vẻ như dự án Java Signserver nguồn mở cung cấp cho bạn một máy chủ xử lý dấu thời gian MSauthenticode (/ t) và rfc3161 (/ tr) ra khỏi hộp. Cấu hình của Signserver liên quan đến quá nhiều phụ thuộc đối với tôi, vì vậy tôi đã hack thử nghiệm đơn vị của nó cho MSAuthenticode timestamping, được khởi động trên một máy chủ HTTP nhỏ đến trường hợp thử nghiệm. máy chủ để sử dụng phát triển và đã xác minh rằng các dấu thời gian do đó được tạo không phải là chủ đề this issue. Tôi không thể phát hành mã nguồn, tuy nhiên theo mẹo này sẽ giúp bạn làm việc khá nhanh chóng.

1

Bạn có thể thiết lập Tổ chức dán tem thời gian của riêng mình (TSA) hỗ trợ tem thời gian Authenticode (và/hoặc RFC# 3161) bằng cách sử dụng Trình đăng nhập.

Xem https://www.signserver.org để tải xuống và hướng dẫn cài đặt.Nói tóm lại những bước quan trọng là:

  1. Hãy chắc chắn rằng bạn có điều kiện tiên quyết:

    • Java
    • Một máy chủ ứng dụng (ví dụ WildFly)
    • Apache Ant cho việc triển khai
  2. Tải xuống bản phát hành mới nhất từ ​​https://signserver.org hoặc https://sourceforge.net/projects/signserver/files/signserver/ .

  3. máy chủ ứng dụng Configure

    • Đối với HTTPS (không bắt buộc)
    • Để thực hiện các dịch vụ web làm việc
    • patch với các bản sửa lỗi bảo mật mới nhất triển khai
  4. Configure SignServer

    • Set database.name = nodb và database.nodb.location =/một/trống/thư mục/như/db trong conf/signserver_deploy.properties
  5. Triển khai SignServer

    • xuất khẩu APPSRV_HOME =/opt/wildfly-9/
    • bin/ant triển khai
    • Bắt đầu máy chủ ứng dụng /opt/wildfly-9/bin/standalone.sh
  6. Kiểm tra máy chủ bắt đầu

    • bin/signserver getStatus ngắn gọn tất cả
  7. Thiết lập một mật mã thẻ

    • bin/signserver setproperties doc/mẫu-configs/keystore-crypto-cấu hình. tài sản
    • bin/signserver tải lại 1
    • bin/signserver getstatus tóm tắt tất cả
  8. Thiết lập một người ký mẫu thời gian tem

    • bin/signserver setproperties doc/mẫu-configs/qs_timestamp_configuration.tính
    • bin/signserver reload 2
    • bin/signserver getStatus ngắn gọn tất cả
  9. Kiểm tra các dấu thời gian người ký

+0

Phần 'tải xuống bản phát hành mới nhất' có thể làm mất hiệu lực nhiều hướng dẫn khác ở đây nhanh hơn nhiều so với liên kết đơn giản. Đó là một chút ngây thơ để mong đợi các poster để trở lại đây và cập nhật các hướng dẫn cho bất kỳ phiên bản mới, vì vậy tôi cảm thấy một liên kết đơn giản sẽ có được thích hợp hơn. – Keeely

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