ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Victor B. Wagner" <vitus@altlinux.org>
To: devel@lists.altlinux.org
Subject: Re: [devel] Вопросы новичка
Date: Thu, 7 May 2009 12:38:36 +0400
Message-ID: <20090507083836.GB7433@cryptocom.ru> (raw)

On 2009.05.07 at 10:13:51 +0400, Afanasov Dmitry wrote:

> On Tue, May 05, 2009 at 06:11:13PM +0400, Victor B. Wagner wrote:
> > On 2009.05.05 at 16:26:09 +0300, Alexander Bokovoy wrote:
> > > "Список, сестра!". 
> > Лично у меня план действий такой:
> > 
> > 1. Запакетировать openssl-1.0. С тем чтобы она максимально
> > соответстовала текущей полиси дистрибутива и перевод приложений на неё
> > был возможно более безболезненным. 
> мне как админу от сертификатов хотелось бы:
> 1. иметь "машинный" сертификат, которым автоматом бы подписывались все
> остальные сервисные. подписать этот сертификат чем-нибудь другим, как я
> помнимаю, можно и позже.

Насчет подписать можно и позже - будут проблемы.
Если вы отправите заявку на получение сертификата intermediate CA на 
свой ключ, которым вы уже подписали несколько сертификатов,
то вам будет выдан сертификат с определенным сроком действия. 

Честно сказать, никогда не проверял, как различный софт относится к
тому, что сертификат сервера имеет срок действия, начавшийся раньше, чем
срок действия сертификата CA, на котором он выдан. 

Но в принципе "подписать на чем-нибудь" сертификат своего CA - не
обязательно. Можно распространить самоподписанный сертификат вашего CA
по всем клиентским машинам и установить его там в Trusted CA store. 
После этого он будет ничем не хуже Verisign-а.

В принципе, и перевыпустить сертификаты серверов после получения
сертификата CA недолго.



> 2. иметь возможность подставлять свои параметры в автогенерируемые
> сертификаты: organization там, organizationUnit, ссылку на crl.

Угу. Причем по-русски. Сделать это можно достаточно просто. Для этого
необходимо, чтобы

1. При установке сервисов сертификаты генерировались с использованием
системного openssl.cnf.

2. Иметь какой-то достаточно удобный инструмент, чтобы в этот самый
openssl.cnf прописывать параметры вашей организации.

3. Не забыть прописать в openssl.cnf прямо при создании пакета
необходимые параметры, которые обеспечат корректную обработку кириллицы.

Тогда все, что будет создавать сертификаты, после того как посредством п
2. вы сконфигурировали параметры будет писать правильный DN.

1-е и 3-е я уже делал в CryptoPack 1.0. К сожалению, до второго - руки
не дошли.


> все пакеты, что используют ssl, при установке генерируют сертификаты.

Что вообще говоря, не обязательно. В Debian, например, есть отдельный
пакет ssl-cert, который генерирует один-единственный сертификат на
hostname данной машины, которым потом польузются все установленные
сервисы.

> как сделать эту генерацию интерактивной при установке пакета я не
> представляю - rpm и все такое. но пусть хотя бы берут мои данные, а не
> какой-нибудь cat << EOF | openssl req. и ещё и подпишутся напоследок
> "машинным CA" :)
> 
> subject'ом таким сертификатам можно проставлять имя сервиса. ftp - для
> ftp, mail - для MTA, etс. мыло - одно на всех мыло админа. suport@, или
> личное.

subject сертификата - это набор полей. Куда входят как раз
organization, unit etc. Вы, наверное, имеете в виду поле CN (Common
Name). Так оно ОБЯЗАНО в случае серверного сертификата TLS совпадать
с именем хоста. Причем именно того, к которому идет обращение со стороны
клиента. До OpenSSL 0.9.8f не было никакой возможности иметь разные 
сертификаты на разные виртуальные хосты на одном IP, что создавало
определенные проблемы с виртуальными хостами в apache.

Начиная с 0.9.8f поддерживается TLS extension SNI (Server Name
Indication), так что теперь в принципе можно делать виртуальные хосты с
разными сертификатами. При условии что SNI поддерживается и клиентским
приложением (Firefox >= 2, MSIE >= 7 его поддерживают), и сервером (не
только на уровне библиотеки, но и на уровне приложения, так как именно
приложение решает какой именно сертификат отдать)

Что сейчас с поддержкой SNI у Apache - давно не смотрел.
Feature Request с соответствующим патчем был в апачевском SVN еще год
назад, но попал он в релиз или нет - не в курсе.

Для других сервисов, как правило, задача виртуальных хостов менее
актуальна.

Но общий принцип такой - иметь имя сервиса в CN можно только если 
имеется алиас в DNS (CNAME или A), содержащий это имя в DNS-имени
машины.



> > 2. Взаимодействие с мейнтейнерами
> если что нужно сделать в gnutls - предлагайте. к сожалению, "как это
> тикает" я не разобрался, но будет задача - будем думать :)

В данном случае, я имел в виду скорее мейнтейнеров приложений.
Apache, openvpn, postfix, dovecot, postgresql, mysql etc - неполный список тех
приложений которые я уже тестировал на работу с российской криптографией
и точно знаю что нужно, чтобы оно работало.

(например, в случае с postgresql нужно только его пересобрать с OpenSSL 
поддерживающей российскую криптографию и прописать в openssl.cnf
соответствующий модуль)

В gnutls - нужно начать и кончить. Написать поддержку российских
алгоритмов, поддержку российских шифрсьютов etc. Если алгоритмы
шифрования и хэширования можно тупо содрать из моей реализации для
OpenSSL (они там ни от чего не зависят), то алгоритмы подписи и
распределения ключей там сильно завязаны на библиотеку длинной
арифметики и эллиптических кривых OpenSSL, так что придется переписывать 
с нуля.

И, насколько я понимаю, нет никаких шансов сделать на базе gnutls
сертифицированное решение. В результате чего оно абсолютно неинтересно
моему руководству.


----- End forwarded message -----


             reply	other threads:[~2009-05-07  8:38 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-07  8:38 Victor B. Wagner [this message]
2009-05-07  8:41 ` Anton Farygin
2009-05-07  9:00   ` Victor B. Wagner
2009-05-07  9:14     ` Max Ivanov
2009-05-07  9:45     ` Alexander Bokovoy
2009-05-07 10:16     ` Anton Farygin
2009-05-07 10:55       ` Mykola S. Grechukh
2009-05-07 11:10         ` Victor B. Wagner
2009-05-07 11:13           ` Mikhail Gusarov
2009-05-07  8:45 ` Aleksey Avdeev
2009-05-07  9:12   ` Victor B. Wagner
2009-05-07  9:26     ` Aleksey Avdeev
2009-05-07  9:53       ` Victor B. Wagner
2009-05-07 11:08         ` Aleksey Avdeev
2009-05-07  9:20 ` Afanasov Dmitry
2009-05-07  9:24 ` Afanasov Dmitry
2009-05-07  9:24 ` Afanasov Dmitry
2009-05-07 10:01   ` Victor B. Wagner
2009-05-07 10:12     ` Ivan Fedorov
2009-05-07 11:21     ` Ivan Fedorov
2009-05-07 13:43       ` Victor B. Wagner
2009-05-07 13:49         ` Ivan Fedorov
2009-05-07 14:08           ` Victor B. Wagner
2009-05-07 15:51             ` Ivan Fedorov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090507083836.GB7433@cryptocom.ru \
    --to=vitus@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git