Запрещённые слова
06.02.2013 22:37:41Полтора года прошло с момента обнаружения утечки рутового сертификата компании DigiNotar. В своё время история наделала немало шума, все посуетились, повыпускали заплаток, попрыгали и успокоились. С того времени были ещё схожие случаи, ну да и ладно, тоже что-то патчилось, обновлялось, блокировалось, всё чудесно.
А тут мне понадобилось посмотреть на патчи Debian для openssl и, глядь, вот он, block_diginotar.patch. Заглянул, чисто из интереса, посмотреть и слегка прибалдел. Патч просто-напросто блокирует все сертификаты в поле CN которых содержится подстрока «DigiNotar». Там, конечно, написано, на всякий случай, что «This is not meant as final patch.», но тем не менее, именно оно в стабильном Debian. И даже более того, пользуясь таким отличным примером, аналогичным образом был заблокирован малазийский Digicert.
Технически можно было просто удалить сертификаты из хранилища рутовых сертификатов поддерживаемого дистрибутивом. Можно было, если уж хочется понадёжнее, опереться на отпечаток (хэш) сертификата. Ну уж в самом крайнем случае полный сабжект сертификата, хотя тоже нехорошо. Но вместо этого имеем даже не заблокированные CN, а просто запрещённые слова в CN. На которые, в принципе, можно и случайно наткнуться, а потом долго гадать, почему получается вот так:
rik@sencha:~/CA$ openssl verify -CAfile cacert.pem cacert.pem cacert.pem: /O=The Sample Company/L=Metropolis/ST=New York/C=US/CN=No, it's not a DigiNotar error 23 at 0 depth lookup:certificate revoked
А оно так и получается, если воспользоваться простейшим мануалом по развёртыванию УЦ и правильно угадать с CN.
Что характерно, в той же openSUSE таких костылей нет и аналогичный сертификат живёт без проблем. Интересно, как оно в других дистрибутивах. Может, это у Debian карма такая, с кривым openssl жить?