تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست
آخرین نظرات
  • ۱۶ مرداد ۹۸، ۰۱:۰۰ - علی جهان نما
    عالی بود

گاهی اوقات نیاز است به دلایل امنیتی ارتباط بین دیتابیس و نرم افزار را رمز نگاری کرد . یکی از بهترین روشها استفاده از SSL در ارتباطات TNS و LISTENER است . در این مقاله به پیاده سازی این راهکار خواهیم پرداخت.


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

در این مستند فرض را بر این گرفته که 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

 

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

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


3-    بررسی محتویات wallet

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

 

4-    خروجی گرفتن از certificate برای ورود به wallet در سمت client

$ orapki wallet export -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -cert /tmp/`hostname`-certificate.crt

 

 5-    بررسی محتویات 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

 

2-    ساخت 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

 3-    با دستور زیر 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

 

4-    خروجی گرفتن از certificate برای ورود به wallet در سمت Server

d:\>orapki wallet export -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -cert d:\%computername%-certificate.crt

5-    بررسی 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 کپی شده از روی سرور جایگزین گردد.

 

2-    در این قسمت 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

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

$  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

 

2-    تغییر فایلهای 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 باید کاربر موجود در سرور و پسورد قرار داده شود.


منبع :

https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections

  • موافقین ۱ مخالفین ۰
  • ۹۶/۱۰/۱۳
  • ۱۰۰۲ نمایش
  • حامد اسماعیلی

ORACLE

ORACLE SECURITY

SSL

TCPS

TNS

WALLET

نظرات (۱)

Hey would you mind letting me know which web host you're using?
I've loaded your blog in 3 different web browsers and I must say this blog loads a lot faster then most.

Can you recommend a good hosting provider at a fair price?
Thanks a lot, I appreciate it!
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی