Sichere Forms-Anwendungen mit dem Java Plug-In und Zertifikaten Wolfgang Weigend / Jürgen Menge Sales Consulting Oracle Deutschland B.V. & Co. KG
Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
Agenda 1 2 3 4 5 Java Security Grundlagen Signierung und Zertifikate für Java Web Start und Applets Besonderheiten von Oracle Forms-Anwendungen Oracle Forms 12c Neue Features Weitere Informationen
Wichtige Begriffe und Zusammenhänge Signierung von Java Web Start-Applikationen und Applets (RIA) Nachweis der Herkunft von Programmcode durch den Public Key des Signierers Signierung von JAR-Dateien mit dem Tool jarsigner und dem eigenen private Key Zertifikate erforderlich, um die Gültigkeit der Schlüssel zu verifizieren Zertifikate einer Certification Authority (CA) oder selbst erstellte Zertifikate (self-signed) server- oder client-seitige Zertifikate auch für SSL-Verbindungen notwendig (SSL Cer?ficate Code Signing Cer?ficate) Zertifikatskette (Certificate Chain) Hierarchie von Public Key-Zertifikaten vom Public Key des Signierers bis zur Root CA Zertifikat zeigt an, wer der Eigentümer des jeweiligen Public Key ist Zertifikat der Root CA ist self-signed
Warum ist eine Signierung erforderlich? Die Signatur erlaubt das Rückverfolgen zum Autor einer Applikation. Die Tatsache, dass hinter der Applikation ein überprüfbares Individuum oder Unternehmen steht, erlaubt eine fundierte Entscheidung, ob man die Applikation startet. Nach erfolgreicher Überprüfung einer Signatur werden die Rechte (Permissions) entsprechend der festgelegten Security Policy gesetzt. Die Notwendigkeit, sich ein Zertifikation zu besorgen und die zusätzliche Bestätigung verringern das Risiko, dass Java für unzulässige Attacken missbraucht wird. Im Falle von Sicherheitslücken kann Oracle innerhalb von 24 Stunden die Applikation sperren, indem die signierte JAR-Datei oder das Zertifikat auf die Blacklist gesetzt werden.
Java Versionen - Wichtige Meilensteine Java 7 Update 21 (April 2013) Signierung für alle Java Web Start-Applikationen und Applets empfohlen Signierung ist nicht mehr gleichbedeutend mit privilegierter Ausführung sandbox all-permissions
Java Versionen - Wichtige Meilensteine Java 7 Update 25 (Juni 2013) alle Dateien müssen vor dem Signieren in JAR-Datei zusammengefasst sein Neues Attribut permissions JNLP: Festlegung der Berechtigungen im Deployment Descriptor Applets: Alle Berechtigungen (Default) oder Einschränkung durch <param name="permissions" value="sandbox" /> Neues Attribut codebase Hinweis auf den Speicherort des Codes
Java Versionen - Wichtige Meilensteine Java 7 Update 51 (Januar 2014) Setzen des Attributs permissions ist zwingend erforderlich Setzen eines Zeitstempels beim Signieren wird empfohlen Warnung beim Signieren, wenn Zeitstempel fehlt
Deployment Rule Sets (DRS) ab Java 1.7.0_40 verfügbar können ältere Versionen bis Java 1.6.0_10 steuern Unternehmen mit direkter Kontrolle über die Desktop Clients Features Whitelists bekannter Applikationen (Unterdrückung von Security Alerts) Sequentielle Überprüfung der Regeln (XML) und Ausführen definierter Aktionen... Ausführung von Applikationen mit einer bestimmten Java-Version in Abhängigkeit von bestimmten Regeln Internet-Applikationen mit der neuesten, sicheren Java-Version Unternehmens-Applikationen mit einer getesteten, älteren Java-Version
Deployment Rule Sets (DRS) Die Regeln werden in einer XML-Datei definiert (ruleset.xml). Die Datei ruleset.xmlmuss in der JAR-Datei DeploymentRuleSet.jarenthalten sein. Die JAR-Datei muss signiert sein. Die signierte JAR-Datei muss auf jedem Desktop in einem sicheren Verzeichnis installiert werden. deployment.system.home>/deploymentruleset.jar DeploymentRuleSet.jarmit ungültigen Zertifikaten (abgelaufen, zurückgezogen, blacklisted) führt zu Blockierung aller Applikationen. Dokumentation http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_rules.html
Deployment-Prozess für RIA-Applikationen (1)
Deployment-Prozess für RIA-Applikationen (3) http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_flow.html
Agenda 1 2 3 4 5 Java Security Grundlagen Signierung und Zertifikate für Java Web Start und Applets Besonderheiten von Oracle Forms-Anwendungen Oracle Forms 12c Neue Features Weitere Informationen
Wie fordere ich ein Zertifikat an? 1) Generieren eines RSA Keypairs mit dem keytool keytool -genkey -keyalg rsa -alias MyCert 2) Certificate Request mit dem keytoolerzeugen und Output in die Webform der CA kopieren keytool -certreq -alias MyCert 3) Importieren des Zertifikats, das von der CA zurückgeschickt wurde keytool -import -alias MyCert -file Example.cer 4) Verwendung des Tools jarsigner zum Signieren der JAR-Dateien https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/certificates.html
Wie signiere ich eine JAR-Datei? 1) Signieren der JAR-Datei mit dem Tool jarsigner jarsigner C:\TestApplet.jar MyCert 2) Überprüfen der JAR-Datei jarsigner -verify -verbose -certs d:\testapplet.jar Dateien unter \META-INF, die durch das Signieren erzeugt werden Manifest-Files (.mf) mit Digest Entries pro Datei Signature-Files (.sf) im jar-file mit Digest Entries pro Datei und für das Manifest Signature Block File mit digitaler Signatur (Private Key) und Certificate https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html
Self-signed Zertifikate 1) Erzeugen eines Public Certificate keytool -export -keystore examplestore -alias MyCert -file Example.cer 2) Importieren des Zertifikats keytool -import -alias MyCert -file Example.cer Besonderheiten Für Entwicklungsumgebungen und im Intranet (Vertrauensbasis!) Müssen vom Benutzer importiert werden Verteilung per Push möglich Können zur Laufzeit abgelehnt werden (Security Slider = High) https://blogs.oracle.com/java-platform-group/entry/self_signed_certificates_for_a
Keystores Container für Zertifikate (Public Keys) Zertifikate des Benutzers (Default Passwort: leerer String) Win: %USER_HOME%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs Linux: $USER_HOME/.java/deployment/security Systemweite Zertifikate (Default Passwort: changeit) Win: C:\Program Files\Java\jre8\lib\security\cacerts Linux: $JAVA_HOME/lib/security/cacerts
Keystores Werkzeuge Java Control Panel portecle.jar KeyStore Explorer
OCSP Online Certificate Status Protocol Zertifikate können ungültig sein und würden Fehler provozieren Netzwerk-Protokoll zur Abfrage des Status eines Zertifikats durch einen Client Status kann bei einem Server (OCSP Responder) angefragt werden OCSP Responder wird i. allg. vom Herausgeber des Zertifikats betrieben Unterstützung durch Tools des jeweiligen Betriebssystems (z.b. openssl) Verifizierung nur Online Antworten good revoked unknown
Empfehlungen JAR-Dateien mit Zeitstempel signieren Kompromitierte Zertifikate aus dem Keystore entfernen Unterschiedliche Versionen für 32-und 64-bit bei Browser und Java beachten jarsigner des jeweiligen JDK verwenden ggf. Rechte der Datei../<jre >/lib/security/cacerts erweitern
Agenda 1 2 3 4 5 Java Security Grundlagen Signierung und Zertifikate für Java Web Start und Applets Besonderheiten von Oracle Forms-Anwendungen Oracle Forms 12c Neue Features Weitere Informationen
Zertifikate für Oracle Forms-Anwendungen Oracle liefert mit dem Produkt die notwendigen Zertifikate für das Applet und weitere Bibliotheken aus (frmall.jar, frmwebutil.jar,...) Für Produkt-Versionen, die bereits aus dem Premier Support gelaufen sind, werden keine gültigen Zertifikate des Herstellers mehr ausgeliefert. Für eigene oder angepasste Bibliotheken sowie aus dem Support gelaufene Produktversionen muss der Anwender die notwendigen Zertifikate selbst hinzufügen. jacob.jar muss vom Anwender signiert werden Beispiel-Script sign_webutil.sh/.bat zum Signieren eigener JAR-Dateien (VALIDDAYS=360)
Zertifikate für eigene Bibliotheken Um Warnungen zu vermeiden müssen folgende Schritte ausgeführt werden Zertifikat einer Trusted CA hinzufügen oder Self-signed Zertifikat erzeugen und in der client-seitigen JRE als Trusted Certificate registrieren Export des Zertifikats aus dem Keystore und Import in die client-seitige JRE (Note 1596871.1) Attribut Permissions dem Manifest hinzufügen (Note 1583119.1) Erzeugen einer Textdatei mit dem Attribut Permissions Hinzufügen der Textdatei zur JAR-Datei https://blogs.oracle.com/proactivesupportdevtools/entry/a_closer_look_into_jre
Support Notes zu Zertifikaten/Signierung in Oracle Forms (1) Note 68704.1 JAR Files Explained Note 1542463.1 Jar File Code Signing Changes Related to JRE 1.7.0_21 or Higher and the Impact on Oracle Forms Related Self-Signed Jar Files (sign_webutil.sh or sign_webutil.bat) Note 2065434.1 Note 1596871.1 Note 760815.1 Jar File Signing for Forms Addressing JRE Java Security Warnings such as Do you want to run this application?", "Application Blocked by Java Security","Running this application may be a security risk", etc How to Export and Import the Product Management Certificate Created from the sign_webutil Script How to Re-sign Expired.jar Files (Jacob, Icons,...) and Extend the Self Signing Certificate
Support Notes zu Zertifikaten/Signierung in Oracle Forms (2) Note 1268757.1 How to Determine the Expiration Date of a Jar File Using the Java Keytool Command Note 1583119.1 Note 469126.1 Note 1076945.1 Note 1308213.1 Note 469126.1 How to Add Manifest Entries into Custom Jar Files Such as jacob.jar or Jar Files Containing Icons How To Repackage Sun JPI/JRE And Include Oracle Forms Signature (Certificate) Signing.jar Files for 11g / SIGN_WEBUTIL.BAT Command Results in Error "The Syntax of the Command is Incorrect" Forms 11g JAR Files Expiration How To Repackage Sun JPI/JRE And Include Oracle Forms Signature (Certificate)
Forms Runtime Blockaden und Sicherheits-Warnungen Note 2065434.1 Optionen, um Warnungen zu vermeiden Signieren des Java Codes mit einen Zertifikat einer CA Verwenden eines Deployment Rule Sets (DRS) Signieren des Codes mit einem selbst signierten Zertifikat Verwenden der JRE Exception Site List Ermöglicht das Ausführen, verhindert aber nicht die Warnungen
Agenda 1 2 3 4 5 Java Security Grundlagen Signierung und Zertifikate für Java Web Start und Applets Besonderheiten von Oracle Forms-Anwendungen Oracle Forms 12c Neue Features Weitere Informationen
Oracle Forms/Reports Aktueller Status Oracle Forms 11g, Release 2 Forms 11.1.2.1 www.oracle.com/technetwork/developer-tools/forms/oracle-forms-111210certmatrix-1886127.xls Sowohl Vollversion als auch Patch für 11.1.2.0 (Patch ID:15948641) Java Client: 1.6.0_35+, 1.7.0_07+ Forms 11.1.2.2 www.oracle.com/technetwork/es/middleware/docs/oracle-forms-111220certmatrix-2087910.xls Sowohl Vollversion als auch Patch für 11.1.2.x (Patch ID:17882900) Java Client: 1.6.0_35+, 1.7.0_40+, 1.8.0_05+ Oracle Forms 12c Forms 12.2.1 www.oracle.com/technetwork/middleware/fusion-middleware/documentation/fmw-1221certmatrix-2739738.xlsx Browser: IE, Chrome (nur Web Start), Firefox, Safari Java Client: 1.7.0_55+1.8.0_51+
Oracle Forms 12.2.1 Neue Features Native Integration des Oracle BI Publisher Neue Optionen für das Client Deployment Zusätzliche Applet-Parameter Verbesserungen im Forms Builder Option zur Installation des Forms Builders ohne Runtime...
Oracle Forms 12.2.1 Optionen für das Client Deployment Applet embedded in HTML SSO, SSO Logout und JavaScript-Integration erfordert Java Plug-In und Browser JNLP embedded in HTML SSO, SSO Logout und JavaScript-Integration erfordert Java Plug-In und Browser JNLP Code im HTML Source Code Java Web Start SSO (wenn im Browser initiiert) kein Support für SSO Logout und JavaScript- Integration erfordert entweder JDK oder Java Plug-In Standalone kein Support für SSO, SSO Logout und JavaScript-Integration erfordert entweder JDK oder Java Plug-In kein Browser erforderlich Forms Standalone Launcher (FSAL) 3
Agenda 1 2 3 4 5 Java Security Grundlagen Signierung und Zertifikate für Java Web Start und Applets Besonderheiten von Oracle Forms-Anwendungen Oracle Forms 12c Neue Features Weitere Informationen
Weitere Informationen (1) Produktinformationen www.oracle.com/technetwork/developer-tools/forms/overview/index-098877.html www.oracle.com/java Dokumentation Java Release Notes (zu jedem aktuellen Release) www.oracle.com/technetwork/java/javase/tech/java-code-signing-1915323.html docs.oracle.com/javase/8/docs/technotes/guides/deploy/certificates.html www.oracle.com/technetwork/topics/security/alerts-086861.html docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_rules.html
Weitere Informationen (2) Oracle Support www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html Note 794710.1: Using The Java Plug-in (JRE/JPI) With Oracle Forms FAQ Blogs blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets blogs.oracle.com/java-platform-group/entry/deployment_rule_set_by_example blogs.oracle.com/java-platform-group/entry/self_signed_certificates_for_a blogs.oracle.com/proactivesupportdevtools/entry/a_closer_look_into_jre blogs.oracle.com/java-platform-group/entry/when_is_the_next_java
Fragen & Antworten Wolfgang Weigend wolfgang.weigend@oracle.com Jürgen Menge juergen.menge@oracle.com