Как вы развертываете собственную службу Timestamping Authenticode?
Я хотел бы отметить мой DLL-файл с помощью моей собственной службы Authenticode Timestamping. Возможно ли это? Как я мог этого достичь?
4 ответов
вы можете разработать свой собственный сервис timestamping. Вы можете написать сервер TSP (RFC 3161), но Authenticode не использует форматы RFC 3161, но PKCS#7/PKCS#9, как описано в статья MSDN (которые можно реализовать). Наши!--3-->SecureBlackbox компоненты включают компонент сервера timestamping, который поддерживает оба формата. Обновление: последние обновления Authenticode используют стандартные метки времени RFC 3161.
но проблема в том, чтобы получить сертификат, который можно будет используйте для подписи меток времени. Этот сертификат должен быть выдан одним из ЦС, и, как я понимаю, существуют серьезные требования в отношении аспектов управления и инфраструктуры запуска сервера временных меток. В частности, вам нужно иметь безопасное оборудование timestamping. Я не углублялся в этот вопрос, но эти аспекты намного сложнее, чем написание фрагмента кода.
все еще, если вы запускаете свою собственную инфраструктуру PKI (имейте свои собственные Доверенные корневые сертификаты и CA сертификаты), то проблема наличия доверенного сертификата timestamping решается автоматически - вы можете создать свой собственный сертификат.
вам нужно написать пользовательский сервер http Timestamp. Он должен следовать RFC 3161 правила протокола отметки времени (TSP).
когда вы подписываете DLL для authenticode с помощью такого инструмента, как программы signtool.exe в Windows SDK можно указать url-адрес сервера меток времени (с помощью параметра / t swich. См. также /тр /тд). Затем вы указываете на свой сервер.
см. здесь на SO для связанного вопроса:надежные временные метки-понимание формат (rfc3161)
а также: альтернативные службы timestamping для Authenticode
вы можете настроить свой собственный орган штамповки времени (TSA), поддерживающий метки времени Authenticode (и/или RFC#3161) с помощью SignServer.
см.https://www.signserver.org для загрузки и инструкции по установке. Вкратце важными шагами являются:
-
убедитесь, что у вас пререквизиты:
- Java
- сервер приложений (т. е. WildFly)
- Apache Ant для развертывание
загрузите последнюю версию из https://signserver.org или https://sourceforge.net/projects/signserver/files/signserver/ .
-
настройка приложения-сервера
- для HTTPS (необязательно)
- чтобы веб-службы работали
- патч с последними исправлениями безопасности
-
Настройка SignServer развертывание
- установить базу данных.name=nodb и база данных.nodb.location=/an/empty/folder/as / db в conf / signserver_deploy.свойства
-
Развернуть SignServer
- экспорт APPSRV_HOME=/opt/wildfly-9/
- bin / ant deploy
- запустить сервер приложений /opt/wildfly-9/bin/standalone.sh
-
проверьте, что сервер запущен
- bin / signserver метод getstatus кратко все
-
настройка крипто маркера
- bin / signserver setproperties doc / sample-configs / keystore-крипто-конфигурация.свойства
- bin / signserver перезагрузить 1
- bin / signserver getstatus краткое все
-
настройка образца времени-штамп подписывающего
- bin / signserver setproperties doc / sample-configs / qs_timestamp_configuration.свойства
- bin / signserver перезагрузить 2
- bin / signserver getstatus краткое все
-
Проверьте отметку времени подписывающего
- bin / signclient timestamp http://localhost:8080/signserver/process?workerName=TimeStampSigner
предполагая, что вы хотите это для тестирования, если вы счастливы использовать signtool.exe с переключателем /tr вам не нужно смотреть на RFC, потому что openssl реализует достаточно этого для вас. Просто напишите обработчик HTTP POST на вашем любимом языке, передайте опубликованные данные в" openssl ts-reply " дословно, отправьте обратно данные ответа openssl TS. Это достаточно хорошо, чтобы обмануть " signtool.exe verify /pa", даже если он не строго следует RFC.
EDIT: кажется, проект Java Signserver с открытым исходным кодом дает вам сервер, обрабатывающий msauthenticode (/t) и rfc3161 (/tr) timestamping из коробки. Конфигурация Signserver включала слишком много зависимостей для меня, поэтому я вместо этого взломал его модульный тест для msauthenticode timestamping, прикрепленный на небольшом HTTP-сервере к тестовому набору и с небольшой работой - мои навыки Java в лучшем случае посредственны - имеют запущенный сервер метки времени authenticode для использования в разработке и проверили, что созданные таким образом метки времени не тема этот вопрос. Я не могу выпустить исходный код, однако, следуя этому совету, вы должны получить что-то работающее довольно быстро.