Я тестирую функциональность отзыва сертификатов устройства CMTS. Это требует от меня настроить ответчик OCSP. Поскольку он будет использоваться только для тестирования, я предполагаю, что минимальной реализации, предоставляемой OpenSSL, должно быть достаточно.
Я извлек сертификат из кабельного модема, скопировал его на мой компьютер и преобразовал в формат PEM. Теперь я хочу зарегистрировать его в базе данных OpenSSL OCSP и запустить сервер.
Я выполнил все эти шаги, но когда я делаю запрос клиента, мой сервер неизменно отвечает «неизвестно». Кажется, он совершенно не знает о существовании моего сертификата.
Я был бы очень признателен, если бы кто-нибудь захотел взглянуть на мой код. Для вашего удобства я создал один сценарий, состоящий из последовательного списка всех используемых команд, от настройки ЦС до запуска сервера: http://code.google.com/p/stacked-crooked/source/browse/ ствол / Разное / OpenSSL / AllCommands.sh
Вы также можете найти пользовательский файл конфигурации и сертификат, с которым я тестирую: http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Любая помощь будет принята с благодарностью.
Ответы:
В случае, если вы заинтересованы: вот мое решение.
Сначала я отказался от OSSSP-респондента OpenSSL. Его нельзя использовать для сертификатов, которые не были созданы с помощью вашего самозаверяющего CA.
Затем я использовал библиотеки OpenCA для создания утилиты командной строки, способной создавать ответ OCSP на запрос OSCP. Он работает полностью на основе файлов: вы запускаете его с запросом OSCP в формате DER в качестве входного файла и выводит файл ответов OCSP в формате DER.
Второй аргумент утилиты командной строки - это статус отзыва: хороший, отозван или неизвестен. Состояние сертификата в файле ответов будет таким же, как и у переданного аргумента. Код основан на этом примере , указанном мной The Rook в этом посте .
Последним шагом было создание HTTP-сервера, основанного на утилите командной строки. Я использовал Ruby's Merb Framework для этого. Отличная особенность заключается в том, что статус отзыва может быть запрошен в виде URL-адреса HTTP, например: http://127.0.0.1:5000/good .
Обновить
Поскольку вышеуказанные ссылки не работают, я опубликую содержание скрипта здесь:
AllCommands.sh:
openssl.cnf:
thirdparty.pem:
Утилита командной строки с использованием библиотек OpenCA написана на C:
источник