配置WebLogic Server 8.1的Node Manger和SSL

  注意:由于WebLogic Server7和WebLogic Server8的设置有较大不同,此文只对WebLogic Server 8.1 有效。WebLogic Server 7的配置,也将在近期推出。

对大多数的初学者而言,WebLogic的文档,虽然详细,却有很多让人困惑不解地方,笔者通过一段时间的实践,有一些心得,在此与大家分享

在实际的应用中,不同的WebLogic Server实例会分布在不同的机器,甚至不同的地域。所以,如何有效的管理各个Managed Server实例,成为了重点。在同一个Domain中,不同机器上的Managed Server可以用相应机器上的NodeManager来管理(NodeManager本身也是一个线程,用来控制Server的生命周期的。)

本文将用1个Admin Server和2个Managed Server做例子,因为这个是最简单的Cluster形式。Cluster和本文没有什么直接关系,只是作为以后例子的铺垫而已。不过鉴于Admin Server和Managed Server之间的管理方式和Cluster的是一样的,所以也就把Cluster的配置加入本文章。详细原因,见附录B。

配置大体过程如下,一共6个步骤:

A. 建立相应的Domain。设定Admin Server。

B. 得到 Server的根证书,密钥。并将它们加入KeyStore。

C. 配置WebLogic Server的KeyStore和SSL设置,代替默认的Demo 设置。

D. 配置 Managed Server机器上的NodeManager。

E. 检查相应设置是否正确后,启动所有Server,完成设置。

F. 用一个Web Application的部署检验以上设置。


A. 建立相应的Domain。设定Admin Server和 Managed Server。

1. 首先,建立相应的Domain。设定相应的Admin Server和Managed Server。(详细设置步骤,见最后附录A)。

(详细配置资料)

Domain: Security
Cluster: MyCluster
Type
Admin
Managed
Managed
Server Name
Cake
FinalFantasy
Armageddon
IP
192.168.0.9
192.168.0.1
192.168.0.2
Machine
(空)
Desktop
Laptop
User
William
William
William
Password
Password
Password
Password

注1. 相应的IP设置,请按照实际情况更改。这里的IP,没有关系的,因为实际应用中,都用DNS名字代替了。见注5。

注2. 如果每个Server都监听不同的Port的话,三个Server可以在同一台机器上。不建议使用LoopBack的网卡。

注3. 不管多少个Managed Server,也不管他们是在同一台机器还是多台机器,都要设置为同一个Domain。

注4. Admin Server,没有必要配置Machine。所以不用加入任何一个Machine。

注5. Server Name,也是相应的DNS,可以通过修改 %WINDOWS_HOME%\System32\Drivers\Etc\Hosts 文件,达到同样效果。见文件1.1。

注6. ManagedServer机器上不用配置Domain,只需要配置NodeManager就可以了。
文件1.1

# Copyright (c) 1993-1999 Microsoft Corp.

#

# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

#

# This file contains the mappings of IP addresses to host names. Each

# entry should be kept on an individual line. The IP address should

# be placed in the first column followed by the corresponding host name.

# The IP address and the host name should be separated by at least one

# space.

#

# Additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a '#' symbol.

#

# For example:

#

# 102.54.94.97 rhino.acme.com # source server

# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost

192.168.0.9 Cake

192.168.0.2 Armageddon

192.168.0.1 FinalFantasy

修改完后,记得用ping试试,ping通过了,才好进行下一步。不同机器的话,请保持DNS名字一致。

2. (可选)修改Admin Server的启动脚本 (Security\startWebLogic.cmd)。

set PRODUCTION_MODE=false

set WLS_USER=William

set WLS_PW=password

set MEM_ARGS=-Xms256m -Xmx256m

3. 修改完Server的启动文件后,请先把Admin Server启动一次,保证已经建立正确。

4. 完成第一大步。


B. 得到 Server的根证书,Server证书,密钥。并将它们加入KeyStore。

接下来,我们需要得到配置SSL需要的文件。如果你有银子的话^_^,可以去VeriSign申请一个正规的证书。不过,本例将用WebLogic自带的CertGen工具生成相应的证书以及密钥。并加入KeyStore中。相应的概念及工具的用法,请读者自行查资料。

1. 将weblogic.jar加入classpath。

2. 建立一个临时目录,将 BEA\WebLogic\server\lib下的CertGenCA.der和CertGenCAKey.der拷贝到该目录。

3. 运行以下命令,将生成的myKeyStore.jks拷贝到相应的3个Domain目录。

keytool -noprompt -import -trustcacerts -alias CA -file CertGenCA.der -keystore myKeyStore.jks -storepass password

java utils.CertGen password CakeCert CakeKey export Cake

java utils.CertGen password FinalFantasyCert FinalFantasyKey export FinalFantasy

java utils.CertGen password ArmageddonCert ArmageddonKey export Armageddon

copy /b CakeCert.pem + CertGenCA.pem CakeCertChain.pem

copy /b ArmageddonCert.pem + CertGenCA.pem ArmageddonCertChain.pem

copy /b FinalFantasyCert.pem + CertGenCA.pem FinalFantasyCertChain.pem

keytool -import -alias CakeCert -file CakeCert.pem -keypass password -keystore myKeyStore.jks -storepass password

keytool -import -alias ArmageddonCert -file ArmageddonCert.pem -keypass password -keystore myKeyStore.jks -storepass password

keytool -import -alias FinalFantasyCert -file FinalFantasyCert.pem -keypass password -keystore myKeyStore.jks -storepass password

java utils.ImportPrivateKey myKeyStore.jks password CakeKey password CakeCertChain.pem CakeKey.pem

java utils.ImportPrivateKey myKeyStore.jks password ArmageddonKey password ArmageddonCertChain.pem ArmageddonKey.pem

java utils.ImportPrivateKey myKeyStore.jks password FinalFantasyKey password FinalFantasyCertChain.pem FinalFantasyKey.pem

java utils.ValidateCertChain -jks CakeKey myKeyStore.jks password

java utils.ValidateCertChain -jks FinalFantasyKey myKeyStore.jks password

java utils.ValidateCertChain -jks ArmageddonKey myKeyStore.jks password

最后的3个步骤,是检验Certificate的。其中第一个步骤输出应该是:

Cert[0]: CN=Cake,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

Cert[1]: CN=CertGenCAB,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US

Certificate chain appears valid

最后一句话最重要,代表了证书链是正确的!

这个步骤,是最重要的。确定所有语句的运行都是正确的。

4. Admin机器上,将keystore文件拷贝到BEA\user_projects\domain目录。

5. Managed机器上,将keystore文件拷贝到BEA\weblogic\common\nodemanager目录。

6. 完成步骤B。


C. 配置WebLogic Server的KeyStore和SSL设置,代替默认的Demo 设置。

1. 启动Admin Server,进入Console(http://Cake:8001/console/)。展开Servers,单击Cake,在右边的配置栏中(Configuration Tab),选择Keystores & SSL。


2. 单击Change,选择Custom Identity and Custom Trust,单击Continue,填入以下值。(一切以文字为准,抓图只是示范)

Custom Identity:

Custom Identity Key Store File Name: myKeyStore.jks

Custom Identity Key Store Type: JKS

Custom Identity Key Store Pass Phrase: password

Confirm Custom Identity Key Store Pass Phrase: password

Custom Trust

Custom Trust Key Store File Name: myKeyStore.jks

Custom Trust Key Store Type: JKS

Custom Identity Key Store Pass Phrase: (空)

Confirm Custom Identity Key Store Pass Phrase: (空)

3. 单击Continue,准备对 Review SSL Private Key Settings 进行设置。

Private Key Alias: CakeKey

Passphrase: password

Confirm Passphrase: password

4. 设置Armageddon Server和 FinalFantasy Server。

步骤如上,展开Servers,单击相应的Server,去 Keystores & SSL,然后配置。

以下是配置用到的值。

Armageddon Server:

Custom Identity:

Custom Identity Key Store File Name: myKeyStore.jks

Custom Identity Key Store Type: JKS

Custom Identity Key Store Pass Phrase: password

Confirm Custom Identity Key Store Pass Phrase: password

Custom Trust

Custom Trust Key Store File Name: myKeyStore.jks

Custom Trust Key Store Type: JKS

Custom Identity Key Store Pass Phrase: (空)

Confirm Custom Identity Key Store Pass Phrase: (空)

Private Key Alias: ArmageddonKey (改动的地方)

Passphrase: password

Confirm Passphrase: password

FinalFantasy Server:

Custom Identity:

Custom Identity Key Store File Name: myKeyStore.jks

Custom Identity Key Store Type: JKS

Custom Identity Key Store Pass Phrase: password

Confirm Custom Identity Key Store Pass Phrase: password

Custom Trust

Custom Trust Key Store File Name: myKeyStore.jks

Custom Trust Key Store Type: JKS

Custom Identity Key Store Pass Phrase: (空)

Confirm Custom Identity Key Store Pass Phrase: (空)

Private Key Alias: FinalFantasyKey (改动的地方)

Passphrase: password

Confirm Passphrase: password

1. 最后重新启动Admin Server,完成步骤C。

A. 配置 Managed Server机器上的NodeManager。

1. 查看目录BeaM\weblogic\common\nodemanager。BeaM代表是Managed Server的Bea实例,因为Admin里边的这个目录是空的。

2. 编辑文件nodemanager.hosts,加入Cake这个地址。内容如下:(也可以直接加入IP地址,不过这里还是用DNS,因为SSL验证名字的原因)

# Host names from which the connection to the

# node manager will be accepted.

# You can edit this file manually.

# E.g. - for allowing a machine named holly to connect,

# uncomment one of the following lines based on whether

# ReverseDnsEnabled property is turned on or off.

#holly.bea.com

#172.17.24.145

Cake

3. 编辑文件nodemanager.properties。修改后内容如下:(这个是FinalFantasy Server的例子,请自行修改Armageddon Server的文件)

PropertiesVersion=8.1

KeyStores = CustomIdentityAndCustomTrust

CustomIdentityAlias=FinalFantasyKey (FinalFantasy的密钥别称,Armageddon需要修改)

CustomIdentityPrivateKeyPassPhrase={3DES}VEg7ahqqDWKmTZZMsynwzg\=\= (密码,如果你输入password的话,WebLogic会自动改为这个的)

CustomIdentityKeyStoreFileName=myKeyStore.jks (设置myKeyStore的储存点)

CustomIdentityKeyStoreType=JKS

CustomIdentityKeyStorePassPhrase={3DES}VEg7ahqqDWKmTZZMsynwzg\=\= (密码)

CustomTrustKeyStoreFileName=myKeyStore.jks (同样的设置KeyStore储存点)

ReverseDnsEnabled=true

4.检查以上修改,步骤D完成。

B. 检查相应设置是否正确后,启动所有Server,完成设置。

1.运行 BeaM\weblogic\server\bin\startNodeManager.cmd。

格式:startNodeManager FinalFantasy 5555

或者

startNodeManager Armageddon 5555

根据不同的server,运行不同的命令。

2.启动Admin Server。

3.来到Console,展开Servers,然后:

a) 右击FinalFantasy,选择Start/Stop this Server。

b) 右边的窗口中,单击 Start this Server.。

c) 单击Yes,启动Managed Server。

d) 在启动的过程中,你应该可以看到最底下的状态栏中,state栏目的内容是STARTING,Status的内容是TASK IN PROGRESS。(图3-1)

e) 启动完毕,应该是: State:RUNNING 。Status:TASK COMPLETED。(图 3-2)


(图 3-1)


图3-2)

4. 到这里为止,已经完成所有设置了。

C. 用一个Web Application的部署检验以上设置。

1. 随便建立一个Web Application,最简单的就可以了。

2. 选择后,target里边选择Cake,还有FinalFantasy,就可以部署了。

3. 如果你喜欢,你可以再建立一个server,这样的话,Independent Servers里边就会多一个出来。

4. Deploy后,会选择是否让程序处理stage,还是你自己处理文件的存储。最好让weblogic处理stage。:)

5. 最后,访问FinalFantasy的http,就可以看到相应的网页了。

6. 终于完成了所有设置步骤。恭喜!

附录A。详细设置WebLogic Server(AdminServer)。

1. 启动Configuration Wizard。

2. Next后,选择 Basic WebLogic Server Domain,再Next。

3. 选Custom,Next。

4. 在Administration Server Configuration中,填入相应内容。


5. 在Muliple Servers, Clusters, and Machines Options,选择Yes,单击Next。

6. 点击2次Add,增加两个Managed Server。填入相应数据。单击Next。

7. 来到Clusters的设置栏。单击一下Add后,填入一下数据。最后单击Next,


8. 在这个窗口中,先单击右边target中的MyCluster,然后按两次中间上边的那个向右的箭头,就可以了。最后单击Next。

9. 如果出现Proxy设置,直接Next。

10. 设置Machine,这里是为NodeManger设置的。设置完后,Next。


11. 来到Server To Machine配置,这里要注意,别搭配错了,虽然我没有试过错误的搭配的结果。

Cake,是不属于任何Machine的,因为是Admin,就算属于一个Machine,也没有意义。

12. 配置JDBC,选择Skip,然后Next。

13. 配置JMS,选择Skip,然后Next。

14. 配置Security,,选择Skip,然后Next。

15. 输入用户名和密码。

Name:William

Password:password

16. 接下来,是Windows Options。左边选择是否建立启动的快捷方式,右边选择是否把Admin Server作为Windows服务启动。

左边选择yes,右边选择No。最后Next。

17. 启动菜单的编辑,直接Next。

18. 来到WebLogic Configuration Enviroment了,左边选择Development Mode,右边选择Sun JDK,(随便,你喜欢了)。记得Next。

19. 来到最后的一个设置,就是Create WebLogic Configuration。

注意,要把右下方的那个 Configuration Name,写上Security,这个是Domain设置。然后单击Create。

20. 选择Done,Exit。完成Admin Server的配置。


附录B。关于Cluster和Admin-Managed Server之间的管理关系,MultiCast的简介。

首先,谢谢Hilaser的提醒,这是我一直没有注意过的问题。

Admin 和Managed Server之间,是管理与被管理。一个Domain只能包含一个Admin Server,但是可以支持多个Managed Server。他们之间是依靠MultiCast联系的。MultiCast是基于UDP进行的,所以,请配置前,先测试一下UDP的通讯是否畅通。

Cluster也是以同样的方式进行通讯的,同一个Cluster之间,通过一个MultiCast地址(如237.0.0.1:7001)进行通讯,如果不能正确的建立UDP通讯,Cluster也就不能正确的运行。

下面将测试方法说一下:

1. 首先,将weblogic.jar加入classpath。

2. 在不同的机器上,执行不同的语句,

java utils.MulticastTest –N name –A 237.0.0.1

这里的name,是每一台机器都不一样的,作为自己的标志存在。

237.0.0.1是MultiCast地址,也可以是不同Port的。详细资料,请查询BEA文档。

3.如果运行结果是全部server都可以看到,就代表成功,不然就是那个节点通讯受阻。

 
 作者简介
  周骞是(dev2dev ID: 黯然销魂) BEA dev2dev中文网站--在线技术论坛WebLogic EJBS Development等栏目版主,WebLogic专家

你可能感兴趣的:(c,windows,weblogic,Security,配置管理)