weblogic 禁用sslv3下怎么禁用弱ssl加密算法

如何控制开放HTTPS服务的weblogic服务器 - 推酷
如何控制开放HTTPS服务的weblogic服务器
目前在公开途径还没有看到利用JAVA反序列化漏洞控制开放HTTPS服务的weblogic服务器的方法,已公布的利用工具都只能控制开放HTTP服务的weblogic服务器。我们来分析一下如何利用JAVA反序列化漏洞控制开放HTTPS服务的weblogic服务器,以及相应的防护方法。
建议先参考
中关于weblogic的JAVA反序列化漏洞的分析。
0x01 HTTPS服务的架构分析
如果某服务器需要对公网用户提供HTTPS服务,可以在不同的层次实现。
使用SSL网关提供HTTPS服务
当使用SSL网关提供HTTPS服务时,网络架构如下图所示(无关的设备已省略,下同)。
SSL网关只会向后转发HTTP协议的数据,不会将T3协议数据转发至weblogic服务器,因此在该场景中,无法通过公网利用weblogic的JAVA反序列化漏洞。
使用负载均衡提供HTTPS服务
当使用负载均衡提供HTTPS服务时,网络架构如下图所示。
安全起见,负载均衡应选择转发HTTP协议而不是TCP协议,因此在该场景中,也无法通过公网利用weblogic的JAVA反序列化漏洞。
使用web代理提供HTTPS服务
当使用web代理(如apache、nginx等)提供HTTPS服务时,网络架构如下图所示。
web代理只会向后转发HTTP协议的数据,因此在该场景中,也无法通过公网利用weblogic的JAVA反序列化漏洞。
使用weblogic提供HTTPS服务
当使用weblogic提供HTTPS服务时,网络架构如下图所示。
weblogic能够接收到利用SSL加密后的T3协议数据,因此在该场景中,通过公网能够利用weblogic的JAVA反序列化漏洞。
根据上述分析,仅当HTTPS服务由weblogic提供时,才能够利用其JAVA反序列化漏洞。
0x02 weblogic开放SSL服务时的T3协议格式分析
利用weblogic的JAVA反序列化漏洞时,必须向weblogic发送T3协议头。为了能够利用提供SSL服务的weblogic的JAVA反序列化漏洞,需要首先分析当weblogic提供SSL服务时的T3协议格式。
SSL数据包为加密的形式,无法直接进行分析,需要进行解密。当已知SSL私钥时,可以利用Wireshark对SSL通信数据进行解密。
weblogic可以使用演示SSL证书提供SSL服务,也可以使用指定SSL证书提供SSL服务。
可以使用两种方法进行分析,一是使用weblogic提供的演示SSL证书进行分析,二是使用自己生成的SSL证书进行分析。
使用weblogic演示证书进行分析(方法一)
使用weblogic演示证书开放SSL服务
登录weblogic控制台,将AdminServer的“启用SSL监听端口”钩选,并填入SSL监听端口号。
查看AdminServer的密钥库配置,确认为“演示标识和演示信任”(Demo Identity and Demo Trust),可以看到演示密钥库的文件名为“DemoIdentity.jks”,演示信任密钥库文件名为“DemoTrust.jks”。
查看AdminServer的SSL配置,可以看到演示密钥库的私钥别名为“DemoIdentity”。
使用HTTPS方式登录weblogic控制台,确认可以正常登录。
生成weblogic演示证书的私钥文件
以下为weblogic演示密钥库的密码信息。
Trust store location
DemoTrust.jks文件,可在控制台查看
Trust store password
DemoTrustKeyStorePassPhrase
Key store location
DemoIdentity.jks文件,可在控制台查看
Key store password
DemoIdentityKeyStorePassPhrase
Private key password
DemoIdentityPassPhrase
Private Key Alias
DemoIdentity,可在控制台查看
使用以下命令生成weblogic演示密钥库的私钥文件。
set keystore=DemoIdentity.jks
set tmp_p12=tmp.p12
set storepass=DemoIdentityKeyStorePassPhrase
set keypass=DemoIdentityPassPhrase
set alias=DemoIdentity
set pwd_new=123456
keytool -importkeystore -srckeystore %keystore% -destkeystore %tmp_p12% -srcstoretype JKS -deststoretype PKCS12 -srcstorepass %storepass% -deststorepass %pwd_new% -srcalias %alias% -destalias %alias% -srckeypass %keypass% -destkeypass %pwd_new%
set out_pem=tmp.rsa.pem
set final_pem=final.key
openssl pkcs12 -in %tmp_p12% -nodes -out %out_pem% -passin pass:%pwd_new%
openssl rsa -in %out_pem% -check & %final_pem%
最终生成的final.key即为weblogic演示密钥库的私钥文件。final.key的密钥格式为
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
修改weblogic停止脚本
需要修改weblogic的停止脚本“stopWebLogic.xx”,将ADMIN_URL字段的“t3”改为“t3s”,并在java调用weblogic.WLST类的JVM启动参数中加入“-Dweblogic.security.TrustKeyStore=DemoTrust”,使weblogic在调用停止脚本时使用演示证书,否则会出现证书不被信任的错误。
使用自定义证书进行分析(方法二)
生成自定义密钥库
使用以下命令生成自定义密钥库。
set keystore=keystore.jks
set alias=server
set pwd=123456
set url=url-test
set validity=7300
keytool -genkey -alias %alias% -keyalg RSA -keysize 2048 -keystore %keystore% -storetype jks -storepass %pwd% -keypass %pwd% -dname &CN=%url%, OU=companyName, O=companyName, L=cityName, ST=provinceName, C=CN& -validity %validity%
生成的密钥库名称为keystore.jks,密钥库密码与私钥密码均为“123456”。
使weblogic使用指定的密钥库
将上述步骤生成的密钥库文件keystore.jks复制到weblogic的domain目录中。
登录weblogic控制台,在AdminServer的密钥库界面,选择密钥库类型为“定制标识和 Java 标准信任”(Custom Identity and Java Standard Trust),定制标识密钥库输入“keystore.jks”,定制标识密钥库类型输入“JKS”,定制标识密钥库密码短语与确认定制标识密钥库密码短语输入“123456”,保存上述修改。
在AdminServer的SSL界面,私有密钥别名输入“server”,私有密钥密码短语与确认私有密钥密码短语输入“123456”。
使用HTTPS对应的URL打开weblogic控制台,确保可以正常登录,查看证书信息如下。
将自定义证书导入java信任密钥库中
在上一步骤中可以看到Java标准信任密钥库对应的文件为weblogic的JDK目录中的“jdk\jre\lib\security\cacerts”文件,密钥类型也是JKS。
当weblogic作为SSL客户端连接服务器时,会检查服务器的证书链是否与weblogic的JDK目录中的cacerts文件匹配。
需要将自定义证书的公钥导入weblogic的JDK目录中的cacerts文件中,否则在调用weblogic停止脚本时,会由于证书不受信任而失败。
使用以下命令导出自定义证书的公钥。
set keystore=keystore.jks
set alias=server
set pwd=123456
set exportcert=export.cer
keytool -export -alias %alias% -keystore %keystore% -file %exportcert% -storepass %pwd%
导出的公钥文件为export.cert。
使用以下命令将公钥导入weblogic的JDK目录的cacerts文件中,在导入前需要备份cacerts。cacerts密钥库的默认密码为changeit,可进行修改。
set keystore=cacerts
set alias=server
set pwd=changeit
set cert=export.cer
keytool -import -alias %alias% -keystore %keystore% -trustcacerts -storepass %pwd% -file %cert%
生成自定义证书的私钥文件
使用以下命令生成自定义证书的私钥文件。
set keystore=keystore.jks
set tmp_p12=tmp.p12
set storepass=123456
set keypass=123456
set alias=server
set pwd_new=123456
keytool -importkeystore -srckeystore %keystore% -destkeystore %tmp_p12% -srcstoretype JKS -deststoretype PKCS12 -srcstorepass %storepass% -deststorepass %pwd_new% -srcalias %alias% -destalias %alias% -srckeypass %keypass% -destkeypass %pwd_new%
set out_pem=tmp.rsa.pem
set final_pem=final.key
openssl pkcs12 -in %tmp_p12% -nodes -out %out_pem% -passin pass:%pwd_new%
openssl rsa -in %out_pem% -check & %final_pem%
最终生成的final.key即为自定义证书的私钥文件。
修改weblogic停止脚本
需要修改weblogic的停止脚本“stopWebLogic.xx”,将 ADMIN_URL 字段的“ t3 ”改为“ t3s ”,并在java调用weblogic.WLST类的JVM启动参数中加入“ -Dweblogic.security.TrustKeyStore=DemoTrust ”。
除了以上修改外,还需在停止脚本的JVM启动参数中加入“ -Dweblogic.security.SSL.ignoreHostnameVerification=true ”,避免因自定义证书中的地址与停止脚本实际访问的ssl服务的地址不一致而出现错误。
调用weblogic停止脚本并抓包
前文中已将weblogic的停止脚本“stopWebLogic.xx”中的访问链接改为t3s协议,会使用SSL协议进行通信。
需要调用weblogic的停止脚本并进行抓包。由于停止脚本会与同一台机器的weblogic通信,在Linux环境中抓包较为方便,需要使用tcpdump对Loopback对应的网卡进行抓包。
使用Wireshark解密SSL通信数据
前文已生成了weblogic的私钥文件,并对weblogic停止脚本调用过程进行了抓包,可以使用Wireshark解密对应的SSL通信数据。
首先在Wireshark中设置需要使用的私钥文件,打开Wireshark菜单的“Edit-&Preferences”,打开“Protocols-&SSL”,点击“RSA keys list”旁的“Edit”按钮,如下图。
添加一行配置,IP为weblogic服务器的IP,Port为weblogic的SSL监听端口,Protocol为tcp,Key File为之前已生成的weblogic的SSL证书的私钥文件。
使用Wireshark打开抓包文件,可以看到原本为加密形式的通信数据有部分已被解密,找到T3协议头相关数据,可以看到停止脚本向weblogic发送的T3协议头以“t3s”开头。
服务器返回的数据如下。
费了老大的劲,才发现原来 weblogic开放HTTPS服务后,t3协议头的前几个字节由“t3”变成了“t3s” 。
以上步骤在Linux环境的weblogic 10.3.4测试成功。
JAVA反序列化漏洞调用过程
当weblogic开放HTTPS服务时,JAVA反序列化漏洞的调用过程如下。
at mons.collections.functors.InvokerTransformer.transform(InvokerTransformer.java:132)
at mons.collections.functors.ChainedTransformer.transform(ChainedTransformer.java:122)
at mons.collections.map.TransformedMap.checkSetValue(TransformedMap.java:203)
at mons.collections.map.AbstractInputCheckedMapDecorator$MapEntry.setValue(AbstractInputCheckedMapDecorator.java:191)
at sun.reflect.annotation.AnnotationInvocationHandler.readObject(AnnotationInvocationHandler.java:334)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at weblogic.rjvm.InboundMsgAbbrev.readObject(InboundMsgAbbrev.java:65)
at weblogic.rjvm.InboundMsgAbbrev.read(InboundMsgAbbrev.java:37)
at weblogic.rjvm.MsgAbbrevJVMConnection.readMsgAbbrevs(MsgAbbrevJVMConnection.java:283)
at weblogic.rjvm.MsgAbbrevInputStream.init(MsgAbbrevInputStream.java:210)
at weblogic.rjvm.MsgAbbrevJVMConnection.dispatch(MsgAbbrevJVMConnection.java:498)
at weblogic.rjvm.t3.MuxableSocketT3.dispatch(MuxableSocketT3.java:330)
at weblogic.socket.BaseAbstractMuxableSocket.dispatch(BaseAbstractMuxableSocket.java:298)
at weblogic.socket.SSLFilterImpl.dispatch(SSLFilterImpl.java:258)
at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:950)
at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:898)
at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:130)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
0x03 如何控制开放HTTPS服务的weblogic服务器
如何发送T3协议数据
利用weblogic的JAVA反序列化漏洞时,必须向weblogic发送T3协议头。 当weblogic开放HTTPS服务时,向其发送的T3协议头应以“t3s”开头。向weblogic发送数据时应使用SSL协议,且不应对服务器的证书进行验证。
无论weblogic开放HTTP服务还是HTTPS服务,在向weblogic发送利用JAVA反序列化漏洞的序列化数据时,数据内容不需要改变。
如何调用weblogic的RMI服务
可以利用weblogic的JAVA反序列化数据使weblogic在服务器生成指定的jar文件并加载,在jar文件中开启weblogic的RMI服务,可以从公网直接调用,能够控制服务器。
当weblogic开放HTTPS服务时,调用weblogic的RMI服务时有几点需要进行修改。
在调用weblogic的RMI服务时,使用的URL应改为以“t3s”开头;
在调用weblogic的RMI服务时,客户端需要引入weblogic.jar。使用t3s协议时,weblobic.jar会尝试从当前目录读取weblogic授权文件license.bea,需要保证weblogic.jar能正确地读取该文件;
weblogic.jar中会对服务器证书进行验证,判断其是否为可信证书。由于可能遇到服务器的证书未经过CA认证,因此需要修改证书验证的相关代码,忽略证书未经认证的问题;
JVM启动参数需要增加“ -Dweblogic.security.SSL.ignoreHostnameVerification=true ”,避免因自定义证书中的地址与停止脚本实际访问的ssl服务的地址不一致而出现错误。
0x04 可行的漏洞修复方法
将SSL服务转移至其他设备
将SSL服务转移至weblogic服务器外层的设备实现,如SSL网关、负载均衡、单独部署的web代理等,将HTTP请求转发至weblogic,可以修复JAVA反序列化漏洞。
对系统影响小,不需测试对现有系统功能的影响
需要对SSL证书进行格式转换;需要购买设备;无法防护从内网发起的JAVA反序列化漏洞攻击
将SSL服务转移至weblogic服务器的web代理
在weblogic所在服务器安装web代理应用,如apache、nginx等,将SSL服务转移至web代理应用,使web代理监听原有的weblogic监听端口,并将HTTP请求转发给本机的weblogic,可以修复JAVA反序列化漏洞。
对系统影响小,不需测试对现有系统功能的影响;不需要购买设备
需要对SSL证书进行格式转换;无法防护从内网发起的JAVA反序列化漏洞攻击;会增加服务器的性能开销
将SSL服务转移至weblogic服务器的web代理并修改weblogic的监听IP
将weblogic的监听地址修改为“127.0.0.1”或“localhost”,只允许本机访问weblogic服务。
在weblogic所在服务器安装web代理应用,如apache、nginx等,将SSL服务转移至web代理应用,使web代理监听原有的weblogic监听端口,并将HTTP请求转发给本机的weblogic,可以修复JAVA反序列化漏洞。web代理的监听IP需设置为“0.0.0.0”,否则其他服务器无法访问。
需要将weblogic停止脚本中的ADMIN_URL参数中的IP修改为“127.0.0.1”或“localhost”,否则停止脚本将不可用。
对系统影响小,不需测试对现有系统功能的影响;不需要购买设备;能够防护从内网发起的JAVA反序列化漏洞攻击
需要对SSL证书进行格式转换;会增加服务器的性能开销
修改weblogic的代码
weblogic处理T3S协议的类为“weblogic.rjvm.t3.MuxableSocketT3S”,继承自“weblogic.rjvm.t3.MuxableSocketT3”类,且MuxableSocketT3S类中没有对dispatch方法进行重写,因此可以采用与
中“修改weblogic的代码”部分相同的修复方法。具体步骤略。
不需要对SSL证书进行格式转换;对系统影响小,不需测试对现有系统功能的影响;不需要购买设备;能够防护从内网发起的JAVA反序列化漏洞攻击;不会增加服务器的性能开销
存在商业风险,可能给oracle的维保带来影响
无论weblogic服务器开放HTTP服务还是HTTPS服务,都是有可能利用JAVA反序列化漏洞控制服务器的。JAVA反序列化漏洞的影响,应该会持续很长的时间。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致weblogic的SSL配置全解析
转载请注明出处:.cn/dzx3985
目前在网络上有很多描述weblogic实现SSL的很多文章,但是都是描述如何操作或者SSL纯理论,没有结合weblogic配置和SSL理论说明的。本文参考其他文档并加上笔者的理解,在提供配置步骤的同时描述步骤想对应的理论解释,使读者知其然,更知其所以然。
首先,介绍一下SSL的理论知识,SSL的握手过程,注意加粗部分内容。
①客户端的浏览器向服务器传送客户端 SSL
协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
②服务器向客户端传送 SSL
协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行CA的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。
⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的
CA 是否可靠,发行CA的公钥能否正确解开客户证书的发行 CA
的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL
通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑩SSL 的握手部分结束,SSL
安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
从以上描述,可以看出,ssl需要CA证书、服务器证书、客户端证书(可选)。下面先来创建这几个证书。
安装需要的ssl软件(需要perl环境)
perl从下载后,直接下一步安装即可。
openssl从下载源代码,然后在vc环境下编译(可以查看下载包中的安装说明),下面简要列出安装的命令。
D:\openssl-1.0.1-stable-SNAP-&perl
Configure VC-WIN32 --prefix=d:\openssl
D:\openssl-1.0.1-stable-SNAP-&ms\do_ms
在vc编译环境下
D:\openssl-1.0.1-stable-SNAP-&nmake -f
ms\ntdll.mak
D:\openssl-1.0.1-stable-SNAP-&nmake -f
ms\ntdll.mak install
建立CA证书(存放在./ca2目录)
(1)生成CA密钥
D:\openssl\bin&openssl genrsa -out ca2/ca.key
D:\openssl\bin&openssl rsa -noout -text -in
ca2/ca.key //查看信息,下同
(2)生成CA自签名证书
注意这里需要修改f中[ v3_ca ]段的内容
basicConstraints = critical,CA:true
因为后面weblogic检查证书链时,会检查critical=true属性。否则会报“CA cert not marked
with critical BasicConstraint indicating it is a CA”错误。
D:\openssl\bin&openssl req -new -x509 -days 3650
-key ca2/ca.key -out ca2/ca.crt -config
d:/openssl/f
D:\openssl\bin&openssl x509 -noout -text -in
ca2/ca.crt
生成weblogic服务器证书(存放在./server2目录)
(1)生成证书密钥
D:\openssl\bin&openssl genrsa -out
server2/server.key 512
D:\openssl\bin&openssl rsa -noout -text -in
server2/server.key
(2)生成证书申请(注意生成的时输入的dname除cn外其他都要与CA证书相同)
D:\openssl\bin&openssl req -new -key
server2/server.key -out server2/server.pem
D:\openssl\bin&openssl req -noout -text -in
server2/server.pem
下面是生成证书申请,提示输入内容一例:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Wisdom
Organizational Unit Name (eg, section) []:Weblogic
Common Name (eg, YOUR name) []:wls
Email Address []:.
A challenge password []: //申请证书的密码,可以直接回车
An optional company name []: //申请证书的代理公司,可以直接回车
(3)用CA私钥对证书进行签名
注意此步需要根据f中[ ca ] [ CA_default ]段内容创建相应目录和文件。
dir = ./demoCA
database = $dir/index.txt //创建一个空文件即可
new_certs_dir = $dir/newcerts
serial = $dir/seria //创建一个seria文件,并加入证书的序列号,如01
执行完命令后,会在$dir/seria生成一个01.pem的证书备份,并将seria文件增加1。Index.txt文件也会生成一些内容。
D:\openssl\bin&openssl ca -keyfile ca2/ca.key
-cert ca2/ca.crt -in server2/server.pem -out server2/server.crt
-config d:/openssl/f
将CA证书和weblogic服务器证书导入到一个密钥库中
(1)导入CA证书
D:\jrockit_160_17_R28.0.0-679\bin&keytool
-importcert -v -trustcacerts -alias ca -keystore weblogic.jks
-storepass weblogic -file ca.crt
(2)导入weblogic服务器证书
注意keytool无法导入pem格式(纯文本格式)的证书,需要将其转换为der格式(二进制格式)。可以双击打开证书,选择复制到文件,选择der格式即可。如图:
D:\jrockit_160_17_R28.0.0-679\bin&keytool
-importcert -v -alias servercert -keypass server -keystore
weblogic.jks -storepass weblogic -file server.cer
(3)导入weblogic服务器证书的密钥(注意这里包含一个证书链,用来在服务器证书中找到CA证书)。
证书链格式为:服务器证书+CA证书,所以使用copy命令来组合证书。
D:\jrockit_160_17_R28.0.0-679\bin&copy /b
server.crt + ca.crt serverchain.crt
D:\jrockit_160_17_R28.0.0-679\bin&set
classpath=D:\Oracle\Middleware\wlserver_10.3\server\lib\weblogic.jar
D:\jrockit_160_17_R28.0.0-679\bin&java
utils.ImportPrivateKey -alias serverkey -keypass serverkey
-keystore weblogic.jks -storepass weblogic -storetype JKS -certfile
serverchain.crt -keyfile server.key
(4)验证证书链是否正确,若正确,则输出“Certificate chain appears valid”信息。
D:\jrockit_160_17_R28.0.0-679\bin&java
utils.ValidateCertChain -jks serverkey weblogic.jks weblogic
生成客户端证书(存放在./client2目录,双向认证时需要)
前三步与生成服务器证书类型。
(1)生成证书密钥
D:\openssl\bin&openssl genrsa -out
client2/client.key 512
D:\openssl\bin&openssl rsa -noout -text -in
client2/client.key
(2)生成证书申请
D:\openssl\bin&openssl req -new -key
client2/client.key -out client2/client.pem
D:\openssl\bin&openssl req -noout -text -in
client2/client.pem
(3)用CA私钥对证书进行签名
D:\openssl\bin&openssl ca -keyfile ca2/ca.key
-cert ca2/ca.crt -in client2/client.pem -out client2/client.crt
-config d:/openssl/f
(4)将客户端证书与密钥打包成pks12格式,用于向客户端分发证书,需要设置分发密码(可以直接回车)。
D:\openssl\bin&openssl pkcs12 -export -clcerts
-in client2/client.crt -inkey client2/client.key -out
client2/client.p12
在客户端安装客户端证书和根证书
安装客户端证书
将客户端证书client.p12,拷贝到客户端机器,右键点击client.p12选择安装PFX,按照向导安装即可。
安装根证书
由于我们是自己创建的根证书,不是internet上公用的CA(公用的CA的根证书内置在浏览器中,申请签名需要money的哦),所以需要安装根证书。
先生成根证书分发文件
D:\openssl\bin&openssl pkcs12 -export -clcerts
-in ca2/ca.crt -nokeys -out client2/ca.p12
然后安装,与上同。
配置weblogic
将密钥库文件weblogic.jks拷贝到weblogic的域的根目录(如:…\domains\base_domain)。
打开weblogic的server实例的配置页面,定位到密钥库配置页。
配置如图所示:
由于CA证书、服务器证书、服务器密钥都在同一个密钥库weblogic.jks中,所以我们这里标识和信任都输入weblogic.jks。
再定位到SSL配置页。
注意以下理解几个项目:
私有密钥位置:表示服务器证书的密钥来自哪个密钥库。
证书位置:表示服务器证书来自哪个密钥库。
信任证书颁发机构:表示CA证书来自哪个密钥库。注意这里我们的服务器证书和客户端证书都是相同的CA颁发的。
在SSL配置页,点开高级,选择双向认证。
如图所示:
定位到一般信息配置页,打开SSL监听端口。
如图所示:
保存配置,激活更改,然后重启server实例。
运行查看应用程序
浏览器输入
由于我们选择了强制双向认证,所以会弹出如下窗口。
点击确定。弹出
由于客户端会对服务器证书做一些合法性检验,如图“安全证书上的名称无效,或者与站点名称不匹配”,这是因为服务器证书的cn是wls,而我们站点名称为192.168.1.102,所以不匹配。
这里我们临时用hosts文件(C:\WINDOWS\system32\drivers\etc目录下)来转换一下(实际环境中可以在dns服务器上添加一条A记录)。之后,再次输入
没有安全警报弹出。
至此,我们配置完成。读者可以根据weblogic的实例,细细体会SSL握手的理论过程。如果配置有问题,请给我留言。转载请注明出处。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 weblogic 禁用ssl 的文章

 

随机推荐