artarad_oracle_db

تنظیم TCP/IP با SSL و TLS برای اتصال به پایگاه داده اوراکل

۱.مقدمه
در این مستند به پیکربندی موردنیاز برای سرور و کلاینت ها بابت استفاده از پروتکل Tcp به همراه SSL و TLS در اتصال به پایگاه داده می پردازیم. رمزنگاری شبکه‌ای در زمان‌هایی که شما قصد دارید پایگاه‌داده خود را به Cloud منتقل کنید و یا فاقد فایروال شبکه‌ای هستید از اهمیت زیادی برخوردار می شود.

تنظیم TCP/IP با SSL و TLS برای اتصال به پایگاه ­داده اوراکل

۲٫پیشنیازها و فرضیات
در این مستند فرض می شود پیشنیازهای ذیل وجود دارد:
-یک سرور پایگاه داده، در این مورد ما از پایگاه داده اوراکل ۱۲C که برروی Oracle Linux 7 درحال اجراست استفاده می کنیم. در سایر نسخه ها پایگاه داده و سرور یکسان است.
-یک کلاینت که Oracle Client برروی آن نصب شده باشد. که در این مستند ما از Oracle Client 11 برروی Windows 7 استفاده می کنیم.
-در این سناریو، ما دارای فایروال های شبکه ای و یا محلی که پورت ۲۴۸۴ را مسدود کند، نیستیم.

۳٫سرور Wallet و Certificate
یک Wallet اتولاگین جدید ایجاد می کنیم.

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

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

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

$

یک گواهی نامه خود امضا ایجاد می کنیم و درون Wallet بارگزاری می کنیم.

$ orapki wallet add -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123 \

-dn “CN=`hostname`” -keysize 1024 -self_signed -validity 3650

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

$

سپس محتویات پول را بررسی می کنیم. توجه داشته باشید که گواهی نامه خود امضا یک گواهی نامه کاربر و معتبر است.

$ orapki wallet display -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

Requested Certificates:

User Certificates:

Subject: CN=ol7-121.localdomain

Trusted Certificates:

Subject: CN=ol7-121.localdomain

$

گواهی نامه را از سرور خارج می کنیم، که بعدا بتوانیم آن را در Wallet کلاینت بارگزاری کنیم.

$ orapki wallet export -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123 \

-dn “CN=`hostname`” -cert /tmp/`hostname`-certificate.crt

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

$

گواهی نامه ای که از سرور خارج کرده ایم را بررسی می کنیم که همانطور که انتظار می رود باشد.

$ cat /tmp/`hostname`-certificate.crt

—–BEGIN CERTIFICATE—–

MIIBqzCCARQCAQAwDQYJKoZIhvcNAQEEBQAwHjEcMBoGA1UEAxMTb2w3LTEyMS5sb2NhbGRvbWFp

bjAeFw0xNTA2MjYxNDQyMDJaFw0yNTA2MjMxNDQyMDJaMB4xHDAaBgNVBAMTE29sNy0xMjEubG9j

YWxkb21haW4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJIrU1fGWAwMxRobFsS0UZBD1jFU

wAvnH9blsynhrQrZSkwyMBWGPRFq5tufRpaifoNVVHSrjJm/nti62A6RXECAKsug9rHL8T11FOgP

۳R/+Itw2jLzwpdk7MbHMxpNHz6Y2IPCmBsJ5+625dRxugVKhLsIitAW5cUpT28bkrMl9AgMBAAEw

DQYJKoZIhvcNAQEEBQADgYEABqQaP056WcPNgzSAOhJgTU/6D8uAFGCgUN57HoraXxgAN3HgmeGq

hQfpb8tP+xeTF3ecqvWqJQHGdAJbuhRwpNR1rRovvlOxiv4gl0AplRzRuiygXfi6gst7KNmAdoxr

TOcUQsqf/Ei9TaFl/N8E+88T2fK67JHgFa4QDs/XZWM=

—–END CERTIFICATE—–

$

۴٫کلاینت Wallet و Certificate
یک Wallet اتولاگین جدید ایجاد می کنیم.

c:\>mkdir -p c:\app\oracle\wallet

c:\>orapki wallet create -wallet “c:\app\oracle\wallet” -pwd WalletPasswd123 -auto_login_local

Oracle PKI Tool : Version 11.2.0.3.0 – Production

Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

c:\>

یک گواهی نامه خود امضا ایجاد می کنیم و درون Wallet بارگزاری می کنیم.

c:\>orapki wallet add -wallet “c:\app\oracle\wallet” -pwd WalletPasswd123 -dn “CN=%computername%” -keysize 1024 -self_signed -validity 3650

Oracle PKI Tool : Version 11.2.0.3.0 – Production

Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

c:\>

محتویات Wallet را بررسی می کنیم، توجه داشته باشید که گواهی نامه خود امضا یک گواهی نامه کاربر و معتبر است.

c:\>orapki wallet display -wallet “c:\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

c:\>

گواهی نامه را از سرور خارج می کنیم، که بعدا می توانیم آن را در سرور بارگزاری کنیم.

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

Oracle PKI Tool : Version 11.2.0.3.0 – Production

Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

c:\>

گواهی نامه را بررسی می کنیم.

c:\>more c:\%computername%-certificate.crt

—–BEGIN CERTIFICATE—–

MIIBmzCCAQQCAQAwDQYJKoZIhvcNAQEEBQAwFjEUMBIGA1UEAxMLSVRTLUYxTUxDNUowHhcNMTUw

NjI2MDkzMzE2WhcNMjUwNjIzMDkzMzE2WjAWMRQwEgYDVQQDEwtJVFMtRjFNTEM1SjCBnzANBgkq

hkiG9w0BAQEFAAOBjQAwgYkCgYEAk/oX7ulDhW+DKXdD+qYC9DN7DoTsmeGZaW7EwYr48sw2qQWK

HP3pFb8/eVLHuqd2tX8RCniI6Dy5iMe7aM+BOvtGDT2bkCENO7xflww+L/Jp1JeF4OCawE36/Coy

sWAu4yom7n109ioT2rQsN62ERj8wPa53r8KAB12UnidBzRECAwEAATANBgkqhkiG9w0BAQQFAAOB

gQB7hbEUXM3ur2H2osuaX24mxmw83yxLnvx9BDi10kbTdH02St/EfCNlCWc69L5iAeJVESvaVgJQ

u1AZEeD3jPYMFWTnGfX4txo7+GJWwpxCJXqYYrmYQL2h1W6UtTVsJgQ08wo2bTHTjII6HB6wt8CK

OU46CFGLL+7B7Xrpnk1UwA==

—–END CERTIFICATE—–

c:\>

۵٫تبادل گواهی نامه ها
هرسمت اتصال نیازمند تایید سمت دیگر است، بنابراین باید گواهی نامه را از سرور درون Wallet کلاینت بارگزاری کنیم و برعکس.
گواهی نامه سرور را درون Wallet کلاینت بارگزاری می کنیم.

c:\>orapki wallet add -wallet “c:\app\oracle\wallet” -pwd WalletPasswd123 -trusted_cert -cert c:\ol7-121.localdomain-certificate.crt

Oracle PKI Tool : Version 11.2.0.3.0 – Production

Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

c:\>

محتویات Wallet کلاینت را بررسی می کنیم، توجه کنید که گواهی نامه سرور اکنون در لیست گواهی های معتبر اضافه شده باشد.

c:\>orapki wallet display -wallet “c:\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=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

c:\>

گواهی کلاینت را در Wallet سرور بارگزاری می کنیم.

$ orapki wallet add -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123 \

-trusted_cert -cert /tmp/my-computer-certificate.crt

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

$

محتویات Wallet سرور را بررسی می کنیم، توجه کنید که گواهی نامه کلاینت اکنون در لیست گواهی های معتبر اضافه شده باشد.

$ orapki wallet display -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123

Oracle PKI Tool : Version 12.1.0.2

Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

Requested Certificates:

User Certificates:

Subject: CN=ol7-121.localdomain

Trusted Certificates:

Subject: CN=my-computer

Subject: CN=ol7-121.localdomain

$

برروی سرور، و در فایل “$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 = FALSE

SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)

+لازم به ذکر است، تصمیمات شما برای استفاده از مجموعه های رمزنگاری شده نسبت به نسخه کلاینت و پایگاه داده متفاوت خواهد بود.

تنظیمات مرتبط با listener را برای تایید اتصال رمزنگاری شده SSL/TLS انجام می دهیم، برای تایید اتصال رمزنگاری شده SSL/TLS فایل “$ORACLE_HOME/network/admin/listener.ora” را تغییر می دهیم و محتویات زیر را (اطلاعات Wallet) و همچنین TCPS را به آن اضافه می کنیم.

SSL_CLIENT_AUTHENTICATION = FALSE

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

Listener را ریستارت می کنیم.

$ lsnrctl stop

$ lsnrctl start

Listener سرور در حال حاضر تنظیم شده است.

۶٫تنظیمات شبکه کلاینت
محتویات زیر را به فایل “$ORACLE_HOME/network/admin/sqlnet.ora” اضافه می کنیم.

WALLET_LOCATION =

(SOURCE =

(METHOD = FILE)

(METHOD_DATA =

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

)

)

SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)

SSL_CLIENT_AUTHENTICATION = FALSE

SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)

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

فایل “$ORACLE_HOME/network/admin/tnsnames.ora” را تغییر می دهیم، و از تطابق تنظیمات کلاینت برای SSL با سرور و پروتکل TCPS اطمینان حاصل می کنیم.

pdb1_ssl=

(DESCRIPTION=

(ADDRESS=

(PROTOCOL=TCPS)

(HOST=ol7-121.localdomain)

(PORT=2484)

)

(CONNECT_DATA=

(SERVER=dedicated)

(SERVICE_NAME=pdb1)

)

)

کلاینت درحال حاضر تنظیم شده است.

۷٫تست اتصال
اکنون می توانید با ورود به TNS و فعالسازی SSL/TLS با سرور ارتباط برقرار کنید.

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>