SSL сертификаты в качестве механизма лицензирования программы
Приветствую.
Есть задача разработки механизма лицензирования прикладной утилиты. Утилита работает с удаленной базой по SSL соединению.
Вот и встал вопрос, можно ли на SSL подкрутить и функционал лицензирования? Интересует мнение сообщества — опыт, подводные камни, etc. Кроме SSL, какие наиболее адекватные механизмы организации такого вот лицензирования?
Двухсторонняя авторизация по сертификатам, доступ клиента регулировать отзывом клиентского сертификата со статусом 6 (On hold). Надо развертывать центр сертификации и интерфейс к нему. В умелых руках задача решается за пару дней, включая разработку архитектуры.
Сертификаты серверу и клиентам можно выпускать с помощью openssl, а можно поставить полноценный ЦС, рекомендую EJBCA. Я не знаю, как у вас организовано соединение по SSL, это может быть и HTTPS, а может и SSH, а может еще что. Принцип такой: на серверной части ставьте проверку клиентских сертификатов, желательно по OCSP.
Позволю себе задать еще один вопрос. Используя то, что вы озвучили, можно ведь грамотно разрулить — сертификаты на базу (репликация между серверами + доступ клиентов) + сертификаты на лицензирование клиентов?
Я имел в виду, что у меня есть сертификаты генерируемые для серверов mysql. Так вот при грамотной настройки сервера лицензирования, смогу ли я отдельно генерить и для баз данных (для их работы по SSL) и для программ (общее лицензирование).
Касаемо вопроса по тому, как реализовано SSL соединение — не через SSH туннель (не смог запустить репликацию через него — коннект только напрямую работал), а простой настройкой mySQL для работы через SSL (самосгенерированные сертификаты openssl).
А чем вы сейчас генерируете сертификаты? Сервер mysql сам по себе сертификаты генерировать не может.
Я поэтому и просил уточнить вопрос, потому что пока однозначного ответа нет, так как неясна структура вашей системы лицензирования.
Я вижу два варианта:
1) Написать модуль для сервера лицензирования, который дергает openssl с параметрами и полностью обслуживает генерацию/отзыв клиентских сертификатов. Серверные сертификаты генерятся редко и автоматизация тут не обязательна.
2) Поднять центр сертификации, для сервера лицензирования написать модуль взаимодействия с ЦС через API.
Второй метод предподчтительнее. Клиенские сертификаты (на самом деле это пара закрытый ключ и сертификат) должны поставляться в составе лиценизионного файла. При установке SSL соединения с использованием клиентского сертификата сервер проверяет его валидность и дальше принимает решение о допуске. Все это использует стандарные решения в PKI и поэтому достаточно просто в настройке и сопровождении.
Сертификаты не генерирую. Как процесс, генерация не налажена (собственно и вопрос отсюда возник). А тестовые сертификаты сгенерировал через openssl. Варианты я ваши понял. Пока не решил, какой выбрать. Сомнения, что для вроде бы не очень большой задачи настраивать целый центр сертификации следует… Хочется до жути конечно :) Но насколько целесообразно…
Во-первых, я не знаком пока еще с этими понятиями. Во-вторых, возьмем к примеру EJBCA. Тянет он кучу всего в плане зависимостей и пакетов + его настройка. По сравнению, к примеру, с уже установленным openssl, центр сертификации потребует определенных временных затрат. Отсюда и «целый» :)
Все верно. Установка центра сертификации включает планирование, разработку профилей сертификатов, установку и настройку ПО, церемонию генерации ключей, настройка публикации листов отзыва, подключение модулей (OCSP, RA), тестирование. Без понимания PKI и опыта развертывания ЦС подобная задача может занять несколько недель. Специально обученные люди могут выполнить подобное за пару дней, как я и писал в самом начале. :-)
Так что решайте, что в приорите у вас: быстрое, но «костыльное» решение на базе openssl и скриптов, или «православное» решение с собственным ЦС, на которое уйдет куча времени, но зато и понимание в области PKI появится :-)
Я уже выбрал что буду реализовывать. Спасибо вам огромное за выдачу ЦУ :) Только вопросик про то, что могу ли я использовать ЦС для генерации сертификатов по двум направлениям (БД + лицензирование) так и остался открыт :)
Поясните пожалуйста, на чем собственно будет основан весь механизм лицензирования. Никак не возьму в толк, чем клиентский сертификат в данном случаем отличается от рандомной цепочки байт регистрируемой на сайте?
Сервер сам подпишет и вышлет файлом сертификат (с публичным и приватным ключами) клиенту. Тот его поставит руками, и будет использовать при каждом новом установлении соединения.