Friday, June 4, 2010

Changing hostname/IP for Weblogic 11g


Recently I had to migrate two VMs hosting SOA/WebCenter 11g respectively from our US centers to India centers. This involved change in the hostname/IP of the two servers. Now the process is already documented @
http://download.oracle.com/docs/cd/E12839_01/core.1111/e10105/host.htm#CHDGEDCF.
But as is with all documents, not everything is documented!

The startManagedServer.sh script has the URL of the AdminServer hard-coded. So you have to change that too. Having done this, start the nodemanager.
When you start your nodemanager, you might encounter the below error (in the AdminServer logfile):

BEA-090504 - Certificate chain received from localhost - 127.0.0.1 failed hostname verification check. Certificate contained xyz.abc.com but check expected localhost
OR
BEA-090482 - BAD_CERTIFICATE alert was received from localhost.localdomain - 127.0.0.1. Check the peer to determine why it rejected the certificate chain (trusted CA configuration, hostname verification). SSL debug tracing may be required to determine the exact reason the certificate was rejected.

There are two ways to solve it.

1. Disable Flags - Jugaad way ;)
Put the following flags at the right places.
Node Manager: -Dweblogic.nodemanager.sslHostNameVerificationEnabled=false
Admin Server: -Dweblogic.security.SSL.ignoreHostnameVerification=true

2. Recreate the Certificates - The recommended way.
Node manager by default uses the WebLogic demo identity keystore. The keystore is generated at install time using the CertGen utility. The generated private key uses the common name (cn) resolved by Java.

2.1 Set the PATH
. $WL_HOME/server/bin/setWLSEnv.sh

2.2 Backup DemoIdentity.jks under $WL_HOME/server/lib


2.3 Generate the private key.

java utils.CertGen -cn -keyfilepass DemoIdentityPassPhrase -certfile newcert -keyfile newkey

2.4 Import the key generated above to the keystore.

java utils.ImportPrivateKey -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyfile newkey.pem -keyfilepass DemoIdentityPassPhrase -certfile newcert.pem -alias demoidentity

2.5 Copy DemoIdentity.jks to $WL_HOME/server/lib


2.6 Restart your nodemanager.

That's it !

12 comments:

  1. Nice, clear, instructions! Recommends the host name change with WebLogic the right way!

    ReplyDelete
  2. Hi Rb,
    I cloned my old WL server to a new server using Mono.
    After that i got the same certificate problem when starting the new WL, so i tried your 2nd option to re-generate CA. However I stucked at step 3 with this error:

    Exception in thread "Main Thread" java.lang.NoClassDefFoundError: utils/CertGen
    Could not find the main class: utils.CertGen. Program will exit.

    Could you please advise me how to fix this problem. Thank you
    Could not find the main class: utils.CertGen

    ReplyDelete
  3. TuanNA,

    if setWLSEnv.sh isn't setting the environment variables, export them with the script's output.

    In Linux:

    export CLASSPATH=...............
    export PATH=....................

    ReplyDelete
  4. You should add java utils.CertGen -cn other wise it will throw the below error.
    Unknown option: DemoIdentityPassPhrase

    Usage: java utils.CertGen
    -certfile -keyfile
    -keyfilepass
    [-cacert ][-cakey ]
    [-cakeypass ]
    [-selfsigned][-strength ]
    [-e ][-cn ]
    [-ou ][-o ]
    [-l ][-s ][-c ]
    [-keyusage [digitalSignature,nonRepudiation,keyEncipherment
    dataEncipherment,keyAgreement,keyCertSign,
    cRLSign,encipherOnly,decipherOnly]]
    [-keyusagecritical true|false]
    [-subjectkeyid ]
    [-subjectkeyidformat UTF-8|BASE64]
    [-help]

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. Hi Thanks for providing the steps in detail.

    I have performed the same steps for changing the hostname in DemoIdentity.jks

    Using command I got - newcert.der, newcert.pem,newkey.der,newkey.per and DemoIdentity.jks. I have replaced the DemoIdentity.jks with new one. And it is working fine.
    Query:
    Is there any harm for removing key files - newcert.der, newcert.pem,newkey.der,newkey.per

    ReplyDelete