Oracle weblogic 12.2.1.3.0 Oracle Report Server / Windows 2016
Aufgabe:
Der Aufruf von Oracle Reports Berichten soll mit SSL geschützt werden und per HTTPS ohne Port Angabe aufrufbar sein.
Ablauf falls noch kein SSL konfiguriert wurde:
In meiner Umgebung traten diverse Probleme in deren Folgen mit der folgenden Lösung ein Erfolg erzielt wurde.
Vermutlich kann das aber auch viel einfacher umgesetzt werden.
In ersten Schritte wurde versucht ein WildCard Zertifikat zu verwenden, allerdings ist mir nicht gelungen den Private Key von diesem Zertifikat in den Keystore zu importieren
In Folge daher einen Zertifikatsrequest über die Oberfläche erstellt und bearbeitet und dann diese erzeugen Keystore aus WebLogic exportiert, diesen dann wiederum in die Konfiguration eingebunden.
In den Trust Store beide Zertifikate ( das Root CA Zertifikat und das signierte Server Zertifikat). Evlt. reicht aber auch schon nur das Server Zertifikat.
Theoretisch müsste dieser Schritt überflüssig sein, allerdings ist mir nicht gelungen direkt den erzeugten Keystore aus der Weblogic Oberfläche anzusprechen.
Was haben wir:
Menü /Domain_ReportSPA/ReportSPA > Keystore - Im „demoidentity Keystore“ anmelden
Bzgl. Passwärter siehe „What are the Default Passwords for Demo Identity and Demo Trust Keystores (Doc ID 2886289.1)“
Ablauf:
Steps To Clear This Waning Message On WIndows OS 1. Use the keytool command to create a JKS file that contains the custom CA key and certificate. For example: 2. Open command terminal, set WLST_EXT_CLASSPATH 3. Connect to the admin server with WLST 4. Import the JKS file into the KSS keystore kss://system/castore 5. Export the certificate from kss://system/castore, and import it into kss://system/trust 6. Add the following property to the jps-config.xml and jps-config-jse.xml files in /Domain/config/fmwconfig 7. Restart all the servers when above actions are done
Siehe die Details im Dokument hinter unter „Replace The Demonstration CA With A Custom CA Immediately (Doc ID 2313313.1)“
Leider aktuelle keine Testumgebung mehr die frisch genug ist um das so zu testen.
siehe auch
Verzeichniss für den Keystore anlegen:
mkdir E:\oracle\keystore
An der Admin Oberfläche anmelden.
Über „Weblogic Domain“ / „Securtiy“ / „Keysore“ die Key Store Seite öffnen.
Über den Button „+Create Keystore“ einen neue Keystore anlegen:
Komando Zeile aufrufen:
E:\oracle\fmw\oracle_common\common\bin> .\wlst.cmd wls:/offline> wls:/offline> connect('weblogic','xxxxxxx','localhost:7001') Connecting to t3://localhost:7001 with userid weblogic ... wls:/ReportPisa/serverConfig/> svc = getOpssService(name='KeyStoreService') wls:/ReportPisa/domainRuntime/> svc.exportKeyStore(appStripe='system', name='reportServer', password='xxxxxxxx',aliases='repServ.gpi.local', keypasswords='xxxxxx', type='JKS',filepath='E:\oracle\keystore\identity.jks') Keystore exported. Check the logs if any entry was skipped. wls:/ReportPisa/domainRuntime/> exit()
Inhalt anzeigen lassen:
cd E:\oracle\fmw\oracle_common\common\bin keytool.exe -list -keystore E:\oracle\keystore\identity.jks -storepass gpiKeyStorePWD Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry repServ.gpi.local, 06.10.2020, PrivateKeyEntry, Certificate fingerprint (SHA1): xx:xx: .... xx
Im ersten Schritt in der trust.jks
keytool.exe -import -v -trustcacerts -alias repServer.gpi.local -file "E:\oracle\keystore\gpi-rootCA.der" -keystore E:\oracle\keystore\trust.jks -storepass gpiKeyStorePWD -noprompt Certificate was added to keystore [Storing E:\oracle\keystore\trust.jks]
Im zweiten Schritt in der identity.jks
keytool.exe -import -v -trustcacerts -alias CA01-intern.gpi.local -file "E:\oracle\keystore\rootCA02.der" -keystore E:\oracle\keystore\identity.jks -storepass gpiKeyStorePWD -noprompt Certificate was added to keystore [Storing E:\oracle\keystore\identity.jks]
In einem Weblogic Cluster die erzeugten Dateien auf allen Knoten verteilen!
Auslesen mit:
keytool.exe -list -keystore E:\oracle\keystore\identity.jks -storepass gpiKeyStorePWD
Falsches Zertifikat löschen:
keytool -delete -alias srvgpirp01.pipperr.local -keystore E:\oracle\keystore\identity.jks -storepass gpiKeyStorePWD
Alias anpassen:
keytool.exe -changealias -alias "te-gpirp01_sha2-809a34dc-6999-4a7a-805c-6d8fcdf35359" -destalias "srvgpirp01.pipperr.local" -keypass gpiKeyStorePWD -keystore E:\oracle\keystore\identity.jks -storepass gpiKeyStorePWD
Komplettes Zertifikat aus einer Windows CA (inkl. Privat Key):
keytool -importkeystore -deststorepass gpiKeyStorePWD -destkeystore E:\oracle\keystore\identity.jks -srckeystore E:\oracle\keystore\gpipkcs12.pfx -srcstoretype PKCS12
Für jeden definierten Server in der Domain.
In der Admin Oberfläche den WLS_REPORTS Server ausswählen.
„Home“ / „Administration“ / „Keystores“ einen eigenen Key Store definieren.
Trust hinterlegen:
Gleiches für den Admin Server
Datei E:\oracle\fmw\user_projects\domains\ReportGPI\config\config.xml öffnen und prüfen das die Einträge sinnvoll aussehen bei WLS_REPORTS und bei AdminServer :
.. <key-stores>CustomIdentityAndCustomTrust</key-stores> <custom-identity-key-store-file-name>E:\oracle\keystore\identity.jks</custom-identity-key-store-file-name> <custom-identity-key-store-type>JKS</custom-identity-key-store-type> <custom-trust-key-store-file-name>E:\oracle\keystore\trust.jks</custom-trust-key-store-file-name> <custom-trust-key-store-type>JKS</custom-trust-key-store-type> <custom-trust-key-store-pass-phrase-encrypted>{AES}xxxxxxxxxxxxxxxxxxxxxxxx=</custom-trust-key-store-pass-phrase-encrypted> ..
Aus mir nicht nachvollziebaren Gründen stand bei mir regelmäßig das Password als custom-identity-key-store-type!
Daher die Datei genau prüfen!
Wenn über den Service gestartet wird, darauf achten das der Service „Log on“ Account auf den Eigentümer des Weblogic steht!
Managed Server neu starten
Testen über https://repServer.gpi.local/reports/rwservlet/showenv
Datei „E:\oracle\fmw\user_projects\domains\ReportGPI\nodemanager\nodemanager.properties“ edititeren
KeyStores=CustomIdentityAndCustomTrust CustomIdentityKeystoreType=jks CustomIdentityKeyStoreFileName=E\:\\oracle\\keystore\\identity.jks CustomIdentityKeyStorePassPhrase=xxxxxxxxxx CustomIdentityPrivateKeyPassPhrase=xxxxxxx CustomIdentityAlias=repServer.gpi.local CustomTrustKeystoreType=jks CustomTrustKeyStoreFileName=E\:\\oracle\\keystore\\trust.jks CustomTrustKeyStorePassPhrase=
Neu starten
Parameter um das Logging für SSL zu aktiveren:
E:\oracle\fmw\user_projects\domains\ReportGPI\bin\startWebLogic.cmd
# Zeile 94 zu set JAVA_OPTIONS hinzufügen -Dweblogic.debug.DebugSecuritySSL=true -Dweblogic.debug.DebugSSL=true -Dweblogic.StdoutDebugEnabled=true -Dweblogic.log.StdoutSeverityLevel=Debug -Dweblogic.log.LogSeverity=Debug
Darauf achten das in der Test Session die ORACLE_HOME Variabe auf des FWM Home gesetzt ist! Sonst funktioniert der Report Server nicht!
Stoppen der Weblogic Dienste über den Dienst und alle manuel starten:
In Console 1 Node Manager, warten bis der Läuft:
.\setDomainEnv.cmd .\startNodeManager.cmd
In Console 2 Admin Server
cd E:\oracle\fmw\user_projects\domains\ReportPisa\bin
.\setDomainEnv.cmd
.\startWebLogic.cmd
In Console 3 Report Instance
cd E:\oracle\fmw\user_projects\domains\ReportPisa\bin .\setDomainEnv.cmd .\startManagedWebLogic.cmd WLS_REPORTS t3://srpt12.s-akaby.local:7001
Nach dem Test Optionen wieder deaktivieren!
Beim start des Nodemanager:
.\startNodeManager.cmd .. weblogic.security.internal.encryption.EncryptionServiceException: com.rsa.jsafe.JSAFE_PaddingException: Invalid padding. at weblogic.security.internal.encryption.JSafeEncryptionServiceImpl.decryptBytes(JSafeEncryptionServiceImpl.java:144) ..
⇒ Nodemanager Fails To Start In SSL Mode With „weblogic.security.internal.encryption.EncryptionServiceException: com.rsa.jsafe.JSAFE_PaddingException: Invalid padding“ (Doc ID 2711124.1)
Passworte in der E:\oracle\fmw\user_projects\domains\ReportPisa\nodemanager\nodemanager.properties neu setzen!
Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier, hostname=localhost.
Unter Advanced SSL Settings die Hostname Auflösung auf NONE stellen (siehe Konfiguration weiter oben!).
In dieser Umgebung wird der Report Aufruf über eine Hauseigene Applikation „getunnelt“, da der Aufruf nun in SSL erfolgt muss in Tomcat auch das Root CA Zertifikat hinterlegt werden.
CA Zertifikat hinterlegen auf einem Keystore mit keinem hinterlegten Passwort „Dummy -storepass „changeit“ übergeben!“ mit:
keytool -import -noprompt -trustcacerts -alias repServer.gpi.local -file ""E:\oracle\keystore\gpi-rootCA.der" -keystore "E:\server\jdk1.8.0_161\jre\lib\security\cacerts" -storepass "changeit"
Web:
Support Node:
Problembehandlung: