بلاگ IRAN OUG


به وبلاگ IRAN OUG (گروه کاربران اوراکل ایران) خوش آمدید.


تازه ترین مطالب کارشناسان این صنعت را بررسی کنید. برای مشاهده مطلب مورد نظر می توانید جستجو کنید.

آیا می خواهید مطالب خود را در اینجا مشاهده کنید؟ مطالب خود را بفرستید ثبت مطالب من

مطالب کاربران

ایجاد ارتباط SSL در پایگاه داده اوراکل - Securityچهارشنبه, 13 دی 1396 - حامد اسماعیلی-
موضوع: Database

با دنبال کردن مراحل زیر میتوان ارتباط بین برنامه و دیتابیس را ایجاد کرد.

در این مستند فرض را بر این گرفته که server با نام ol7-121.localdomain بوده و client یک سیستم ویندوزی با نام "my-computer" میباشد و oracle client بر روی آن نصب میباشد.

 

ایجاد wallet بر روی سرور:

  1. ساخت wallet بصورت auto_login بر روی سرور

 

$ mkdir -p /u01/app/oracle/wallet

 

$ orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local

 

  1. ساخت certificate بصورت self-signed  و load به wallet

$  orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

 

  1. بررسی محتویات wallet
$ orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

 

  1. خروجی گرفتن از certificate برای ورود به wallet در سمت client
$ orapki wallet export -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -cert /tmp/`hostname`-certificate.crt

 

 

 

 

  1. بررسی محتویات certificate
$ cat /tmp/`hostname`-certificate.crt

 

-----BEGIN CERTIFICATE-----
MIIBqzCCARQCAQAwDQYJKoZIhvcNAQEEBQAwHjEcMBoGA1UEAxMTb2w3LTEyMS5sb2NhbGRvbWFpbjAeFw0xNTA2MjYxNDQyMDJaFw0yNTA2MjMxNDQyMDJaMB4xHDAaBgNVBAMTE29sNy0xMjEubG9jYWxkb21haW4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJIrU1fGWAwMxRobFsS0UZBD1jFUwAvnH9blsynhrQrZSkwyMBWGPRFq5tufRpaifoNVVHSrjJm/nti62A6RXECAKsug9rHL8T11FOgP3R/+Itw2jLzwpdk7MbHMxpNHz6Y2IPCmBsJ5+625dRxugVKhLsIitAW5cUpT28bkrMl9AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEABqQaP056WcPNgzSAOhJgTU/6D8uAFGCgUN57HoraXxgAN3HgmeGqhQfpb8tP+xeTF3ecqvWqJQHGdAJbuhRwpNR1rRovvlOxiv4gl0AplRzRuiygXfi6gst7KNmAdoxrTOcUQsqf/Ei9TaFl/N8E+88T2fK67JHgFa4QDs/XZWM=
-----END CERTIFICATE-----
$

 

ایجاد wallet بر روی کلاینت :

در صورتیکه این مرحله بر روی ویندوز اجرا گردد نیاز به oracle client خواهیم داشت.

  1. ایجاد wallet بصورت auto_login
d:\>mkdir -p d:\app\oracle\wallet
d:\>orapki wallet create -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -auto_login
  1. ساخت certificate بصورت self-signed  و load به wallet
d:\>orapki wallet add -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -keysize 1024 -self_signed -validity 3650
  1. با دستور زیر wallet را میتوانید بررسی کنید. توجه کنید که مقدار cn که با نام کامپیوتر برابر است باید در قسمت user و trusted certificate وجود داشته باشد.
d:\>orapki wallet display -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123
Oracle PKI Tool : Version 11.2.0.3.0 - Production
Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

 
Requested Certificates:
User Certificates:
Subject:        CN=my-computer
Trusted Certificates:
Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US
Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
Subject:        CN=my-computer
Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
  1. خروجی گرفتن از certificate برای ورود به wallet در سمت Server
d:\>orapki wallet export -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -cert d:\%computername%-certificate.crt
  1. بررسی certificate
d:\>more d:\%computername%-certificate.crt

تبادل certificate ها  :

  1. در ابتدا certificate خروجی گرفته شده در سمت server را در درایو C بر روی  clientکپی کرده و برعکس ، certificate خروجی گرفته شده در سمت client را بر روی /tmp  از server کپی میکنیم.

در ابتدا بر روی کلاینت دستور زیر را اجرا میکنیم:

d:\>orapki wallet add -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -trusted_cert -cert d:\ol7-121.localdomain-certificate.crt

در اینجا بجای d:\ol7-121.localdomain-certificate.crt میبایست مسیر و نام certificate کپی شده از روی سرور جایگزین گردد.

  1. در این قسمت wallet بر روی client را بررسی میکنیم:
d:\>orapki wallet display -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 

میبایست نام سرور در قسمت Trusted Certificates اضافه شده باشد.

Requested Certificates:
User Certificates:
Subject:        CN=my-computer
Trusted Certificates:
Subject:        OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US
Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        CN=my-computer
Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        CN=ol7-121.localdomain
Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
  1. بر روی سرور دستور زیر را اجرا میکنیم:

$  orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -trusted_cert -cert /tmp/my-computer-certificate.crt

در این قسمت به جای نام my-computer-certificate.crt ، نام certificate کپی شده از client را قرار میدهیم.

با استفاده از دستور زیر بررسی میکنیم که نام client در لیست Trusted Certificates اضافه شده باشد:

$  orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

تغییرات فایلهای شبکه ای سرور

  1. تغییر فایلهای سرور:

در ابتدا خطهای زیر در فایل $ORACLE_HOME/network/admin/sqlnet.ora افاضه کنید و یا در صورت نیاز تغییر دهید:

WALLET_LOCATION =

   (SOURCE =

     (METHOD = FILE)

     (METHOD_DATA =

       (DIRECTORY = /u01/app/oracle/wallet)

     )

   )

SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)

SSL_CLIENT_AUTHENTICATION = TRUE

SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)

SSL_VERSION = 1.0

سپس فایل $ORACLE_HOME/network/admin/listener.ora را بصورت زیر تغییر دهید:

SSL_CLIENT_AUTHENTICATION = TRUE

WALLET_LOCATION =

  (SOURCE =

    (METHOD = FILE)

    (METHOD_DATA =

      (DIRECTORY = /u01/app/oracle/wallet)

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-121.localdomain)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

      (ADDRESS = (PROTOCOL = TCPS)(HOST = ol7-121.localdomain)(PORT = 2484))

    )

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

توجه داشته باشید در صورتی که ارتباط فقط باید با TCPS برقرار باشد ، خط TCP را حذف کنید.

سپس دستورات زیر را برای اعمال تغییرات انجام دهید:

$ lsnrctl stop

$ lsnrctl start

 

  1. تغییر فایلهای client:

فایل $ORACLE_HOME/network/admin/sqlnet.ora را در کلاینت اضافه کنید (توجه داشته باشید شما برای این مرحله میبایست oracle client را نصب داشته باشید).

WALLET_LOCATION =

   (SOURCE =

     (METHOD = FILE)

     (METHOD_DATA =

       (DIRECTORY = D:\app\oracle\wallet)

     )

   )

SSL_VERSION=1.0

SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)

SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)

SSL_CLIENT_AUTHENTICATION = TRUE

 

همچنین خطوط زیر را به فایل $ORACLE_HOME/network/admin/tnsnames.ora اضافه کنید:

pdb1_ssl=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCPS)
      (HOST=ol7-121.localdomain)
      (PORT=2484)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=pdb1)
    )
  )

در این قسمت میبایست pdb1_ssl را با نام دلخواه و pdb1 و ol7-121.localdomain را با توجه به نام سرور و نام سرویس در سرور تغییر دهید.

تست ارتباط:

برای تست ارتباط میتوان به صورت زیر عمل نمود:

 

c:\>sqlplus test/test@pdb1_ssl
SQL*Plus: Release 11.2.0.3.0 Production on Fri Jun 26 16:23:28 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>

به جای test باید کاربر موجود در سرور و پسورد قرار داده شود.

برچسب: Security,Database
1 - 1