Как реализоватьт аутентификацию пользователя через сертификаты?
Доброго времени суток, вопрос в следующем. Хочу реализовать аутентификацию пользователя через сертификаты, но я заранее не знаю, кол-во пользователей которые будут пользоваться системой. Но пользователей будет вводить админимтратор пароль будет генерироваться автоматически
Варианты:
1. При создании пользователя генерируется сертификат, который отправляется пользователю, при первом вводе пароля.
2. Сертификат генерируется на стороне пользователя, после ввода пароля и отправяляется серверу.
Подскажите какой вариант лучше, или предложте свое решение.
А не проще генерировать сертификат и отправлять его пользователю на мыло? У меня где-то даже скрипт был которым я генерил сертификаты и сразу отправлял юзеру, думаю этот шелловый скрипт можно дергать из вашей системы регистрации при желании.
Ну фактически да. Просто у нас я сам всегда этот скрипт дергал, но у нас пользователей было раз-два и обчелся, мне было проще по каждому ручками скрипт запустить. А так чуть модифицировать, что бы переменные с именем-почтой брал с ввода, а не в нем перед запуском менять и вполне рабочий вариант. Если надо, то вычищу из скрипта какие-то упоминания типа CN при вызове openssl и поделюсь.
function em {
echo pass: "$NAME"
echo pass: "$NAME" > emailtext
mutt $EMAIL -c admin@email -a $NAME.p12 -s "New Certificate" -x < emailtext
}
NAME="USERNAME"
EMAIL="mail@to.user"
cert
em
sleep 1
Соответственно как можно видеть у меня в скрипте в качестве пароля к сертификату использовалось имя пользователя, можно заменить на вводимый пароль. Плюс у меня в строке с отсылкой сертификата есть -c для отсылки его еще админу, он еще дублем шел ко мне, что бы если что было удобно его юзеру еще разок выслать.
cat ca.config
[ ca ]
default_ca = CA_CLIENT # При подписи сертификатов
# использовать секцию CA_CLIENT
[ CA_CLIENT ]
dir = ./db # Каталог для служебных файлов
certs = $dir/certs # Каталог для сертификатов
new_certs_dir = $dir/newcerts # Каталог для новых сертификатов
database = $dir/index.txt # Файл с базой данных
# подписанных сертификатов
serial = $dir/serial # Файл содержащий серийный номер
# сертификата
# (в шестнадцатиричном формате)
certificate = ./ca.crt # Файл сертификата CA
private_key = ./ca.key # Файл закрытого ключа CA
default_days = 365 # Срок действия подписываемого
# сертификата
default_crl_days = 7 # Срок действия CRL (см. $4)
default_md = md5 # Алгоритм подписи
policy = policy_anything # Название секции с описанием
# политики в отношении данных
# сертификата
Алгоритм подписи стоит с md5 на что-нибудь сменить, у меня это конфиг очень древний.
Ну вот как-то так.
Если остались какие-то вопросы задавайте, помогу.