[devel] I: TLS/SSL policy - broken packages
Mikhail Yakshin
=?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Пт Фев 9 01:22:07 MSK 2007
Приветствую!
У нас формально введена в действие новая TLS/SSL policy. Ниже приведен
некий анализ пакетов, которые ей пока (возможно, я ошибаюсь) не следуют.
Текст получился довольно объемным, но я очень прошу всех мейнтейнров
перечисленных пакетов найти время и прочитать его внимательно.
==========================================================================
Клиентские пакеты
==========================================================================
curl - несет в себе ca-bundle.crt в формате PEM, вытащенный аж из
Netscape Communicator 4.72. Ввиду довольно нетривиальной обработки
местоположения этого файла, предлагается просто убрать из пакета файл
ca-bundle.crt и в вызове configure указать на наш файл.
kdelibs - несет в себе /usr/share/apps/kssl/ca-bundle.crt, не очень
понятно откуда. Либо патчить на OPENSSL_config, либо просто показать при
сборке на наш единый файл. Некие патчи есть, насколько я понял, в Fedora
и Debian, к сожалению, быстро разобраться не удалось.
libgwenhywfar - несет в себе /etc/gwen-public-ca.crt в формате PEM,
вытащенный из какой-то неопознанной версии Netscape. Есть функция
GWEN_NetLayerSsl_new, которую теоретически несложно пропатчить на
предмет использования OPENSSL_config(3).
libqca2 - моя библиотека, все в курсе, все знаю, буду делать.
mutt1.5 - несет в себе древний
/usr/share/doc/mutt1.5-1.5.13/samples/ca-bundle.crt из Netscape 4.72,
который рекомендуется копировать в ~/.smime/ca-bundle.crt, чтобы mutt
его нашел и использовал. Прошу пояснений мейнтейнера, можно ли заставить
mutt использовать стандартные механзимы поиска списка CA через openssl?
firefox, thunderbird, xulrunner, seamonkey, libnspr - общая замечание ко
всем, использующим NSS - имеет смысл, видимо, при сборке добавлять новый
ALT CA таким builtin token, как сейчас добавляется старый (в файле типа
firefox-0.9-alt-ssl-addon-certs.txt). В идеале - не просто добавлять
один CA, а устроить обратное преобразование из PEM в формат файла
сертификатов Gecko-образных.
==========================================================================
Особые случаи:
==========================================================================
unreal - несет в себе некий серверный самоподписанный сертификат с
такими параметрами:
Issuer: C=RU, ST=Moskovskaya Oblast, L=Korolev, O=Fly Net, OU=Server
development team, CN=irc.fly
Subject: C=RU, ST=Moskovskaya Oblast, L=Korolev, O=Fly Net, OU=Server
development team, CN=irc.fly
Validity
Not Before: Apr 19 17:46:40 2005 GMT
Not After : Apr 19 17:46:40 2006 GMT
Самое главное - он уже давно просрочен. Прошу комментариев у
мейнтейнера, что это за сертификат и не имеет ли смысл заменить его либо
на автоматически генерящийся, либо на подписанный нашим CA, например?
ntop - несет в себе самоподписанный /etc/ntop-cert.pem, который точно
так же выдан на некоего не очень понятного субъекта и очень давно просрочен:
Issuer: C=IT, ST=Pisa, O=ntop.org, CN=Luca Subject: C=IT, ST=Pisa,
O=ntop.org, CN=Luca Deri/emailAddress=deri на ntop.org
Deri/emailAddress=deri на ntop.org
Validity
Not Before: Dec 23 16:58:34 2001 GMT
Not After : Dec 23 16:58:34 2002 GMT
Прошу комментариев мейнтейнера - зачем такой сертификат лежит в пакете?
MySQL-server - несет в себе в документации пример сертификата CA,
который используется как сервером, так и клиентом. Несмотря на то, что
сертификат в документации и отключен по умолчанию, при реальном
использовании его или аналогов требуется указание положения некоего CA
bundle через ключ типа "ssl-ca=SSL/cacert.pem". Вопрос к мейнтейнеру -
нет ли возможности / стоит ли патчить или что-то менять в MySQL, чтобы
по умолчанию он имел в виду наш общий CA bundle?
freeradius - практически тот же вопрос, что и про MySQL. Пакет несет у
себя внутри примеры сертификатов и CA, но после прочтения
/etc/raddb/certs/README возникает вопрос - что будет, если положить ему
просто один сертификат, подписанный тем CA, что указан у нас в bundle?
Подхватится ли?
nut-server - несет в себе файл /etc/nut/upsd.pem, который пуст. Хотелось
бы услышать комментарии мейнтейнера, зачем он такой?
==========================================================================
Языки программирования
==========================================================================
erlang, plt2, php5-devel, perl-Net-SSLeay, python-module-m2crypto,
python-module-twisted
- это все языки программирования, имеющие биндинги на OpenSSL внутри
самого пакета с языком или в отдельном пакете.
Здесь сложная ситуация: по логике вещей во всех приведенных пакетах тоже
просто примеры (правда, лежащих в довольно нетрадиционных местах вроде
/usr/lib/erlang/lib/ssl-3.0.11/examples/certs/etc/erlangCA), но
возникает резонный вопрос: если в этих языках программирования
использовать их встроенные биндинги на OpenSSL - будет ли автоматически
подхватываться наш CA bundle?
Это вопрос к мейнтейнерам или лучше даже просто тем, кто знает эти
языки. К сожалению, я erlang и scheme не знаю в той степени, чтобы
ответить на такой вопрос. Про php, perl и, возможно, python, посмотрю
либо позже сам, либо ответят мейнтейнеры.
==========================================================================
Нет major претензий к серверным пакетам:
==========================================================================
apache2-mod_ssl, mod_ssl, sendmail - просто несут в себе примеры
сертификатов
openvpn-docs - примеры сертификатов в документации
courier-imap, dovecot, exim, monit, uw-imap, stunnel - генерят простые
самоподписанные сертификаты автоматически в пост-инсталл скрипте.
Единственное - есть предложение - не плодить столько много разных хитрых
скриптов - может быть сделать один макрос на всех?
Ко всем этим пакетам есть minor замечания по поводу п.5 полиси.
==========================================================================
Финальное замечание: рассмотрены были пока только пакеты, которые явно
несли в себе некие признаки использования openssl, не соответствующего
policy. Кроме того, нужно просто вручную рассмотреть все пакеты, которые
зависят от libssl с куда более пристрастной проверкой: внутри каждого из
них может быть инициализация openssl с использованием наших общих CA или
без. Во втором случае это предполагается исправлять.
Дополнительный список:
appliance-fake-utm
aria2
asterisk1.4
asterisk1.4-res_crypto
astmanproxy
AutoScan
balsa
bloom
captive
centericq
claws-mail
claws-mail-plugin-spamassassin
cups
cyrus-imapd
cyrus-imapd-murder
cyrus-imapd-utils
cyrus-sasl2
dillo
dsniff
elinks
fetchmail
fuse-encfs
gftp-gtk
gftp-text
git-core
gkrellm
gnubiff
gnubiff-gnome
gnugk
gq
gtkjournal
hostapd
httperf
httping
hydra-common
imapfilter
inn
ipsec-tools
ipv6calc
irssi
iscsitarget-utils
jabber
jabberd2-c2s
jabberd2-resolver
jabberd2-router
jabberd2-s2s
jabberd2-sm
jpilot
kasablanca
kdebase-kcontrol
kdebase-konqueror
kdenetwork-kopete
keyring-link
kftpgrabber
kvirc
lftp
libbind
libchipcard
libchipcard-tools
libclip-common
libcups
libdar
libecore
libesmtp
libesmtp-devel
libfwbuilder
libgnomedb
libldap2.3
libmnetutil
libmutil
libMySQL41
libMySQL
libneon
libneon0.25
libneon0.26
libnet-snmp
libomniORB
libopal
libopenh323_1.19
libopensc
libopenslp
libpq4.0
libpq4.1
libpw
librtorrent
libsasl2
libsmbclient-devel
libssl-devel
libucd-snmp
libxmlsec1-openssl
libyaz
licq-common
licq-msn
lighttpd
links1
links2
lynx
mailfilter
mail-notification
mcabber
micq
msmtp
msmtp-ssl
mtree
mutt
MySQL41-client
MySQL41-server
nagios-nrpe
nagios-plugins-network
nagios-plugins-nrpe
netams
net-snmp
nginx
nmap
nut
nut-cgi
openldap-servers
openntpd
opensc
openslp-daemon
openssh
openssh-clients
openssh-keysign
openssh-server
openssl-engines
osec
pam_mount
pam_usb
parsecvs
pavuk
perl-Crypt-OpenSSL-Bignum
perl-Crypt-OpenSSL-Random
perl-Crypt-OpenSSL-RSA
perl-Crypt-SSLeay
perl-Cyrus
php5-imap
php5-openssl
php-imap
php-openssl
pine
postal
postfix-tls
postgresql8.0
postgresql8.0-server
postgresql8.1
postgresql8.1-contrib
postgresql8.1-server
proftpd-mod_tls
python-module-OpenSSL
python-module-pycurl
python-modules
qca-tls
qpamat
rdesktop
ruby-module-digest
ruby-module-openssl
seirospbx1.4
seirospbx1.4-res_crypto
sendmail-submit
siege
sim
sim-qt
sipp
snort-snmp
snort-snmp+flexresp
socat
spamassassin-spamc
squid-helpers
squid-server
ssmtp-ssl
sylpheed
tcl-tls
tcpdump
tinc
tor
vtund
w3c-libwww
w3m
wget
wine
wpa_supplicant
x11vnc
xchat
X-Downloader
xen
xrdp
yaz
--
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]
Подробная информация о списке рассылки Devel