Bei einem Kunden sollen die ODAs nicht aufs Internet zugreifen dürfen (sagt der Netzwerker), ASR soll aber aktiviert sein (sagt der DBA). Hier haben wir einen einfachen Kompromiss gefunden: Auf einem dedizierten System läuft ein ASR-Manager und die ODAs sprechen mit diese statt direkt mit Oracle (Über Sinn&Unsinn soll hier keine Diskussion stattfinden, es ist einfach so 😉 )
In früheren Releasen war das relativ simpel: Einfach der ODA beim konfigurieren des ASR die IP oder den Hostname des externen ASRmanagers mitgeben und fertig. Aber Oracle hat sich da was neues überlegt, Grund genug es mir mal wieder hin wegzuschreiben
Als ersten müssen die nötigen Pakete installiert werden:
dnf install java-latest-openjdk.x86_64 unzip
Dann kann aus Metalink/MOS Patch 36473896 heruntergeladen werden. Das ist einfach nur das asrmanager.rpm, das mit „rpm -Uvh asrmanager-24.1.0-20240313100109.rpm“ einfach installiert werden kann. Über den Wizard werden ein paar Einstellungen abgefragt und dann laufen auch schon die Prozesse. Im Anschluss muss dieser ASRmanager noch bei Oracle registriert werden, hier einfach dieses Kommando ausführen:
/opt/asrmanager/bin/asr register
Entsprechende Fragen zu Proxy und Username/Password müssen in dem Wizard beantwortet werden, am Ende sollte dies auf dem Bildschirm zu sehen sein:
Checking connection to https://transport.oracle.com/v1/
Connection is ok. Trying to register client.
Successfully registered with Oracle ASR Infrastructure.
Registration complete.
Successfully submitted ASR Registration Request.
Nun muss der HTTPS-Dienst konfiguriert werden, auch das ist relativ simpel:
/opt/asrmanager/bin/asr https_config
Auch hier werden wieder ein paar Fragen gestellt, die Meisten können aber auf dem Default belassen werden. Nur der Alias muss definiert werden (Ich habe einfach „asr“ genommen) und die Frage nach Vor- und Nachnamen (What is your first and last name?) sollte wahrheitsgemäß mit der IP des ASRmanagers beantwortet werden
Eigentlich sollte danach HTTPS aktiviert sein, ich habe trotzdem nochmal das Kommando
/opt/asrmanager/bin/asr https_enable
hinterhergeschickt um sicher zu gehen. Man kann aber mit
/opt/asrmanager/bin/asr show_http_receiver
auch einfach schauen, ob HTTPS/SSL auf Enabled steht.
Damit ist der ASRmanager installiert und konfiguriert, wir können also die ODAs mit ihm verknüpfen. Hier müssen wir aber händisch ein Zip-Archiv mit den Config-Files bauen:
mkdir /root/asr
cd /root/asr
# Export des Zertifikats
keytool -exportcert -alias asr -keystore /var/opt/asrmanager/configuration/asrmKeyStore.jks -file /root/asr/asrHTTPSCertificate.crt -rfc
cat /root/asr/asrdetails.json
{
"asrManagerIp" : "<IP des ASRmanager>",
"userName" : "<Username für support.oracle.com, der beim register angegeben wurde>",
"httpsPortNumber" : 16162,
"httpsCertAlias" : "<alias der beim aktivieren des HTTPS angeben wurde, bei mir: asr>"
}
cd /root
zip ASRConfiguration.zip asr/asrHTTPSCertificate.crt asr/asrdetails.json
Diese ASRConfiguration.zip muss auf die ODA kopiert werden (scp, rsync, whatever) und mit
odacli update-repository -f /tmp/ASRConfiguration.zip
in das Repository aufgenommen werden. Danach kann mit
odacli configure-asr -e external
die Installation/Konfiguration auf der ODA durchgeführt werden. Das abgefragte Kennwort ist euer Kennwort für Metalink/MOS
Wenn es einfach wäre, würden unsere Kunden uns nicht anrufen
Der Proxy, der den ASRmanager mit transport.oracle.com kommunizieren lässt bricht das SSL-Protokoll auf und hat damit ein Wildcard-Zertifikat was natürlich nicht getrusted ist. Die Registrierung bricht daher schon ab mit der Meldung:
Checking connection to
https://transport.oracle.com/v1/
Error: Remote host terminated the handshake
Ich habe jetzt nur eine eher dreckige Lösung, nämlich habe ich die Datei /opt/asrmanager/bin/asrm angepasst, direkt nach der Zeile
# perform java version and get java.exec
. $ASR_HOME/bin/include/asr.javaversion
JAVA=`get_value $ASR_CONFIG java.exec`
habe ich diese Zeile hinzugefügt
JAVA="$JAVA -Djdk.internal.httpclient.disableHostnameVerification"
Nach einem Neustart des asrm hat das Register auch funktioniert.
Wenn ihr da eine schönere Lösung habt, weil ASR vielleicht sogar dafür einen Konfigurationsschalter hat den ich nicht gefunden habe, gerne Info an mich.