sql >> Databasteknik >  >> RDS >> Oracle

Aktiverar TLS i R12.1

Innehållsförteckning

Introduktion till att aktivera TLS  i R12.1

  • Datan mellan webbläsare och webbserver färdas okrypterad i R12-applikationen, så lösenordet och annan information kan spåras av sniffer. Vi undviker detta genom att implementera TLS i R12.
  • Med TLS-implementering färdas data i de krypterade formerna och endast webbläsare och webbserver kan dekryptera den. Implementeringen kräver SSL-certifikatet och konfigurationen i R12-miljön   enligt konfigurationen

Transport Layer Security (TLS)

Transport Layer Security, eller TLS, är efterföljaren till SSL. TLS, liksom SSL, är ett protokoll som krypterar trafik mellan en klient och en server. TLS skapar en krypterad anslutning mellan två maskiner som gör att privat information kan överföras utan problem med avlyssning, datamanipulation eller meddelandeförfalskning.

Vad är SSL?

SSL är en teknik som definierar de väsentliga funktionerna för ömsesidig autentisering, datakryptering och dataintegritet för säkra transaktioner. Utbyte av data mellan klienten och servern i sådana säkra transaktioner sägs använda Secure Sockets Layer (SSL). Detta har fasats ut till förmån för den föredragna TLS-referensen framöver.

Så fungerar SSL/TLS

  1. Klienten skickar en begäran till servern med HTTPS-anslutningsläge.
  2. Servern presenterar sitt digitala certifikat för klienten. Detta certifikat innehåller serverns identifierande information som servernamn, organisation och serverns offentliga nyckel och digital signatur för CA:s privata nyckel
  3. Klienten (webbläsaren) har de publika nycklarna för alla CA. Den dekrypterar det digitala certifikatets privata nyckel. Denna verifiering bevisar att avsändaren hade tillgång till den privata nyckeln och därför sannolikt är den person som är associerad med den offentliga nyckeln. Om verifieringen går bra, autentiseras servern som en betrodd server.
  4. Klienten skickar till servern en lista över de krypteringsnivåer, eller chiffer, som den kan använda.
  5. Servern tar emot listan och väljer den starkaste krypteringsnivån som de har gemensamt.
  6. Klienten krypterar ett slumpmässigt nummer med serverns publika nyckel och skickar resultatet till servern (som endast servern ska kunna dekryptera med sin privata nyckel); båda parter använder sedan slumptalet för att generera en unik sessionsnyckel för efterföljande kryptering och dekryptering av data under sessionen

Så det framgår av stegen ovan att vi kommer att behöva ett digitalt certifikat för webbservern.

Viktig anmärkning
Vi  har även läst artikeln
Aktivera SSL eller TLS i Oracle Apps R12

  • Ovanstående artikel ger implementeringsstegen för SSL V3 /TLS1.0  med Oracle Apps R12.0 och R12.1 version.
  • Den här artikeln täcker specifikt stegen för TLS 1.0/1.1/1.2-implementering i R12.1

Att aktivera TLS  i R12.1 beror på topologin för R12-implementeringen. Jag är här och lyfter fram alla de viktigaste.

  • En enda webbserverdistribution.

Det här är ganska enkelt. Vi kommer att behöva det digitala certifikatet för webbservern. Stegen är rakt fram. Trafiken mellan webbläsare och webbserver kommer att krypteras

  • Att ha en lastbalanserare som serverar 2 eller fler webbservrar gör det lite komplicerat

I det här fallet kan vi ha följande alternativ

  • End to end-kryptering av trafik

Hela trafikflödet, dvs från webbläsare till lastbalanserare och från lastbalanserare till webbserver är krypterat

Det finns två sätt att göra det

  1. Pass-through-konfiguration :Belastningsbalansen i detta fall dekrypterar/krypterar inte meddelandet .det går bara genom trafiken till webbservern
  2. Dekryptering/kryptering :Lastbalansen i det här fallet dekrypterar trafiken på lastbalanseringsnivån och krypterar den igen och skickar den till webbservern som återigen dekrypterar den
  • SSL-terminator:Trafiken mellan webbläsare och lastbalanserare är endast krypterad. Lastbalansen fungerar som SSL-terminator och avslutar SSL på lastbalanseringsnivån och skickar den okrypterade trafiken till webbservern.

Stegen för att aktivera TLS  i R12.1 för varje topologi ges nedan

En enda webbserverdistribution

Steg 0 :Förutsättning

1) Uppgradera till ett minimum av Java Development Kit (JDK) 7.
Följ instruktionerna i Mitt Oracle Support Document 1467892.1, med JDK 7.0 senaste uppdateringen med Oracle E-Business Suite Release 12.0 och 12.1 för att göra detta.
2) – Uppgradera till Oracle HTTP Server (OHS) 10.1.3.5.
Följ instruktionerna i My Oracle Support Knowledge Document 454811.1, Uppgradering till den senaste Oracle AS 10g 10.1.3.x Patch Anges i Oracle E-Business Suite Release 12.
3) – Använd processorn från oktober 2015 eller en senare processor på Oracle Fusion Middleware 10.1.3.5.
Ladda ner Patch 21845960 för UNIX eller Patch 21845962 för Windows från My Oracle Support och följ instruktionerna i Document 2051000.1, Oracle E-Business Suite Releases 11i och 12 Critical Patch Update Knowledge Document (oktober 2015).
4) – Tillämpa plattformsspecifika uppdateringar.
För AIX och HP Endast Itanium, applicera även Patch 21948197 på Oracle Fusion Middleware 10.1.3.5.
Endast för Windows, applicera även Patch 22251660 på Oracle Fusion Middle ware 10.1.3.5.
5) – Applicera patch 22447165 och 22458773 på Oracle Fusion Middleware 10.1.3.5.
6) – Applicera produktspecifika patchar.
•Oracle Workflow – Apply patch 22974534:R12.OWF.B för att lösa ett Oracle Workflow Notification Mailer-problem.
•Oracle iProcurement – ​​Applicera korrigeringarna som nämns i My Oracle Support Knowledge Document 1937220.1, Punch-out i Oracle iProcurement och Exchange misslyckas efter att leverantörswebbplatsen migrerat från SSLv3 till TLS-protokoll (med SSL Handshake SSLIOClosedOverrideGoodbyeKiss), som motsvarar lämplig applikationsversion.
•Oracle iPayment – ​​Se till att uppfylla kraven i dokument 1573912.1, Allt om Oracle Payments Release 12 Plånböcker och betalningsdatakryptering, för betalningskonfiguration . Applicera dessutom patch 22724663:R12.IBY.B.
•Oracle XML Gateway – För krav på korrigering av Oracle E-Business Suite Release 12.1, se dokument 1961140.1, Konfigurera Oracle XML Gateway för SSL/TLS-autentisering i Oracle E - Business Suite version 12.1. Applicera dessutom patch 22922530:R12.ECX.B.

Steg 1

Ställ in din miljö

  1. Logga in på programnivån som OS-användaren som äger programnivåfilerna.
  2. Källa till miljöfilen för din programnivå (APPS.env) som finns i katalogen APPL_TOP.
  3. Navigera till $INST_TOP/ora/10.1.3 och hämta filen .env för att ställa in dina 10.1.3 ORACLE_HOME-variabler.
  4. Gå till katalogen $INST_TOP/certs/Apache

skapa en värdspecifik OpenSSL-konfigurationsfil i den katalogen enligt följande

cat new.cnf[req]prompt =nodefault_md =sha256distinguished_name =dnreq_extensions =ext[dn]CN =www.example.comO =Exempel IncOU =Key TeamL =San DiegoST =CaliforniaC =US[ext]subjectAltName =DNS:www .example.com,DNS:example.com

Förklaring

[req]prompt =nej gör inte promptdefault_md =sha256 standardmeddelandesammanfattningen ska vara sha256 baseddistinguished_name =dn hämta det Distinguished Name från [dn] sectionreq_extensions =ext hämta tilläggen från [ext]-sektionen[dn]CN =www.example.com        sätt Common Name till ditt fullständiga värdnamn Kalifornien             ställ staten till staten eller provinsen eller territoriet för ditt företags huvudkontor värdnamnet för din webbplats är WWW. lägg även till domänen utan den ledande WWW. här. Annars är det bara att upprepa det vanliga namnet.

 För vårt fall skulle filen vara

cat new.cnf 
[req]
prompt =nej
default_md =sha256
distinguished_name =dn
req_extensions =ext
[dn]
CN =www.techgoeasy.com
O =techgoeasy
OU =tech
L =Los Angles
ST =Kalifornien
C =USA
[ext]
subjectAltName =DNS:www.techgoeasy.com,DNS:techgoeasy.com

  Om du kommer ihåg, liknar detta det vi använder för att göra i plånbok med SSL

Steg 2  Skapa CSR-filen för att skapa certifiering
(a) Uppdatera PATH

PATH=$<10.1.3 OH>/Apache/open_ssl/bin:$PATH

(b) Se till att LD_LIBRARY_PATH innehåller en sökväg till din Oracle Fusion Middleware 10.1.3 ORACLE_HOME/lib.

exportera LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib

(c) Kör nu följande kommando:

openssl req -newkey rsa:2048 -noder -keyout server.key -sha256 -out new.csr -config new.cnf

Skicka in csr till certifikatutfärdaren för att få certifikatet

Vi använder inte Oracle-plånbok här

Steg 3  Ta emot servercertifikat och certifikatkedjefiler från CA.

Från CA får du följande:

1)Ett CA-signerat servercertifikat

2) Certifikatet för rot-CA

3) Certifikaten för alla nödvändiga mellanliggande CA

Om du bara får en fil kan du skapa dessa filer med nedanstående metod

Skapa din certifieringsmyndighets certifikat

För att skapa ca.crt

  1. Kopiera server.crt till din PC (om nödvändigt) med någon av följande metoder:

ftp (i binärt läge) server.crt till din dator

kopiera innehållet i server.crt och klistra in i anteckningsblocket på datorn. Spara filen som server.crt

  1. Dubbelklicka på server.crt för att öppna den med Cyrpto Shell Extension.
  2. På fliken Certifieringsväg klicka på den första (översta) raden och sedan Visa certifikat.
  3. På fliken Detaljer klickar du på Kopiera till fil, detta startar exportguiden.
  4. Klicka på Nästa för att fortsätta.
  5. Välj Base64-kodad X.509 (.CER) och klicka på Nästa.
  1. Klicka på Bläddra och navigera till den katalog du väljer.
  2. Ange ca.crt som namn och klicka på ok för att exportera certifikatet.
  3. Stäng guiden.
  4. Kopiera ca.crt tillbaka till din plånbokskatalog (om nödvändigt) med någon av följande metoder:

ftp (i binärt läge) ca.crt till din plånbokskatalog för applikationsnivå. Kopiera innehållet i ca.crt och klistra in i en ny fil i din plånbokskatalog med hjälp av en textredigerare. Spara filen som ca.crt

Placera ovanstående filer i samma katalog som innehåller din privata servernyckel:server.key.

Du bör se till att servercertifikatfilen heter server.crt, rot-CA-certifikatet kallas ca.crt och att de mellanliggande certifikaten finns i en fil som heter intermediate.crt.
Om du inte har ett mellancertifikat , kör följande kommando för att skapa en tom intermediate.crt-fil

echo -n> intermediate.crt

Verifiera att din $INST_TOP/certs/Apache-katalog innehåller följande filer

server.key
new.csr
server.crt
intermediate.crt
ca.crt

Skapa en certifikatfil för OPMN som innehåller servercertifikatet och eventuellt mellanliggande certifikat genom att utföra följande:

cat server.crt intermediate.crt ca.crt> opmn.crt

Steg 4   Uppdatera kontextfilen

  Använd E-Business Suite – Oracle Applications Manager (OAM) Context Editor för att ändra de SSL-relaterade variablerna som visas i denna tabell:

SSL-relaterade variabler i kontextfilen
Variabel Icke-SSL-värde SSL-värde
s_url_protocol http https
s_local_url_protocol http https
s_webentryurlprotocol http https
s_active_webport samma som s_webport samma som s_webssl_port
s_webssl_port inte tillämpligt standard är 4443
s_https_listen_parameter inte tillämpligt samma som s_webssl_port
s_login_page url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port
s_external_url url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port
 

Steg 5 Utför ytterligare konfiguration .

Kopiera originalfilerna från /admin/template till /admin/template/custom, om den anpassade katalogen eller någon av de anpassade mallfilerna inte redan finns. Uppdatera dessa anpassade filer enligt dokumentationen nedan.

/admin/template/custom/opmn_xml_1013.tmp


Ersätt denna rad i mallen:

Med följande:

D_TOP>/admin/template/custom/httpd_conf_1013.tmp

Instruktionerna här är att kommentera en rad och lägga till en ny rad som referens mod_ssl.so. Ändra följande LoadModule ossl_module libexec/mod_ossl.soTill följande: #LoadModule ossl_module libexec/mod_ossl.soLoadModule ssl_module libexec/mod_sslDefine.>
 D_TOP>/admin/template/custom/ssl_conf_1013.tmp (för UNIX) 

Steg 1 - Kommentera följande rad i mallen:  #SSLWallet-fil:%s_web_ssl_directory%/Apache Steg 2 - Lägg till följande 3 rader i mallen:SSLCertificateFile %s_web_ssl_directory%/Apache/server.crt SSLCertificateKeyFile %s_web_directory%_web_directory /Apache/server.key SSLCertificateChainFile %s_web_ssl_directory%/Apache/intermediate.crt Steg 3 - Ersätt följande:SSLChipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM Med följande:SSLChipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM :!aNULL:!RC4:!SEED:!IDEA:!CAMELLIA:+HIGH:+MEDIUM steg 4 - Ersätt följande:SSLProtocol    -all +TLSv1 +SSLv3 Med följande:SSLProtocol all -SSLv2 -SSLv3 

Steg 6 Utför ytterligare konfiguration för att aktivera  TLS1.1 Och TLS 1.2

Följande ändring kommer att aktivera TLS 1.1- och TLS 1.2-protokollen som inte är aktiverade som standard i Java 7.

Kopiera originalfilerna som nämns i tabellen nedan från /admin/template till /admin/template/custom, om den anpassade katalogen eller någon av de anpassade mallfilerna inte redan finns. Uppdatera dessa anpassade filer enligt dokumentationen nedan.

Anpassad mallfil Ändring
/admin/template/custom/oc4j_properties_1013.tmp
/admin/template/custom/oafm_oc4j_properties_1013.tmp
/admin/template/custom/ forms_oc4j_properties_1013.tmp
(
Lägg till:

https.protocols=TLSv1,TLSv1.1,TLSv1.2

Steg 7 Uppdatera b64InternetCertificate.txt TrustStores .

Lägg till innehållet i filen ca.crt till filen b64InternetCertificate.txt som finns i katalogen 10.1.2 ORACLE_HOME/sysman/config:

$ cat ca.crt>> <10.1.2 ORACLE_HOME>/sysman/config/b64InternetCertificate.txt

Steg 8 – Uppdatera cacerts TrustStore .

Om du köpte ditt servercertifikat från en kommersiell CA, kommer du troligen inte behöva utföra detta steg eftersom rot-CA-certifikatet redan finns i cacerts. Keytool-kommandot låter dig veta om du försöker lägga till ett certifikat som redan finns i cacerts.

Följ dessa steg för att vara säker på att dessa krav är uppfyllda:

  1. Navigera till katalogen $OA_JRE_TOP/lib/security.
  2. Säkerhetskopiera den befintliga cacerts-filen.
  3. Kopiera dina ca.crt-filer till den här katalogen och utfärda följande kommando för att säkerställa att cacerts har skrivbehörighet
$ chmod u+w cacerts

Lägg till din Apache ca.crt till cacerts:

$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts

När du uppmanas, ange nyckellagringslösenordet (standardlösenordet är "changeit").

Lägg till din Apache ca.crt till cacerts:

$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts

När du uppmanas, ange nyckellagringslösenordet (standardlösenordet är "changeit").

Lägg till din Apache ca.crt till cacerts:

$ keytool -importcert -alias ApacheRootCA -file ca.crt -v -keystore cacerts

När du uppmanas, ange nyckellagringslösenordet (standardlösenordet är "changeit").

$ chmod u-w cacerts

Steg 9 – Kör Autoconfig

Autoconfig kan köras genom att använda adautocfg.sh-skriptet i katalogen Application Tier $ADMIN_SCRIPTS_HOME.

Steg 10 – Starta om Application Tier-tjänsterna

Använd adapcctl.sh-skriptet i katalogen $ADMIN_SCRIPTS_HOME för att stoppa och starta om Application Tier Apache-tjänsterna.

Steg som ska användas när du väljer SSL-terminator

Det finns inget behov av att skapa och installera certifikat på webbservern. I det här fallet behöver vi bara ställa in kontextfilsparametern som anges nedan

Ändringar när du använder en SSL-accelerator
Variabel Icke-SSL-värde SSL-värde
s_url_protocol http http
s_local_url_protocol http http
s_webentryurlprotocol http https
s_active_webport samma som s_webport värdet för SSL-acceleratorns externa gränssnittsport
s_webentryhost samma som s_webhost SSL Accelerator värdnamn
s_webentrydomin samma som s_domännamn SSL Accelerator-domännamn
s_enable_sslterminator # ta bort "#" för att använda ssl_terminator.conf i ssl-terminerade miljöer
s_login_page url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll, s_webentryhost, s_webentrydomin, s_active_webport
s_external_url url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll, s_webentryhost, s_webentrydomin, s_active_webport

Kör autokonfigurering

Autoconfig kan köras genom att använda adautocfg.sh-skriptet i katalogen Application Tier $ADMIN_SCRIPTS_HOME.

Starta om Application Tier-tjänsterna

Använd adapcctl.sh-skriptet i katalogen $ADMIN_SCRIPTS_HOME för att stoppa och starta om Application Tier Apache-tjänsterna.

Steg för end-to-end-kryptering med Pass through-konfiguration på Load Balancer

1) Alla steg som anges för en enda webbserver måste utföras.

2) Certifikatet måste skapas med lastbalanserarens namn

3)   Vi kan köra certifikatstegen på en nod och sedan kopiera alla steg till de andra noderna

Kontextvärdet ändras

SSL-relaterade variabler i kontextfilen
Variabel Icke-SSL-värde SSL-värde
s_url_protocol http https
s_local_url_protocol http https
s_webentryurlprotocol http https
s_active_webport samma som s_webport samma som s_webssl_port
s_webssl_port inte tillämpligt standard är 4443
s_https_listen_parameter inte tillämpligt samma som s_webssl_port
s_login_page url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port
s_external_url url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port

Kör autokonfigurering

Autoconfig kan köras genom att använda adautocfg.sh-skriptet i katalogen Application Tier $ADMIN_SCRIPTS_HOME.

Starta om Application Tier-tjänsterna

Använd adapcctl.sh-skriptet i katalogen $ADMIN_SCRIPTS_HOME för att stoppa och starta om Application Tier Apache-tjänsterna.

Steg för end-to-end-kryptering med kryptering/dekryptering på Load Balancer

1) Alla steg som anges för en enda webbserver måste utföras.

2) Certifikatet måste också skapas på lastbalanseringsnivå och webbnodnivå. Den måste skapas med lastbalanserarens namn på båda sidorna

3)   Vi kan utföra certifikatstegen på en webbnod och sedan kopiera alla steg till de andra noderna

4) Belastningsbalansen bör ha klientens SSL-certifikat för webbnodcertifikatet

Kontextvärdet ändras

SSL-relaterade variabler i kontextfilen
Variabel Icke-SSL-värde SSL-värde
s_url_protocol http https
s_local_url_protocol http https
s_webentryurlprotocol http https
s_active_webport samma som s_webport samma som s_webssl_port
s_webssl_port inte tillämpligt standard är 4443
s_https_listen_parameter inte tillämpligt samma som s_webssl_port
s_login_page url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port
s_external_url url konstruerad med http-protokoll och s_webport url konstruerad med https-protokoll och s_webssl_port

  Kör autokonfigurering

Autoconfig kan köras genom att använda adautocfg.sh-skriptet i katalogen Application Tier $ADMIN_SCRIPTS_HOME.

Starta om Application Tier-tjänsterna

Använd adapcctl.sh-skriptet i katalogen $ADMIN_SCRIPTS_HOME för att stoppa och starta om Application Tier Apache-tjänsterna.

Ytterligare konfiguration

Inställning av databasnivå

Oracle-produkter som Oracle Configurator, Order Management, Order Capture, Quoting, iPayment, iStore och Pricing utnyttjar databasen som en HTTP-klient. Implementeringen av TLS för Oracle Database Server (som fungerar som en klient som skickar förfrågningar till webbservern) använder Oracle Wallet Manager för att ställa in en Oracle-plånbok.

För att aktivera HTTPS-klientbegäran från databasen med UTL_HTTP måste du upprätta en truststore i plånboksformat. Du behöver inget servercertifikat för den här plånboken. Du behöver bara importera rot-CA-certifikatet för de rot-CA som är förtroendeankare för de webbplatser som du behöver UTL_HTTP för att ansluta till.

  1. När du har ställt in din miljö för databasnivån, navigera till $ORACLE_HOME/appsutil katalogen.
  2. Skapa en ny plånbokskatalog med namnet plånbok.
  3. Navigera till den nyskapade plånbokskatalogen.
  4. Öppna Oracle Wallet Manager som en bakgrundsprocess.
owm &
  1. I Oracle Wallet Manager-menyn, navigera till PlånbokNy .
    Svara NEJ på:Din standardplånbokskatalog finns inte. Vill du skapa den nu? Den nya plånboksskärmen kommer nu att uppmana dig att ange ett lösenord för din plånbok. Klicka på NEJ när du uppmanas:En ny tom plånbok har skapats. Vill du skapa en certifikatbegäran just nu?
  2. Om du behöver importera ca.crt, på Oracle Wallet Manager-menyn navigerar du till OperationsImportera pålitligt certifikat . Klicka på OK . Dubbelklicka på ca.crt för att importera den.
  3. Spara plånboken:På Oracle Wallet Manager-menyn klickar du på Plånbok . Verifiera   Automatisk inloggning kryssrutan är markerad. Klicka på Spara .

För att testa att plånboken är korrekt inställd och tillgänglig loggar du in på SQLPLUS som appanvändare och utför följande:

SQL>välj utl_http.request('[adress för åtkomst]', '[proxyadress]', 'fil:[fullständig sökväg till plånbokskatalog]', null) från dual;

där:
‘[adress för åtkomst]’ =URL:en för din Oracle E-Business Suite Rapid Install Portal.
‘[proxyadress] ' =URL:en till din proxyserver, eller NULL om du inte använder en proxyserver.
'fil:[fullständig sökväg till plånbokskatalog]'  =platsen för din plånbokskatalog (ange inte de faktiska plånboksfilerna).

Den sista parametern är plånbokslösenordet, som är inställt på null som standard.

Exempel:

SQL>välj utl_http.request('https://www.oracle.com/robots.txt','http://www-proxy.com:80', 'file:/d1/oracle/db/ tech_st/12.1.0/appsutil/wallet', null) från dual;
SQL>välj utl_http.request('https://www.oracle.com/robots.txt',null, 'file:/d1 /oracle/db/tech_st/12.1.0/appsutil/wallet', null) från dual;

Om plånboken har ställts in på rätt sätt kommer du att få tillbaka de första 2 000 tecknen på HTML-sidan.

 

Relaterade  länkar

Aktivera SSL eller TLS i Oracle E-Business Suite Release 12 (dok. ID 2143099.1)
Hur hittar du R12-komponenter Version
40 Adpatch-fråga som varje DBA bör känna till
awk-kommando
Keytool-kommando


  1. Mysql-täckning vs sammansatt vs kolumnindex

  2. SQL - Kombinera flera liknande frågor

  3. postgresql duplicate key bryter mot unik begränsning

  4. Använd Firebase DB med lokal DB