Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
tech:kb0002 [2012/04/08 17:21] Євген Слюсар |
tech:kb0002 [2012/04/08 21:39] (поточний) |
||
---|---|---|---|
Рядок 12: | Рядок 12: | ||
), exiting. | ), exiting. | ||
</code> | </code> | ||
+ | |||
+ | ===== Застосовність ===== | ||
+ | Проблема проявляється як у Java-сервісах, так і у C-сервісах. | ||
+ | |||
+ | Підтверджено її наявність у релізах EMI-1: WMS, LB, CREAM, dCache. | ||
+ | |||
+ | У dCache її нещодавно виправили: [[http://scm.dcache.org/WebSVN/comp.php?repname=dCache&compare[]=%2F@16697&compare[]=%2F@16698|SVN-diff]] | ||
===== Причина ===== | ===== Причина ===== | ||
- | Версія бібліотеки OpenSSL, що використовується в системі, | + | Закритий ключ сертифіката вузла (''hostkey.pem'') записаний у непідтримуваному форматі PKCS#8. |
+ | На це вказуватиме перший рядок файла: | ||
+ | ^ Заголовок блоку PEM-файла ^ Формат ^ Рішення ^ | ||
+ | | ''%%-----BEGIN PRIVATE KEY-----%%'' | PKCS#8 | наш випадок :-) | | ||
+ | | ''%%-----BEGIN RSA PRIVATE KEY-----%%'' | SSLeay | проблема у чомусь іншому | | ||
+ | |||
+ | ===== Пояснення ===== | ||
+ | Пакет OpenSSL версій нижче за 1.0.0 використовував власний формат [[http://www.openssl.org/docs/crypto/pem.html#PEM_ENCRYPTION_FORMAT|SSLeay]] для зберігання закритого ключа RSA у PEM-кодуванні, що став де-факто стандартом. | ||
+ | Його підтримку реалізовано у багатьох пакетах засобів шифрування, зокрема власне [[http://www.openssl.org|OpenSSL]], [[http://www.gnu.org/software/gnutls/|GNUTLS]], [[http://www.mozilla.org/projects/security/pki/nss/|Mozilla NSS]], Java(tm)-бібліотека [[http://www.bouncycastle.org|Bouncy Castle]]. | ||
+ | Ці бібліотеки застосовуються у багатьох компонентах Middleware. | ||
+ | |||
+ | Починаючи з версії 1.0.0 у пакеті OpenSSL для зберігання закритого ключа за замовчуванням використовується формат [[http://www.rsa.com/rsalabs/node.asp?id=2130|PKCS#8]], який є офіційним стандартом та більш універсальний за вмістом --- підтримуються різні алгоритми шифрування, а не тільки RSA. | ||
+ | Проблема полягає в тому, що більшість згаданих бібліотек, а особливо їх старі версії, не підтримують PKCS#8. | ||
===== Вирішення ===== | ===== Вирішення ===== | ||
+ | Перетворення форматів SSLeay у PKCS#8 та навпаки для закритого ключа RSA є однозначним та оборотним. | ||
+ | Щоб перетворити PKCS#8 у SSLeay, можна скористатись такою командою: | ||
+ | <code>openssl rsa -in pkcs8.pem -out ssleay.pem</code> | ||
+ | де ''pkcs8.pem'' --- вхідний файл у форматі PKCS#8, а ''ssleay.pem'' --- результат у форматі SSLeay. | ||
+ | |||
+ | **УВАГА!** Після перетворення формату закритого ключа обов'язково перевіряйте права доступу на відповідні файли. | ||
- | --- //[[people:slu|Євген Слюсар]] 2012/04/08 19:54// | + | --- //[[people:slu|Євген Слюсар]] 2012/04/09 00:28// |