WebLogic Server 14.1.2.0.0 on Oracle Linux 9
Overview
Oracle WebLogic Server is Oracle's Jakarta EE / Java EE application server. It runs enterprise Java applications, web services and messaging workloads with clustering, JDBC connection pools, JMS and a full security realm. Release 14.1.2.0.0 supports Java SE 17 and 21. You administer it with the WebLogic Remote Console, because the in-server Administration Console was removed in this release.
This guide covers launching and using the WebLogic Server 14.1.2.0.0 on Oracle Linux 9 AMI from SecureAnyCloud on Amazon EC2. It is one version of the SecureAnyCloud Oracle WebLogic Server listing on AWS Marketplace. You pick it as the software version when you subscribe and launch.
What you get:
- A domain created on your instance, not ours. The image contains the WebLogic Server installation only. On the first boot of every instance, a one-time service creates
base_domainfrom Oracle's own domain template, with an administrator password generated on that instance. The domain's encryption salt (SerializedSystemIni.dat), its embedded LDAP store and its boot identity are therefore unique to your instance, and no two instances share a credential. The password never appears on a command line or in a log. It is written to/root/weblogic-credentials.txt, which only root can read. - Fail-closed startup. WebLogic and the HTTPS front end refuse to start until first boot has finished. If first boot ever fails, the partial domain is removed and nothing listens.
- HTTPS from the first boot. The AdminServer listens on
127.0.0.1:7001only. nginx 1.26 serves it on port 443 with a certificate generated on your instance, and port 80 redirects to HTTPS. Requests for a host name the instance does not serve get no answer, and WebLogic's internal servlets are not published. - Hardened defaults. SSH accepts keys only: no passwords, no
rootlogin and no X11 forwarding. Root has no password at all, and neither does theoracleaccount. WebLogic runs in production mode, with IIOP off, anonymous T3/IIOP RMI off and its default internal servlets (HTTP tunnelling) off. It takes the client address from the connection, never from a header a client can forge, and the/management/API is rate-limited. WebLogic and nginx are blocked from the instance metadata service, and the AMI requires IMDSv2. SELinux stays enforcing, and the server runs under a locked-down systemd unit. The Derby demo database is never started. - Base media only. WebLogic Server is installed from Oracle's 14.1.2.0.0 release media, verified by checksum and by Oracle's code signature. No PSU or other Oracle patch is applied, so you apply Oracle's patches with your own Oracle support (see Step 11).
- A Java runtime that dnf keeps patched. WebLogic runs on Oracle Linux's own OpenJDK 21 (the
java-21-openjdk-headlesspackage from the Oracle Linux 9 AppStream), reached through the alternatives path/usr/lib/jvm/jre-21-openjdk. OpenJDK security updates install withdnflike any other package and need no WebLogic configuration change. No Oracle JDK is included (see Licensing). - Fully patched Oracle Linux 9 at build time, with
dnf-automaticapplying Oracle Linux security updates (OpenJDK included) every day.
On the image: Oracle WebLogic Server 14.1.2.0.0 (WebLogic Server and Coherence) in /u01/app/oracle/product, Oracle Linux OpenJDK 21 (java-21-openjdk-headless, JAVA_HOME /usr/lib/jvm/jre-21-openjdk), nginx, Oracle Linux 9.8 with the Unbreakable Enterprise Kernel, cloud-init and the AWS Systems Manager agent.
Default user: ec2-user. Architecture: x86_64. Recommended instance type: m5.large.
Licensing
Oracle WebLogic Server is a commercial Oracle product. You need your own Oracle WebLogic Server license that covers the instance under Oracle's cloud licensing policy. The SecureAnyCloud charge covers the hardened image, first-boot setup and support, not an Oracle license.
The Java runtime is Oracle Linux's OpenJDK 21, which is open source (GPLv2 with the Classpath Exception) and patched through dnf. The image includes no Oracle JDK. Oracle's WebLogic Server certification names Oracle JDK, so if your Oracle support requires it, install Oracle JDK under your own Oracle entitlement and point WebLogic at it (Step 11 shows how). The notices are in /usr/share/doc/sac/licenses/ and the OpenJDK license is in /usr/lib/jvm/jre-21-openjdk/legal/java.base/.
Prerequisites
- An AWS account subscribed to the listing, an EC2 key pair, and a VPC subnet with a route to the internet (or a private route you use for management).
- A security group that allows TCP 443 (HTTPS: WebLogic Remote Console, the REST management API and your applications) and TCP 80 (redirects to HTTPS) from the people and systems that use WebLogic. The same group allows TCP 22 (SSH) from your own networks only. Port 7001 is never needed in the security group.
Launch the instance
In the AWS Marketplace listing, choose Continue to Subscribe, then Continue to Configuration. Pick WebLogic Server 14.1.2.0.0 on Oracle Linux 9 as the software version, choose your Region, and choose Launch through EC2. Select m5.large (or larger for production application workloads), your key pair and a security group as above.
The root volume holds the WebLogic installation, your domain and its logs. Give it room for your applications (for example 30 GiB). The root file system grows to fill the volume on first boot.
To launch with the AWS CLI, replace the values in angle brackets:
aws ec2 run-instances --region <region> --image-id <ami-id-from-the-listing> \
--instance-type m5.large --key-name <your-key-pair> \
--security-group-ids <your-security-group> --subnet-id <your-subnet> \
--metadata-options HttpTokens=required,HttpEndpoint=enabled \
--block-device-mappings 'DeviceName=/dev/sda1,Ebs={VolumeSize=30,VolumeType=gp3}' \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=weblogic}]'Connect to your instance
Version SSH user
WebLogic Server 14.1.2.0.0 on Oracle Linux 9 ec2-user
ssh -i <your-key.pem> ec2-user@<public-ip>Confirm the operating system release:
cat /etc/oracle-releaseOracle Linux Server release 9.8Check the services
On a newly launched instance, first boot creates the domain in about two and a half minutes. The instance is still loading its disk from the AMI snapshot, which makes the first Java start slow. The AdminServer then reaches RUNNING about 17 seconds later, so WebLogic is ready roughly three and a quarter minutes after launch. Two fresh 2 vCPU instances measured 3 min 16 s and 3 min 14 s from boot to RUNNING.
Until then, nginx is not started and port 443 refuses connections. Check the three units:
sudo systemctl is-active weblogic-firstboot.service weblogic.service nginx.serviceactive active activeweblogic-firstboot.service reports active because it is a one-time unit that has finished. On later boots it sees its marker and does nothing. The first-boot log shows the host name the instance was configured for and how long the domain took. This example comes from an instance whose disk was already warm:
sudo cat /var/log/weblogic-firstboot.log[2026-10-20T14:44:42Z] weblogic-firstboot: configured host: ec2-54-208-37-17.compute-1.amazonaws.com [2026-10-20T14:44:42Z] weblogic-firstboot: creating base_domain (WLST offline from Oracle's wls.jar template) [2026-10-20T14:45:17Z] weblogic-firstboot: TLS certificate + nginx host for ec2-54-208-37-17.compute-1.amazonaws.com [2026-10-20T14:45:18Z] weblogic-firstboot: done in 36s; starting WebLogic and nginxIf weblogic.service shows activating, wait a few seconds and run the command again.
Get your URL and password
The values generated for this instance are in a root-only file. This command shows the file with the password hidden:
sudo sed -E 's/^(WEBLOGIC_PASSWORD=).*/\1<hidden>/' /root/weblogic-credentials.txt# Oracle WebLogic Server 14.1.2.0.0 - this instance's own credentials (generated on its first boot) # Generated: 2026-10-20T14:45:18Z WEBLOGIC_USER=weblogic WEBLOGIC_PASSWORD=<hidden> WEBLOGIC_ADMIN_URL=https://ec2-54-208-37-17.compute-1.amazonaws.com/ WEBLOGIC_REST_URL=https://ec2-54-208-37-17.compute-1.amazonaws.com/management/weblogic/latest WEBLOGIC_WELCOME_URL=https://ec2-54-208-37-17.compute-1.amazonaws.com/console/welcome/ DOMAIN_HOME=/u01/app/oracle/product/user_projects/domains/base_domain TLS_CERT_SHA256_FINGERPRINT=82:3B:04:F3:0C:D0:20:0A:F6:DD:28:83:38:FF:D0:AC:A1:0E:74:07:2E:30:08:CA:53:FE:F5:C0:F1:9E:9D:5BPrint the password itself when you need it, and store it in your secret manager:
sudo sed -n 's/^WEBLOGIC_PASSWORD=//p' /root/weblogic-credentials.txtThe host name is the instance's public DNS name, or its public or private address when it has no public name. To serve WebLogic on your own DNS name, see Step 9.
Open WebLogic over HTTPS
The certificate is self-signed and generated on your instance. Check it, and compare its SHA-256 fingerprint with TLS_CERT_SHA256_FINGERPRINT above before you trust it in a browser or in Remote Console.
sudo openssl x509 -in /etc/nginx/ssl/weblogic.crt -noout -subject -enddate -ext subjectAltNamesubject=CN=ec2-54-208-37-17.compute-1.amazonaws.com notAfter=Jan 22 14:46:58 2029 GMT X509v3 Subject Alternative Name: DNS:ec2-54-208-37-17.compute-1.amazonaws.com, IP Address:54.208.37.17, DNS:ip-172-31-94-136.ec2.internal, IP Address:172.31.94.136, DNS:localhost, IP Address:127.0.0.1From the instance, the welcome page answers over HTTPS with that certificate, and port 80 redirects to HTTPS. Run:
H=$(sudo cat /etc/sac/weblogic-host)
curl -s -o /dev/null -w "%{http_code}\n" --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" "https://$H/console/welcome/"
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" --resolve "$H:80:127.0.0.1" "http://$H/"200 301 https://ec2-54-208-37-17.compute-1.amazonaws.com/In your browser, open the WEBLOGIC_WELCOME_URL from Step 4. Accept the self-signed certificate after you check its fingerprint. WebLogic Server 14.1.2 serves this welcome page, which links to the WebLogic Remote Console download.
Administer the domain with WebLogic Remote Console
Install WebLogic Remote Console on your workstation from the welcome page link. Add an Admin Server Connection with:
- URL: the
WEBLOGIC_ADMIN_URLfrom Step 4 (for examplehttps://ec2-54-208-37-17.compute-1.amazonaws.com/) - Username: weblogic
- Password: the password from Step 4
Remote Console talks to the AdminServer's REST management API over port 443. The certificate is self-signed, so either import /etc/nginx/ssl/weblogic.crt into Remote Console's trust store, or select Make Insecure Connection after you have compared the fingerprint. Remote Console covers deployments, data sources, JMS, security realms, users and groups, and monitoring.
Use the REST management API
The REST management API uses the same administrator credentials. This command reads the password from the credentials file and hands it to curl in a configuration stream, so it never appears on a command line:
H=$(sudo cat /etc/sac/weblogic-host)
PW=$(sudo sed -n 's/^WEBLOGIC_PASSWORD=//p' /root/weblogic-credentials.txt)
curl -s --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" -K <(printf 'user = "weblogic:%s"\n' "$PW") \
"https://$H/management/weblogic/latest/serverRuntime?links=none&fields=name,state,weblogicVersion" unset PW{ "weblogicVersion": "WebLogic Server 14.1.2.0.0 Tue Nov 26 02:40:45 GMT 2024 2171472", "state": "RUNNING", "name": "AdminServer" }The domain itself:
H=$(sudo cat /etc/sac/weblogic-host)
PW=$(sudo sed -n 's/^WEBLOGIC_PASSWORD=//p' /root/weblogic-credentials.txt)
curl -s --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" -K <(printf 'user = "weblogic:%s"\n' "$PW") \
"https://$H/management/weblogic/latest/domainConfig?links=none&fields=name,domainVersion,productionModeEnabled" unset PW{ "productionModeEnabled": true, "domainVersion": "14.1.2.0.0", "name": "base_domain" }The same request from a browser signed in as weblogic:
A request without credentials is refused with 401. The instance also carries a self-test that proves the password, the anonymous refusal and a wrong-password refusal in one run:
H=$(sudo cat /etc/sac/weblogic-host)
curl -s -o /dev/null -w "%{http_code}\n" --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" "https://$H/management/weblogic/latest/serverRuntime"
sudo /usr/local/sbin/weblogic-selftest401 per-instance admin password: AdminServer RUNNING over https://ec2-54-208-37-17.compute-1.amazonaws.com/ (instance certificate verified); anonymous HTTP 401; wrong password HTTP 401 WLS_ROUNDTRIP_OKState-changing REST requests also need the X-Requested-By header, which is WebLogic's own protection against cross-site requests.
Script administration with WLST
The WebLogic Scripting Tool (WLST) runs as the oracle user and connects to the AdminServer over T3 on the loopback address. This example hands the password to WLST in a file readable only by oracle, never on a command line or in an environment variable. It prints the domain and server state, then removes the file:
PWF=$(sudo mktemp /run/wlst-pw.XXXXXX)
sudo sed -n 's/^WEBLOGIC_PASSWORD=//p' /root/weblogic-credentials.txt | sudo tee "$PWF" >/dev/null
sudo chown oracle:oinstall "$PWF" cat > /tmp/wlst-check.py <<'PY' import os f = open(os.environ['PWF']); pw = f.read().strip(); f.close() connect('weblogic', pw, 't3://127.0.0.1:7001') print('Connected to domain: ' + cmo.getName()) serverRuntime() print('AdminServer state: ' + cmo.getState()) disconnect() PY chmod 0644 /tmp/wlst-check.py
sudo setpriv --reuid=oracle --regid=oinstall --init-groups env HOME=/home/oracle PWF="$PWF" \
/u01/app/oracle/product/oracle_common/common/bin/wlst.sh /tmp/wlst-check.py 2>&1 | grep -E 'Connected to domain|AdminServer state'
sudo rm -f "$PWF" /tmp/wlst-check.pyConnected to domain: base_domain AdminServer state: RUNNINGFor an interactive session, run sudo -u oracle /u01/app/oracle/product/oracle_common/common/bin/wlst.sh, then connect('weblogic', '<password>', 't3://127.0.0.1:7001'), edit(), startEdit(), your changes, save() and activate().
Your own DNS name and certificate
Point your DNS name at the instance, then run the following command, replacing the example name:
sudo weblogic-set-host weblogic.example.comThe command generates a new self-signed certificate for the name, adds it to nginx, and sets it as WebLogic's front-end host. It also updates the URLs in /root/weblogic-credentials.txt and restarts the AdminServer, which takes about a minute.
To use a certificate from your own certificate authority instead, run the command first. Then replace /etc/nginx/ssl/weblogic.crt and /etc/nginx/ssl/weblogic.key (key owned by root:nginx, mode 0640) and run sudo systemctl reload nginx.
Change the administrator password
To replace the generated password with one of your own, first reset it online with WLST, as in Step 8, reading the current password from a file. Then write the new password into boot.properties so the AdminServer can still start unattended. WebLogic encrypts the file on its next start. Finally, update the credentials file and restart the service:
sudo -u oracle /u01/app/oracle/product/oracle_common/common/bin/wlst.sh connect('weblogic', '<current-password>', 't3://127.0.0.1:7001') cd('/SecurityConfiguration/base_domain/Realms/myrealm/AuthenticationProviders/DefaultAuthenticator') cmo.resetUserPassword('weblogic', '<new-password>') disconnect() exit()
sudo -u oracle sh -c 'umask 077; cat > /u01/app/oracle/product/user_projects/domains/base_domain/servers/AdminServer/security/boot.properties' username=weblogic password=<new-password> (press Ctrl-D)
sudo sed -i 's/^WEBLOGIC_PASSWORD=.*/WEBLOGIC_PASSWORD=<new-password>/' /root/weblogic-credentials.txt
sudo systemctl restart weblogic.serviceTyping the password into the interactive WLST prompt and cat keeps it out of other users' command-line history. WebLogic locks an account for 30 minutes after five wrong passwords in a row.
Apply Oracle patches and Java updates
This image is built from Oracle's WebLogic Server 14.1.2.0.0 base release with no Patch Set Update (PSU) or other Oracle patch applied. Oracle distributes WebLogic patches through My Oracle Support to licensed customers.
Apply the current WebLogic PSU and security patches with your own Oracle support entitlement. Follow Oracle's patching documentation for Oracle Fusion Middleware 14.1.2 (Patching with OPatch) and the quarterly Oracle Critical Patch Update advisories. Stop the AdminServer first (sudo systemctl stop weblogic.service), apply the patch as the oracle user, then start the AdminServer again.
Java updates come from Oracle Linux. WebLogic runs on Oracle Linux's OpenJDK 21 through the alternatives path /usr/lib/jvm/jre-21-openjdk, which points at the installed java-21-openjdk-headless package. dnf-automatic installs its security updates with the other Oracle Linux errata every day. You can also update by hand with sudo dnf -y update java-21-openjdk-headless.
Nothing in WebLogic names the versioned JDK directory, so no WebLogic file changes. Restart the AdminServer so it runs on the new JDK:
sudo systemctl restart weblogic.serviceOracle Linux packages, including nginx, are updated the same way: dnf-automatic daily, or sudo dnf -y update.
Check the installed versions and the JDK the running AdminServer uses:
sudo setpriv --reuid=oracle --regid=oinstall --init-groups /usr/lib/jvm/jre-21-openjdk/bin/java -cp /u01/app/oracle/product/wlserver/server/lib/weblogic.jar weblogic.version | grep 'WebLogic Server' rpm -q java-21-openjdk-headless readlink -f /usr/lib/jvm/jre-21-openjdk
sudo /usr/local/sbin/weblogic-selftest | grep 'AdminServer JVM'WebLogic Server 14.1.2.0.0 Tue Nov 26 02:40:45 GMT 2024 2171472 java-21-openjdk-headless-21.0.12.1.1-1.2.0.1.el9.x86_64 /usr/lib/jvm/java-21-openjdk-21.0.12.1.1-1.2.0.1.el9.x86_64 AdminServer JVM: java.home=/usr/lib/jvm/java-21-openjdk-21.0.12.1.1-1.2.0.1.el9.x86_64 (java-21-openjdk-headless-21.0.12.1.1-1.2.0.1.el9.x86_64) java.vendor=Red Hat, Inc. java.vm.name=OpenJDK 64-Bit Server VM java.runtime.version=21.0.12.1+1-LTS; JAVA_HOME=/usr/lib/jvm/jre-21-openjdk (alternatives)The version numbers move on as Oracle Linux publishes OpenJDK updates. The java.vendor property reads "Red Hat, Inc." because Oracle Linux rebuilds the same OpenJDK sources. The package itself is Oracle Linux's, with vendor Oracle America.
Run WebLogic on Oracle JDK instead (Oracle support customers). Oracle's WebLogic Server 14.1.2 certification names Oracle JDK 17 and 21. If your Oracle support contract requires a certified JDK, install Oracle JDK yourself under your own Oracle entitlement. SecureAnyCloud does not supply it.
- Sign in to Oracle with your account and download the Oracle JDK 21 RPM for Linux x64 (
jdk-21_linux-x64_bin.rpm) under the terms your Oracle license gives you. Then copy it to the instance. - Install it and find its directory:
bash sudo dnf -y install ./jdk-21_linux-x64_bin.rpm ORACLE_JDK=$(dirname "$(dirname "$(rpm -ql jdk-21 | grep '/bin/java$' | head -1)")"); echo "${ORACLE_JDK}"
- Point every place WebLogic reads JAVA_HOME at it (the systemd unit, the Oracle home, the domain scripts, the oracle user's profile and the SecureAnyCloud tools), then restart:
bash sudo grep -rlF /usr/lib/jvm/jre-21-openjdk /etc/systemd/system/weblogic.service /u01/app/oracle/product/oui \ /u01/app/oracle/product/user_projects/domains/base_domain/bin /home/oracle/.bash_profile \ /usr/local/lib/sac/weblogic/common.sh | sudo xargs sed -i "s|/usr/lib/jvm/jre-21-openjdk|${ORACLE_JDK}|g" sudo systemctl daemon-reload sudo systemctl restart weblogic.service sudo /usr/local/sbin/weblogic-selftest | tail -2
weblogic-selftest first proves the login path as usual. It then stops at its last check with a FAIL: AdminServer JVM ... line, because that check expects Oracle Linux's OpenJDK. The line shows the java.home and VM name of the Oracle JDK that the AdminServer now runs on.
From then on, you update Oracle JDK under your Oracle entitlement. To go back, run the same sed with the two paths swapped.
Check the security model
Only SSH, HTTP and HTTPS listen on the network. The AdminServer listens on the loopback address only:
sudo ss -tlnH | awk '{print $4}' | sort -u0.0.0.0:22 0.0.0.0:443 0.0.0.0:80 [::]:22 [::]:443 [::]:80 [::ffff:127.0.0.1]:7001SSH accepts key logins only. Password and keyboard-interactive logins, root logins and X11 forwarding are off. The settings live in /etc/ssh/sshd_config.d/00-sac.conf, which sshd reads before any other file (sshd keeps the first value it reads). The sshd -T command shows the values sshd actually uses:
sudo sshd -T | grep -E '^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin|x11forwarding|pubkeyauthentication) 'permitrootlogin no pubkeyauthentication yes passwordauthentication no kbdinteractiveauthentication no x11forwarding noA request for a host name the instance does not serve gets no answer (000 in curl):
curl -sk -o /dev/null -w "%{http_code}\n" -H "Host: attacker.example" https://127.0.0.1/ || echo "no answer, as intended"000 no answer, as intendedEvery process of the WebLogic and nginx services is blocked from the instance metadata service. This covers the AdminServer, every application you deploy, and the nginx master and workers. The rest of the instance can still use the metadata service, and first boot uses it to find the host name.
On Oracle Linux 9, systemd enforces this. Both units carry IPAddressDeny= for the metadata addresses, which the kernel applies to everything in the unit's control group, whatever user it runs as:
sudo systemctl show -p IPAddressDeny weblogic.service nginx.serviceIPAddressDeny=169.254.169.254/32 fd00:ec2::254/128 168.63.129.16/32 IPAddressDeny=169.254.169.254/32 fd00:ec2::254/128 168.63.129.16/32To see it, send a request from inside each service's control group and one from your own session. A result of 000 means no answer:
for u in weblogic nginx; do
CG=$(systemctl show -p ControlGroup --value $u.service)
sudo bash -c "echo \$\$ > /sys/fs/cgroup$CG/cgroup.procs && exec curl -s -m 5 -o /dev/null -w 'inside $u.service: %{http_code}\n' -X PUT -H 'X-aws-ec2-metadata-token-ttl-seconds: 60' http://169.254.169.254/latest/api/token" done
sudo curl -s -m 5 -o /dev/null -w "outside the units: %{http_code}\n" -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 60" http://169.254.169.254/latest/api/tokeninside weblogic.service: 000 inside nginx.service: 000 outside the units: 200If an application you deploy needs AWS credentials, give it its own credentials (for example AWS Secrets Manager or environment-specific access keys) rather than the instance role. Alternatively, override the setting deliberately with sudo systemctl edit weblogic.service, where an empty IPAddressDeny= line clears it.
SELinux is enforcing:
getenforceEnforcingRemote Console shows WebLogic's own security check as a banner ("Security warnings detected"), and the REST API also exposes it. On this image, the domain is created with WebLogic's default internal servlets disabled (DefaultInternalServletsDisabled, which turns off T3/IIOP tunnelling over HTTP and clears warning 091031). nginx answers 404 for WebLogic's internal paths (/bea_wls_internal/, /bea_wls_deployment_internal/, /_async/, /wls-wsat/ and others).
The report is computed on demand, so refresh it first, then read it:
H=$(sudo cat /etc/sac/weblogic-host)
PW=$(sudo sed -n 's/^WEBLOGIC_PASSWORD=//p' /root/weblogic-credentials.txt)
curl -s -o /dev/null -w "refresh: %{http_code}\n" --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" -K <(printf 'user = "weblogic:%s"\n' "$PW") \
-H "X-Requested-By: sac" -H "Content-Type: application/json" -d '{}' -X POST \
"https://$H/management/weblogic/latest/domainRuntime/domainSecurityRuntime/refreshCache"
curl -s --cacert <(sudo cat /etc/nginx/ssl/weblogic.crt) --resolve "$H:443:127.0.0.1" -K <(printf 'user = "weblogic:%s"\n' "$PW") \
"https://$H/management/weblogic/latest/domainRuntime/domainSecurityRuntime?links=none&fields=securityValidationWarnings" | grep -E '"id"' unset PWrefresh: 200 "id": "091033" "id": "091032"Two items remain, and both follow from the design:
- 091033, no dedicated HTTPS network channel. nginx terminates HTTPS on port 443, and the AdminServer listens on
127.0.0.1:7001only. No WebLogic network channel is reachable from the network at all. - 091032, demo identity and trust keystores. The AdminServer has no SSL listener of its own, so these keystores are not used to serve traffic. WebLogic 14.1.2 generates them, with its own demo certificate authority and the rest of the domain, on your instance's first boot. They are unique to your instance rather than a shared demo key. If you enable SSL on a WebLogic network channel, configure your own identity and trust keystores first (
KeyStores=CustomIdentityAndJavaStandardTrustorCustomIdentityAndCustomTrust). That also clears this item.
Managing the WebLogic services
The AdminServer and nginx are ordinary systemd services:
sudo systemctl status weblogic.service --no-pager --lines=0 | head -4● weblogic.service - Oracle WebLogic Server 14.1.2.0.0 AdminServer (base_domain, loopback 127.0.0.1:7001) Loaded: loaded (/etc/systemd/system/weblogic.service; enabled; preset: disabled) Drop-In: /etc/systemd/system/weblogic.service.d └─50-sac-imds-deny.confUse sudo systemctl restart weblogic.service, stop or start as needed. The AdminServer is back in RUNNING about 30 seconds after a start.
The server log is servers/AdminServer/logs/AdminServer.log under the domain. The HTTP access log, with the real client address, is servers/AdminServer/logs/access.log. The AdminServer's Java heap is set in the unit (USER_MEM_ARGS=-Xms512m -Xmx2g). Raise it with sudo systemctl edit weblogic.service for larger instance types.
NodeManager is not configured in this single-server domain. If you add managed servers on this host, configure NodeManager to listen on 127.0.0.1 with its own credential. Keep port 5556 out of the security group.
Filesystem layout
Path Purpose
/usr/lib/jvm/jre-21-openjdk Oracle Linux OpenJDK 21 (JAVA_HOME; alternatives link to the installed java-21-openjdk-headless)
/u01/app/oracle/product Oracle home (MW_HOME)
/u01/app/oracle/product/wlserver WebLogic Server (WL_HOME)
/u01/app/oracle/product/user_projects/domains/base_domain Your domain (DOMAIN_HOME), created on first boot
/u01/app/oraInventory Oracle inventory
/root/weblogic-credentials.txt This instance's credentials (root only)
/etc/nginx/ssl/weblogic.crt, weblogic.key This instance's TLS certificate and key
/etc/nginx/conf.d/weblogic-host.conf nginx site for the configured host (written by first boot and weblogic-set-host)
/usr/local/sbin/weblogic-set-host, weblogic-selftest Change the host name; prove the login path
/var/log/weblogic-firstboot.log First boot log
/usr/share/doc/sac/licenses/ Oracle and Java notices
The oracle user's ~/.bash_profile exports JAVA_HOME, MW_HOME, ORACLE_HOME, WL_HOME and DOMAIN_HOME.
Troubleshooting
The AdminServer does not start. Check the unit and the server log:
sudo journalctl -u weblogic.service -n 20 --no-pagerweblogic.service and nginx.service start only after first boot has created /var/lib/sac/data/weblogic-firstboot.done and the domain. If that file is missing, read /var/log/weblogic-firstboot.log.
The browser shows 502 Bad Gateway, or port 443 refuses the connection. First boot or the AdminServer is still starting, which takes about three minutes after launch. Wait a minute and reload.
No answer at all on 443 from your workstation. Check that the security group allows your address on 443. Also check that you use a host name the instance serves: the instance's public DNS name, its public or private address, or the name you set with weblogic-set-host.
Security recommendations
- Allow port 443 only from the networks that use WebLogic, and port 22 only from your administration networks.
- Replace the self-signed certificate with one from your certificate authority for production (Step 9).
- Keep SSH key-only. The image's settings are in
/etc/ssh/sshd_config.d/00-sac.conf. - Create separate users and groups in the security realm for operators and deployers instead of sharing the
weblogicaccount. - Apply Oracle's WebLogic PSUs and Critical Patch Updates with your Oracle support entitlement (Step 11).
Support and licensing
SecureAnyCloud provides 24/7 technical support for this image by email and live chat: sales@secureanycloud.com or secureanycloud.com/support. Licensing questions about Oracle software go to Oracle.
Using Oracle WebLogic Server requires your own Oracle license. The Java runtime is Oracle Linux's OpenJDK 21 (GPLv2 with the Classpath Exception); no Oracle JDK is included. Oracle WebLogic Server documentation is at docs.oracle.com.
Oracle, Java and WebLogic are registered trademarks of Oracle and/or its affiliates. SecureAnyCloud is not affiliated with or endorsed by Oracle.
Deploy on AWS
Launch WebLogic Server 14.1.2.0.0 on Oracle Linux 9 on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com