Гаманець Oracle Wallet: використання для зв’язку по захищених каналах, Інші СУБД, Бази даних, статті














І почав мене питати: “Що за людина? Откудова?” І я сказав, що з Москви, та й подав йому господарський лист воложской. Московського священика Івана Лук’янова ходіння в Святу землю 


Захищені з’єднання і сертифікати справжності


Друга активна область використання електронного гаманця Oracle – підтримка захищених з’єднань між СУБД та вузлами інтернет. Захист з’єднань між учасниками інтернет будується на використанні шифрування переданих даних, зазвичай за схемою публічної інфраструктури ключів (PKI), а це вимагає передачі від одного учасника до іншого шіфроключа. Ризик стороннього втручання в таку передачу значно вище, ніж при зверненні СУБД до локальної файлової системи, так що крім власне шіфроключа учасники передають одне одному ще спеціальне підтвердження автентичності, тобто “цифровий сертифікат” ( http://en.wikipedia.org/wiki/Public_key_certificate ), Що дає приймаючій стороні упевненість, що шифр не підроблений. Гаманець Oracle здатний такі сертифікати зберігати.


З’єднання учасників мережі можуть бути двох типів: СУБД з іншими учасниками, коли вона виступає в якості клієнта, та інших учасників (клієнтських програм) з СУБД. Нижче наводяться приклади організації того й іншого.


Створення гаманця з сертифікатами


ПО Oracle дозволяє створити порожній гаманець, і потім включити в нього необхідні сертифікати справжності. Однак програми owm (Wallet Manager), orapki, mkstore і mkwallet дозволяють створити гаманець з деяким початковим набором сертифікатів. Перша з цих програм зуміє створити бажаний каталог для зберігання файлу гаманця сама, а інші припускають каталог вже наявними. Приклад, для сервера:


 >set WALLETLOC=C:oracleproduct10.2.0db_1NETWORKwallet


>mkdir %WALLETLOC%


>mkstore -wrl %WALLETLOC% -create


У діалозі потрібно вказати придуманий пароль, наприклад, як і раніше amicus123. Зауважте, що в створенні каталозі утворилися відразу два файли, що відповідає постійно відкритого гаманця, це-то нам і потрібно.


Ще приклад створення:


>orapki wallet create -wallet %WALLETLOC% -pwd amicus123


З’явився один файл ewallet. P 12, але зате цією ж програмою можна ознайомитися з його вмістом:


>orapki wallet display -wallet %WALLETLOC% -pwd amicus123


Нарешті, створити гаманець і працювати з його вмістом можна через Oracle Wallet Manager (меню Wallet ® New). При цьому від наступного речення доведеться відмовитися:


В іншому випадку програма запропонує текст заявки на отримання сертифіката, що поки не потрібно. Властивість гаманця Auto Login в Wallet Manager потрібно буде задати самостійно.


Слід звернути увагу, щоб місця знаходження файлів гаманців були доступні елементам ПО відповідно сервера і клієнта.


Захищені з’єднання з СУБД по протоколу SSL


ПО Oracle Advanced Security дозволяє проводити авторизацію з’єднань клієнта з сервером засобами сторонніх продуктів, таких як Kerberos або RADIUS. Тут же буде показано, як це можна зробити за використанням гаманця і техніки захищеного з’єднання SSL (більш сучасна назва – TLS, http://en.wikipedia.org/wiki/Transport_Layer_Security ). З SSL пов’язане й інше рішення: з’єднуватися в Oracle без Advanced Security, але по каналу зв’язку (“тунелю”) SSL в ОС. Воно тут не розглядається щонайменше тому, що позбавляє сенсу тему цієї статті.


Конфігурування Oracle Net


Процес установки соедінеій клієнтів з СУБД listener повинен бути налаштований на прийом заявок підключень по протоколу TCPS. Для цього в файлі listener. Ora слід поповнити опис списку портів в параметрі LISTENER. За замовчуванням Oracle Net використовує для TCPS порт 2484; нижче ця традиція збережена. Вказівка ​​SSL_VERSION в файлах нижче наводиться для визначеності і не має принципового значення.


Файли сервера


Зразковий фрагмент з listener. Ora може виглядати так:



LISTENER =


  ( DESCRIPTION_LIST =


    ( DESCRIPTION =


      ( ADDRESS = ( PROTOCOL = TCP )( HOST = oraserver )( PORT = 1521 ) )


      ( ADDRESS = ( PROTOCOL = TCPS )( HOST = oraserver )( PORT = 2484 ) )


    )


  )


SSL_CLIENT_AUTHENTICATION = FALSE


SQLNET.AUTHENTICATION_SERVICES = ( TCPS, NTS )


 WALLET_LOCATION =


  ( SOURCE =


    ( METHOD = FILE )


    ( METHOD_DATA =


      ( DIRECTORY = C:oracleproduct10.2.0db_1NETWORKwallet )


    )


  )



Після подібної правки файлу listener. Ora програму listener варто перезапустити.


Правка файлу sqlnet. Ora може виглядати приблизно так:


 …


SQLNET.AUTHENTICATION_SERVICES = ( TCPS, NTS )


 


SSL_CLIENT_AUTHENTICATION = FALSE


 


SSL_VERSION = 3.0


 


WALLET_LOCATION =


  ( SOURCE =


    ( METHOD = FILE )


    ( METHOD_DATA =


      ( DIRECTORY = C:oracleproduct10.2.0db_1NETWORKwallet )


    )


  )



Файли клієнта


Правка файлу tnsnames. Ora може виглядати приблизно так:


 …


ORCL_SSL =


  ( DESCRIPTION =


    ( ADDRESS = ( PROTOCOL = TCPS )( HOST = oraserver )( PORT = 2484 ) )


    ( CONNECT_DATA =


      ( SERVICE_NAME = orcl )


    )


  )



(Передбачається, що ім’я служби БД – orcl).


Правка файлу sqlnet. Ora може виглядати приблизно так:


 …


NAMES.DIRECTORY_PATH = ( TNSNAMES )


 SSL_VERSION = 3.0


WALLET_LOCATION =


  ( SOURCE =


    ( METHOD = FILE )


    ( METHOD_DATA =


      ( DIRECTORY = C:oracleproduct10.2.0client_1NETWORKwallet )


    )


  )



Конфігурування програмою Net Manager


Виставити необхідні значення параметрів можна програмою Net Manager, наприклад:


Може статися, що ПО Advanced Security доустанавливать надалі. Через внутрішні помилок програма Net Manager не завжди в таких випадках здатна показати позицію Oracle Advanced Security спадаючого меню. Вийти з положення можна, підправивши рядок з файлу netproperties в каталозі% ORACLE _HOME%etwork ools; наприклад замінити:


INSTALLEDCOMPONENTS=CLIENT,ORACLENET


на:


INSTALLEDCOMPONENTS=CLIENT,ORACLENET,ANO.


(ANO – скорочення старої назви нинішнього ПО Advanced Security Option).


Отримання цифрового сертифіката


Для встановлення захищеного з’єднання по SSL потрібно отримати цифрові сертифікати справжності: (а) “користувача” і (б) “кореневої”. Сертифікат користувача будемо отримувати на звернення до ресурсу, позначеному наступним “розпізнавальних ім’ям” (distinguished name, dn):


cn=orcl, cn=OracleContext, dc=us, dc=oracle, dc=com


(Передбачається, що ім’я екземпляра СУБД – orcl). Правила побудови розпізнавальних імен багаторазово описані в літературі і в інтернеті.


Кореневий сертифікат знадобиться для того, щоб підтвердити сертифікат користувача. Підтвердження йому не потрібен, оскільки він підтверджує сам себе (звідси назва).


Підготовка заявки на сертифікат користувача


Отримання сертифікату користувача проводиться по підготовленій заявці (request). Підготувати заявку можна за допомогою Wallet Manager, окремо для гаманців на сервері і на клієнті. Звернутися до форми складання заявки можна через меню Operations ® Add Certificate Request. У формі Create Certificate Request слід вибрати Key Size = 1024 і натиснути кнопку Advanced. У що з’явилася форму потрібно внести розрізняльної ім’я і натиснути OK:


Якщо тепер “встати” на гілку Certificate (Requested ) Дерева об’єктів гаманця, праворуч побачимо текст заявки на сертифікат:


При бажанні можна з пощью меню запам’ятати текст заявки в зовнішньому файлі.


Отримання сертифікатів


Отримати сертифікат можна різними способами:


– Від уповноважених центрів сертифікації (certificate authority, CA), що видають сертифікати за плату;


– За допомогою безкоштовних програм отримання сертифікатів, наприклад openSSL;


– Від власного уповноваженого центру в рамках Identity Management Infrastructure в складі Oracle Application Server.


Останній варіант виглядає природним при роботі з ПЗ Oracle, однак, як і другий, вимагає певного розгляду, відволікаючого від основного викладу. Простим виходом може виявитися отримання пробного безкоштовного сертифікату з тритижневим терміном придатності від фірми thawte.


На місці www.thawte.com в web потрібно знайти сторінку “21-Day Free Trial SSL Certificate from thawte” і заповнити поля своїми даними. Далі на сторінці “21-Day Free SSL Trial Certificate” потрібно проставити відмітку SSL123 Certificate (All servers) і в поле для заявки внести текст, отриманий від Wallet Manager. Натиснувши next, отримаємо у відповідь текст сертифіката. Поки його потрібно запам’ятати в якому-небудь файл, наприклад userCert. Txt. Такий файл отримуємо окремо для гаманця на сервері і на клієнті.


Кореневий сертифікат можна отримати за адресою https://www.thawte.com/roots/ . Завантаживши файл thawte-roots.zip, потрібно витягти з нього текстове або двійкове подання кореневого сертифікату в каталозі Thawte Test Roots.


Імпорт сертифікатів в гаманець


Наочніше імпортувати сертифікати знову-таки в Oracle Wallet Manager, хоча робити це можна і програмами з командного рядка.


Спочатку імпортується кореневий сертифікат. Використовується меню Operations ® Import Trusted Certificate .


У другу чергу імпортується сертифікат користувача допомогою меню Operations ® Import User Certificate. Обидва дії допускають вказівку як посилання на файл, так і живого тексту.


В результаті гілка Certificate (Requested) об’єктів гаманця отримає вид Certificate (Ready ) :


Сертифікати імпортуються окремо в гаманці сервера і клієнта.


Встановлення захищеного з’єднання


На клієнті набираємо:


>sqlplus scott/tiger@orcl_ssl


Переконатися, що дійсно відбулося з’єднання по SSL, можна по файлах протоколу (журналу) з’єднань listener.log. Якщо ж включити трасування сеансу (параметр TRACE_LEVEL_CLIENT у файлі sqlnet. Ora ), Побачимо у файлі трасування приблизно наступний фрагмент:



[10-DEC-2008 20:13:11:828] nzos_Trace_Negotiated_Cipher: The Final Negotiated SSL Cipher Suite is: SSL_RSA_WITH_3DES_EDE_CBC_SHA


[10-DEC-2008 20:13:11:828] ntzdosecneg: SSL handshake done



Звернення в інтернет по протоколу https


Наявність гаманця з необхідним сертифікатом дозволяє встановлювати з’єднання СУБД з вузлами мережі по захищеному протоколу HTTPS за допомогою пакета UTL_HTTP. Для прикладу розглянемо адресу https://www.thawte.com . Щоб звернутися до нього з програми буде потрібно занести в гаманець сертифікат. Сертифікат можна отримати з отриманого раніше файлу thawte-roots.zip, з каталогу Thawte Server Roots. З рівним успіхом для імпорту в гаманець годяться і двійковий файл ThawtePremiumServerCA. cer і вміст текстового ThawtePremiumServerCA _b 64.txt. Імпортуємо сертифікат як і вище, за допомогою Wallet Manager і меню Operations ® Import Trusted Certificate .


Підготуємо текст програми для SQL * Plus:


SET SERVEROUTPUT ON


DECLARE


req        UTL_HTTP.REQ;


resp       UTL_HTTP.RESP;


walletdir  VARCHAR2 ( 100 )


           := “file:C:oracleproduct10.2.0db_1NETWORKwallet“; 


walletpass VARCHAR2 ( 100 ) := “amicus123“;


targeturl  VARCHAR2 ( 100 ) := “https://www.thawte.com“; 


BEGIN


UTL_HTTP.SET_WALLET            ( walletdir, walletpass );


req  := UTL_HTTP.BEGIN_REQUEST ( targeturl );


resp := UTL_HTTP.GET_RESPONSE  ( req );


UTL_HTTP.END_RESPONSE          ( resp );


DBMS_OUTPUT.PUT_LINE ( “HTTP response status code: ” // resp.status_code );


DBMS_OUTPUT.PUT_LINE ( “HTTP response reason: ”      // resp.reason_phrase );


END;


/


При наявності наближеного сервера (proxy) буде потрібно зв’язатися через нього (UTL_HTTP.SET_PROXY).


Прогін тексту повинен дати результат:


HTTP response status code: 200


HTTP response reason: OK


Вправа. Прибрати з тексту програми звернення до гаманця (SET_WALLET) і перевірити доступ до адрес: (а) https://www.thawte.com , (Б) www.thawte.com.


У створенні засобами Oracle гаманці є декілька попередньо встановлених сертифікатів. Один з них готовий для встановлення прямого захищеного з’єднання по протоколу HTTPS з вузлом за адресою https://www.entrust.net/

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*