Я шукав надійний і портативний спосіб перевірити версію OpenSSL на GNU / Linux та інших системах, тому користувачі можуть легко виявити, чи варто їм оновити SSL через помилку Heartbleed.
Я думав, що це буде легко, але я швидко натрапив на проблему Ubuntu 12.04 LTS з останнім OpenSSL 1.0.1g:
Версія openssl -a
Я очікував побачити повну версію, але замість цього я отримав таку:
OpenSSL 1.0.1 14 березня 2012 року побудовано: Четвер, 4 червня 07:26:06 UTC 2013 платформа: [...]
На мій неприємний сюрприз, лист з версією не відображається. Ні f, ні g там, просто "1.0.1", і все. Перелічені дати також не допомагають виявити (не) вразливу версію.
Різниця між 1,0,1 (af) та 1,0,1 g є вирішальною.
Запитання:
- Який надійний спосіб перевірити версію, бажано перехресного дистрибутива?
- Чому в першу чергу не відображається лист версії? Я не зміг перевірити це на чому-небудь іншому, крім Ubuntu 12.04 LTS.
Інші також повідомляють про таку поведінку. Кілька прикладів:
- https://twitter.com/orblivion/status/453323034955223040
- https://twitter.com/axiomsofchoice/status/453309436816535554
Деякі пропозиції (специфічні для дистрибутиву), що з'являються:
- Ubuntu та Debian:
apt-cache policy openssl
іapt-cache policy libssl1.0.0
. Порівняйте номери версій з пакетами тут: http://www.ubuntu.com/usn/usn-2165-1/ - Fedora 20:
yum info openssl
(дякую @znmeb на Twitter) таyum info openssl-libs
Перевірка, чи зберігається старіша версія OpenSSL:
- Це не зовсім надійно, але ви можете спробувати
lsof -n | grep ssl | grep DEL
. Див. Heartbleed: як надійно і портативно перевірити версію OpenSSL? про те, чому це може не працювати для вас.
Виявляється, оновлення пакету OpenSSL на Ubuntu та Debian не завжди достатньо. Ви також повинні оновити пакет libssl1.0.0 і перевірити, чи openssl version -a
вказується , -then- built on: Mon Apr 7 20:33:29 UTC 2014
.
[root@null~]# openssl version -a OpenSSL 1.0.1e-fips 11 Feb 2013
apt-cache policy openssl
і він відповів: Installed: 1.0.1-4ubuntu5.12
що це 1.0.1g щойно випущений Ubuntu за 12.04 LTS. Я вийшов із системи та знову ввійшов. Чи можна ще щось зробити, щоб перевірити?