Enterprise Manager: Ungültiges Zertifikat kann in Firefox nicht mehr akzeptiert werden

Vor einigen Tagen hat Mozilla den Firefox-Browser auf die Version 31 angehoben.
Seither ging bei mir die Verbindung zum Grid Control mit Firefox nicht mehr, Mit Chrom[e|ium] hingegen schon. Zumindest ist es in Chrome noch möglich, die Warnung vor dem nicht vertrauenswürdigen Zertifikat zu überspringen.

Mein deutschsprachiger Firefox meldet folgenden Fehler:

Fehler: Gesicherte Verbindung fehlgeschlagen

Ein Fehler ist während einer Verbindung mit xxxxxxxxxxxx aufgetreten.

Das Aussteller-Zertifikat ist ungültig.

(Fehlercode: sec_error_ca_cert_invalid)

Da bislang im Netz noch wenig Ergebnisse hierzu zu finden sind (jedenfalls bei den Suchbegriffen, die mir spontan einfielen), beschreibe ich hier kurz eine mögliche Lösung, wie sie auch in der Oracle Note 1912289.1 zu finden ist:

  1. In der Adressleiste “about:config” eingeben.
  2. Die Warnung mit dem Button akzeptieren.
  3. In der Suchleiste “security.use_mozillapkix_verification” eingeben.
  4. Doppelklick auf die Ergebniszeile stellt den Wert dieses Parameters von “true” auf “false” um.
  5. Enterprise Manager erneut aufrufen.

Hintergrund

Mozilla hat mit Firefox 31 die neue Library “mozilla::pkix” zum Check der SSL-Zertifikate eingeführt. Diese Library stuft aber offensichtlich alle selbst signierten Zertifikate als “nicht vertrauenswürdig” ein und gestattet kein manuelles Übergehen. Dies ist als Bug 1042889 bei Mozilla in Bearbeitung.

Normalerweise wird bei der Installation des OEM ein SSL-Zertifikat automatisch generiert und eben auch selbst (durch den Installer) signiert. Genau das bereitet der neuen Library aber derzeit Probleme.

Das Abschalten der neuen Library ist natürlich keine schöne Lösung und sollte wieder rückgängig gemacht werden, wenn der Bug behoben ist. Alternativ könnte man auch ein Zertifikat einer vertrauenswürdigen CA (kaufen und) importieren. Wie das geht, ist in der Oracle Note 1367988.1 beschrieben.

SYSDATE in SQL und PL/SQL

Heute fühle ich mich genötigt, ein Thema anzusprechen, das zwar ein Grundlagenthema ist, das aber immer wieder gerne in Vergessenheit gerät. ;-)

Anlass ist ein Fund in einer Produktionsumgebung, in der eine Überlastung der CPU bei sehr hoher Anzahl an SQL-Ausführungen zu beobachten war. Die Umgebung basiert sehr stark auf PL/SQL, wobei häufig verwendete SQL-Abfragen gerne in einer Function gekapselt und dann aus SQL heraus aufgerufen werden. Weiterlesen

PL/SQL Injection in Oracle 12c

David Litchfield, der bereits andere Injection-Lücken in Oracle gefunden hatte (s. meine anderen Artikel der Kategorie “Sicherheit”), hat wieder zugeschlagen und eine Injection-Methode unter 12c aufgedeckt:
http://www.davidlitchfield.com/Exploiting_PLSQL_Injection_on_Oracle_12c.pdf

Sehr kurze Zusammenfassung des Dokuments:

  • Ein User mit Execute-Recht auf DBMS_SQL und DBMS_JAVA_TEST kann damit SQL Injections durchführen.
  • Der Entzug von Execute auf DBMS_JAVA_TEST und DBMS_JAVA wirkt dem entgegen.
  • Wenn Java in der DB nicht benötigt wird, sollten diese Packages gleich ganz deinstalliert werden, um die Angriffsfläche zu verringern.

Oracle 12c / Java7: setEndToEndMetrics() deprecated

Dies ist eine kurze Aktualisierung zu meinem früheren Artikel “DBMS_SESSION: Anwender und Sessions mehrschichtiger Anwendungen in der DB identifizieren“, der sich auf Oracle 11.2 nebst der damals unterstützten JDBC-Version bezog.

Die Oracle 12c JDBC-Treiber unterstützen JDBC 4.1 über das JDK 7 und damit auch die JDBC DMS Metrics, wenn entsprechende Treiber-Packages (z.B. ojdbc7dms.jar) verwendet werden. Die in meinem damaligen Beispiel verwendete Methode setEndToEndMetrics schließt allerdings die wechselseitige Verwendung mit DMS-Methoden aus. Daher empfiehlt es sich auf die neue Methode setClientInfo umzustellen. Ein Codefragment mit der neuen Methode kann dann so aussehen:

...
Connection conn = DriverManager.getConnection(myUrl, myUsername, myPassword);
conn.setClientInfo("E2E_CONTEXT.DBOP", "MeinTag");
Statement stmt = conn.createStatement();
// DBOP-Tag wird mit dem naechsten DB-Aufruf gesetzt:
stmt.execute("select 1 from dual");
...

Dem Nachteil, dass schon wieder eine andere Methode als bisher verwendet werden soll, steht der Vorteil gegenüber, dass man sich mit DMS Metrics in einem standardisierten Umfeld bewegt und auch nicht mehr zwingend eine OracleConnection verwenden muss; eine einfache Connection reicht aus.

WITH-Clause Reloaded: Hierarchie und Rekursion

Vor ein paar Jahren hatte ich schon einmal über die “WITH-Klausel” geschrieben, als sie noch ein relativ unbekanntes SQL-Feature war.

Mittlerweile hat sich auch die Oracle-Welt weiter gedreht, und es sind neue Möglichkeiten seit 11g hinzugekommen — z.T. Features, die mit dem ISO-Standard SQL1999 schon etwa 10 Jahre zuvor verabschiedet wurden.

Zeit also, sich einmal wieder mit der Syntax der WITH-Clause zu beschäftigen und sie mit Oracles bisherigen, proprietären Lösungen zu vergleichen!

Weiterlesen

sqlplus, ezconnect, ORA-12504 und kein Passwort

Aus der Kategorie “Heute dazugelernt”: Beim Versuch, mittels EZCONNECT (s. “Easy Connect Naming Method“) unter Verwendung eines Wallets eine Verbindung aufzubauen (um kein Passwort auf der Kommandozeile/im Script zu hinterlassen), wurde das stets mit einem “ORA-12504″ quittiert.

[oracle@myorabox bin]$ sqlplus scott@localhost/orcl

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 24 16:19:14 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

Seltsam — der Service “orcl” ist doch angegeben?! Werfen wir mal einen Blick ins listener.log:

(CONNECT_DATA=(SERVICE_NAME=)(CID=(PROGRAM=sqlplus)(HOST=myorabox)(USER=oracle))) * establish * 12504

Tatsache — der “SERVICE_NAME” ist leer.

Interessanterweise findet sich bei MOS nichts dazu, aber Mark Williams hat das Problem schon mal gelöst und netterweise gebloggt! Offenbar “verheddert” sich SQL*Plus am fehlenden “/” vor dem nicht übergebenen Passwort; Wird der Connect String jedoch in Anführungszeichen gesetzt, dann geht’s!

sqlplus scott@\"localhost/orcl\"

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 24 16:31:38 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

Hyperthreading in HP-UX aktivieren

Jan Karremans aus den Niederlanden erwähnte kürzlich in seinem Blog-Artikel “Can you boost your Oracle database performance on HP-UX for free?” ein Szenario, das auch mir schon untergekommen ist:

Wenn Hyperthreading in HP-UX (ia64) nicht aktiviert ist, zeigt sich das z.B. in “top” daran, dass die Numerierung der CPUs nicht fortlaufend sondern unterbrochen ist.

Da Oracle vom Hyperthreading profitiert, ist es sinnvoll es anzuschalten. Dies geht durch den Kernel-Parameter lcpu_attr, der per Default auf 0 steht, aber dynamisch geändert werden kann. Dazu sollten die Datenbanken auf dem betroffenen Server zuvor heruntergefahren werden.

Weitere Details im Original-Artikel (Englisch)