Tôi muốn đánh dấu thời gian tệp DLL của mình bằng Dịch vụ Timestamping Authenticode của riêng tôi. Điều này có thể không? Làm thế nào tôi có thể đạt được điều này?Làm thế nào để bạn triển khai Dịch vụ Timestamping Authenticode của riêng bạn?
Trả lời
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.
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)
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.
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à:
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
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/ .
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
Configure SignServer
- Set database.name = nodb và database.nodb.location =/một/trống/thư mục/như/db trong conf/signserver_deploy.properties
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
Kiểm tra máy chủ bắt đầu
- bin/signserver getStatus ngắn gọn tất cả
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ả
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ả
Kiểm tra các dấu thời gian người ký
- bin/signclient timestamp http://localhost:8080/signserver/process?workerName=TimeStampSigner
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
- 1. Làm thế nào để bạn triển khai một trang web cho máy chủ web của bạn?
- 2. Cách triển khai máy chủ WHOIS của riêng bạn?
- 3. Làm cách nào để bạn triển khai FileObserver từ Dịch vụ Android
- 4. Làm thế nào để đảm bảo triển khai TeamCity thông qua dịch vụ Triển khai Web?
- 5. Triển khai Django: Bạn làm như thế nào?
- 6. Làm thế nào để viết riêng của bạn obfuscator net
- 7. Làm cách nào để bạn triển khai "Ý của bạn là"?
- 8. Làm thế nào để bạn lưu trữ kho trứng của riêng bạn?
- 9. Làm thế nào để bạn tìm kiếm thông qua thư viện mã nguồn của riêng bạn?
- 10. Làm thế nào để bạn triển khai giao diện IDynamicObject của C# 4?
- 11. Làm thế nào để triển khai các ứng dụng PHP của bạn một cách chính xác?
- 12. Làm thế nào để triển khai dịch vụ WCF của tôi trên IIS 6.0?
- 13. Làm thế nào để bạn giám sát các dịch vụ web của mình?
- 14. Bạn sẽ triển khai đuôi hiệu quả như thế nào?
- 15. ClickOnce triển khai Dịch vụ Windows?
- 16. Triển khai Dịch vụ WCF
- 17. Trạng thái của Dịch vụ quản trị triển khai OSGi
- 18. Làm thế nào để bạn thực hiện triển khai cán với capistrano?
- 19. Làm thế nào để khai báo một hội bạn bè?
- 20. Làm thế nào để bạn triển khai một ứng dụng Happstack để sản xuất?
- 21. Triển khai dịch vụ dữ liệu ADO.NET
- 22. Làm cách nào để lập hóa đơn cho các dịch vụ web của bạn?
- 23. Công ty của bạn triển khai phần mềm của công ty như thế nào?
- 24. Làm thế nào để triển khai Scrum?
- 25. Bạn sẽ triển khai một hệ thống điều khiển sửa đổi cho các mô hình của bạn trong mô hình db ưa thích của bạn như thế nào?
- 26. Làm thế nào để bạn đọc các khai báo C?
- 27. Làm thế nào để bạn triển khai các ứng dụng django cho các cửa sổ?
- 28. Làm thế nào để bạn triển khai các công việc cron vào sản xuất?
- 29. Làm cách nào để thêm các thẻ vùng chứa dịch vụ tùy chỉnh của riêng bạn và cách nhận các dịch vụ được gắn thẻ trong symfony2?
- 30. Làm thế nào để bạn chạy các dịch vụ tiện ích trên Heroku?
Nguồn tuyệt vời. – Alexandru
Authenticode không sử dụng RFC 3161. Nó sử dụng định dạng PKCS # 7/PKCS # 9. –