`
Dead_knight
  • 浏览: 1206356 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
752c8642-b795-3fe6-946e-a4e845bffdec
Spring Securi...
浏览量:241707
33caa84e-18a6-3036-a82b-6e2106a4de63
clojure专题
浏览量:49515
E17ca077-44df-3816-a3fe-471c43f6e1e5
WebLogic11g
浏览量:237667
社区版块
存档分类
最新评论

WebLogic11g-单双向SSL配置(以Springside3为例)

 
阅读更多

2、观察weblogic方便开发部署提供的演示秘钥库
(秘钥库位置为:\weblogic11\wlserver_10.3\server\lib)

3、观察ssl的默认演示配置


那么在开发过程中,只需要在第一幅图上勾选“启用ssl监听端口”即可。

正式环境中,有哪些变化呢?主要就是更改上面2、3图中的配置,改为实际的秘钥库、以及根据实际的秘钥库来配置SSL。
网上可以搜到很多weblogic配置ssl相关资料,但是很多配置在实际环境中,都是跑不起来的。究其原因,有两点(1、需要去ca认证中心对产生的证书请求进行签证;2、更有甚者,直接使用keytool来制作,压根没提签证这回事)。weblogic配置ssl,需要标识(私钥和数字证书)、信任(可信证书颁发机构颁发的证书),所以光通过产生私钥直接配置肯定是不行的。
下面是具体的步骤:

1、下载openssl工具
这里使用openssl工具来制作这些秘钥、ca根证书等等。
openssl的windows安装文件放在网盘中,如果有需要随时下载。网盘地址为:
http://pan.baidu.com/share/link?shareid=421723979&uk=3222190371
我的安装路径为:D:\work\OpenSSL
安装之后,打开cmd进入到bin目录下,即D:\work\OpenSSL\bin。开始制作根证书、秘钥等。

2、制作CA根证书
D:\work\OpenSSL\bin>openssl genrsa -out ca/ca-key.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
...............++++++
...++++++
e is 65537 (0x10001)

D:\work\OpenSSL\bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:AH
Locality Name (eg, city) []:HF
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CAROOT
Organizational Unit Name (eg, section) []:CA
Common Name (eg, YOUR name) []:ahhx202
Email Address []://这里直接回车,不配置

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []://这里直接回车,不配置
An optional company name []:这里直接回车,不配置

D:\work\OpenSSL\bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=AH/L=HF/O=CAROOT/OU=CA/CN=ahhx202
Getting Private key


3、通过keytool工具产生秘钥、及证书请求文件,然后使用openssl上一步产生的ca根证书对证书请求进行签证,并且
D:\work\OpenSSL\bin>keytool -genkey -alias example -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore example.jks
您的名字与姓氏是什么?
  [Unknown]:  ahhx202
您的组织单位名称是什么?
  [Unknown]:  CAROOT
您的组织名称是什么?
  [Unknown]:  CA
您所在的城市或区域名称是什么?
  [Unknown]:  HF
您所在的省/市/自治区名称是什么?
  [Unknown]:  AH
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=ahhx202, OU=CAROOT, O=CA, L=HF, ST=AH, C=CN是否正确?
  [否]:  y


D:\work\OpenSSL\bin>keytool -certreq -alias example -sigalg MD5withRSA -file example.csr -keypass 123456 -keystore example.jks -storepass 123456

D:\work\OpenSSL\bin>openssl x509 -req -in example.csr -out example.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365 -set_serial 1
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=AH/L=HF/O=CA/OU=CAROOT/CN=ahhx202
Getting CA Private Key

D:\work\OpenSSL\bin>keytool -import -v -trustcacerts -keypass 123456 -storepass 123456 -alias root -file ca/ca-cert.pem -keystore example.jks
所有者: CN=ahhx202, OU=CA, O=CAROOT, L=HF, ST=AH, C=CN
发布者: CN=ahhx202, OU=CA, O=CAROOT, L=HF, ST=AH, C=CN
序列号: c1dedc7b5ba58f41
有效期开始日期: Wed Sep 11 21:37:29 CST 2013, 截止日期: Sat Sep 09 21:37:29 CST
2023
证书指纹:
         MD5: 22:26:1A:F1:A0:D8:A9:80:05:CA:12:A2:C0:EB:30:11
         SHA1: CB:C2:96:74:2A:03:9B:F8:39:F2:19:D8:5D:40:95:E7:25:27:64:73
         SHA256: 61:48:18:5E:49:27:13:38:69:B7:01:C1:ED:98:59:8A:B8:85:26:A8:D3:
5D:2E:EC:1E:DB:7E:59:71:AB:01:34
         签名算法名称: MD5withRSA
         版本: 1
是否信任此证书? [否]:  Y
证书已添加到密钥库中
[正在存储example.jks]

D:\work\OpenSSL\bin>keytool -import -v -trustcacerts -storepass 123456 -alias example -file example.pem -keystore example.jks
证书回复已安装在密钥库中
[正在存储example.jks]

D:\work\OpenSSL\bin>keytool -import -alias example-ca -trustcacerts -file ca/ca-cert.pem -keystore exampletrust.jks
输入密钥库口令:123456
再次输入新口令:123456
所有者: CN=ahhx202, OU=CA, O=CAROOT, L=HF, ST=AH, C=CN
发布者: CN=ahhx202, OU=CA, O=CAROOT, L=HF, ST=AH, C=CN
序列号: c1dedc7b5ba58f41
有效期开始日期: Wed Sep 11 21:37:29 CST 2013, 截止日期: Sat Sep 09 21:37:29 CST
2023
证书指纹:
         MD5: 22:26:1A:F1:A0:D8:A9:80:05:CA:12:A2:C0:EB:30:11
         SHA1: CB:C2:96:74:2A:03:9B:F8:39:F2:19:D8:5D:40:95:E7:25:27:64:73
         SHA256: 61:48:18:5E:49:27:13:38:69:B7:01:C1:ED:98:59:8A:B8:85:26:A8:D3:
5D:2E:EC:1E:DB:7E:59:71:AB:01:34
         签名算法名称: MD5withRSA
         版本: 1
是否信任此证书? [否]:  Y
证书已添加到密钥库中

这一步会产生两个秘钥库文件:example.jks、exampletrust.jks在ssl的配置中使用到。先把这两个文件复制到如下位置:
weblogic11\user_projects\domains\example\
即域的根目录下。

4、秘钥库配置:
启动domain并登录weblogic控制台,进入如图所示页面:

点击更改按钮,如下图所示:

默认是“演示标识和演示信任”,这里选择“定制标识和定制信任”并保存。
继续配置如下图所示的“标识、信任”,

由于之前制作秘钥的时候,密码统一为123456,这里可直接按照图中配置即可。密码部分全部输入123456,记得点击“保存”按钮。
注意:秘钥库类型为空,则表示使用默认的jks类型。

5、ssl配置:
选择ssl面板,如下图所示:

输入私有秘钥别名及私有秘钥密码(这里就是example.jks的相关信息,名称为example,密码为123456)
输入完成,记得保存。

至此,单向SSL配置完毕。大家可以把第二篇介绍的springside3的mini-web例子放在上面跑,使用https://localhost:7002/mini-web的url访问,如果按照上面步骤,应该不会有问题。或者直接使用https://localhost:7002/console来访问控制台进行测试。

双向SSL,在weblogic的配置方面,只需要修改下图的配置即可:
还是刚才的ssl配置界面,点击下面的高级链接:

找到“双向客户机证书行为”,选择“请求客户机证书并强制使用”表示如果使用https访问应用时,必须强制客户端浏览器提供证书。

修改完成,点击保存即可。

下面是springside3(mini-web)整合ssl时需要修改的配置:
修改文件:applicationContext-security.xml,如下:
	<!-- http安全配置 -->
	<s:http auto-config="true" use-expressions="true">
		<s:intercept-url pattern="/css/**" filters="none" />
		<s:intercept-url pattern="/img/**" filters="none" />
		<s:intercept-url pattern="/js/**" filters="none" />

		<s:intercept-url pattern="/account/user!save*" access="hasAnyRole('ROLE_修改用户')" />
		<s:intercept-url pattern="/account/user!delete*" access="hasAnyRole('ROLE_修改用户')" />
		<s:intercept-url pattern="/account/user*" access="hasAnyRole('ROLE_浏览用户')" />
		<s:intercept-url pattern="/account/role!save*" access="hasAnyRole('ROLE_修改角色')" />
		<s:intercept-url pattern="/account/role!delete*" access="hasAnyRole('ROLE_修改角色')" />
		<s:intercept-url pattern="/account/role*" access="hasAnyRole('ROLE_浏览角色')" />
		<s:x509 user-service-ref="userDetailsService" subject-principal-regex="CN=(.*?)$"/>
		<s:form-login login-page="/login.action" default-target-url="/" authentication-failure-url="/login.action?error=true" />
		<s:logout logout-success-url="/" />
	</s:http>

以上仅增加了x509的配置即可。注意后面的subject-principal-regex视具体情况而定。默认的是【CN=(.*?),】,而我这里配置的是【CN=(.*?)$】这么改的原因是由于我这边的客户端证书主题标识CN放在最后了,如:【C=CN, ST=AH, L=HF, O=CAROOT, OU=CA, CN=admin】,所以subject-principal-regex就是用来如何匹配CN值的正则表达式。

现在weblogic已经支持双向ssl认证了,spring security也增加ssl认证的配置了,现在就缺少客户端证书了,不急,下面继续使用openssl来制作客户端证书
产生user账号对应的秘钥:
D:\work\OpenSSL\bin>openssl genrsa -out user-key.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
.....................................++++++
..++++++
e is 65537 (0x10001)

根据user的秘钥产生证书请求csr文件:
D:\work\OpenSSL\bin>openssl req -new -out user-req.csr -key user-key.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:AH
Locality Name (eg, city) []:HF
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CAROOT
Organizational Unit Name (eg, section) []:CA
Common Name (eg, YOUR name) []:user//这里是指登录账号,与用户表的账号对应
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

使用openssl之前制作的ca根证书对证书请求文件进行签证:
D:\work\OpenSSL\bin>openssl x509 -req -in user-req.csr -out user-cert.pem -signkey user-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 365
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=AH/L=HF/O=CAROOT/OU=CA/CN=user
Getting Private key
Getting CA Private Key

将签证之后的证书文件user-cert.pem导出为p12格式文件(p12格式可以被浏览器识别并安装到证书库中)
D:\work\OpenSSL\bin>openssl pkcs12 -export -clcerts -in user-cert.pem -inkey user-key.pem -out user.p12
Loading 'screen' into random state - done
Enter Export Password://不输入密码,为空
Verifying - Enter Export Password://不输入密码,为空

将签证之后的证书文件user-cert.pem导入至信任秘钥库中(这里由于没有去ca认证中心购买个人证书,所以只有导入信任库才可进行双向ssl交互)
D:\work\OpenSSL\bin>keytool -import -alias user -trustcacerts -file user-cert.pem -keystore exampletrust.jks

需要把最后增加证书的信任秘钥库exampletrust.jks重新复制到domain目录下。

接下来,双击刚才生成的p12文件,将用户证书安装到浏览器的证书库中,步骤就不说了。
现在重新启动weblogic的domain,访问https://localhost:7002/mini-web,出现如下图所示界面:

由于user证书已经安装到浏览器的证书库中了,当访问mini-web时,弹出确认证书窗口

确定之后,需要授予权限,并且输入授权的密码。点击确定按钮之后,直接由spring security根据证书的CN标识完成自动登录,并授予权限,如下图所示:


至此,weblogic的ssl(单向、双向)总算梳理完毕。不足的地方,还有待补充。
4
3
分享到:
评论
5 楼 goldyeah 2017-05-04  
厉害了 困扰我大半个月的问题解决了  谢谢博主
4 楼 nannan408 2017-03-30  
双向的时候谷歌提示“不接受您的登录证书,或者您可能没有提供登录证书”,单向的可以,楼主可遇到这种情况?
3 楼 一颗赛艇 2016-12-28  
不成功啊。启动有问题
<Security> <BEA-090156> <Invalid identity certificate signature: [
2 楼 xiaoliuf4565 2015-12-20  
<s:x509 user-service-ref="userDetailsService" subject-principal-regex="CN=(.*?)$"/>  不懂这个是什么意思
1 楼 xiaoliuf4565 2015-12-20  
给楼主个大大的赞,我司现在也要做这个ssl加密传输,学习了

相关推荐

    Weblogic配置SSL双向认证

    Weblogic 配置 SSL 双向认证 Weblogic 配置 SSL 双向认证是为了确保 Web 应用程序的安全性和加密性。SSL(Secure Sockets Layer)是用于加密 Internet 通信的安全协议。双向认证是指客户端和服务端都需要验证对方的...

    scratch少儿编程逻辑思维游戏源码-拽猫跳跃.zip

    scratch少儿编程逻辑思维游戏源码-拽猫跳跃.zip

    scratch少儿编程逻辑思维游戏源码-足球冠军.zip

    scratch少儿编程逻辑思维游戏源码-足球冠军.zip

    病灶分类粒子群算法优化SVM病灶分类【含Matlab源码 1520期】.md

    机器人开发教程&案例&相关项目资源,奖励仅

    实训商业源码-【原创】Scode源码站原创个人单页-毕业设计.zip

    实训商业源码-【原创】Scode源码站原创个人单页-毕业设计.zip

    实训商业源码-【超人】商家联盟V3.3.0原版免授权-毕业设计.zip

    实训商业源码-【超人】商家联盟V3.3.0原版免授权-毕业设计.zip

    基于STM32的高效步进电机控制算法:SpTA与S型曲线的比较与应用

    内容概要:本文详细介绍了基于STM32的步进电机S型曲线和SpTA加减速控制算法。S型曲线算法通过设定启动频率、加速时间、最高速度和加加速频率等参数,实现平滑的加减速控制,适用于高精度控制场合。SpTA算法则以其良好的自适应性和多路电机控制能力著称,尤其适合CPLD/FPGA环境。文中提供了详细的伪代码和实际代码示例,展示了两种算法的具体实现方法和技术细节。此外,文章还讨论了两种算法的实际测试效果和优化技巧,如利用定时器和DMA提高性能,确保电机运行更加稳定和平滑。 适合人群:从事嵌入式系统开发、步进电机控制及相关领域的工程师和技术爱好者。 使用场景及目标:①需要对步进电机进行高效、稳定的加减速控制;②希望深入了解S型曲线和SpTA算法的工作原理及其实现方法;③寻求优化现有控制系统性能的技术方案。 其他说明:文章不仅提供了理论解释,还包括了大量的代码片段和实际测试数据,帮助读者更好地理解和应用这些算法。

    车牌识别APP模板匹配车牌识别(桂贵京粤苏渝)【含Matlab源码 217期】.md

    计算机二级考试试题&参考资料&心得攻略等资源,

    scratch少儿编程逻辑思维游戏源码-钟声.zip

    scratch少儿编程逻辑思维游戏源码-钟声.zip

    scratch少儿编程逻辑思维游戏源码-宇宙混沌.zip

    scratch少儿编程逻辑思维游戏源码-宇宙混沌.zip

    基于几何相位与补偿相位模型的宽带消色差超构透镜设计与实现——以PR Applied论文为例

    内容概要:本文详细介绍了宽带消色差超构透镜的设计与仿真实现,重点探讨了几何相位和补偿相位的协同作用。通过硅纳米柱结构参数的优化,实现了3.7-4.5μm中红外波段的高效聚焦。文中提供了详细的FDTD建模、Matlab相位计算以及Python优化算法的代码片段,展示了如何通过相位叠加模型解决色散问题。实验结果显示,相比单一几何相位设计,色散补偿效果提升了近3倍,聚焦效率达到了68%。 适合人群:从事光学设计、超构材料研究、电磁仿真领域的科研人员和技术开发者。 使用场景及目标:适用于希望深入了解超构透镜设计原理的研究人员,特别是那些关注宽带消色差性能提升的人群。目标是掌握几何相位与补偿相位的联合应用,提高超构透镜在特定波段的聚焦效率。 其他说明:文章不仅提供了理论推导和公式解释,还分享了许多实际操作中的经验和技巧,如参数扫描、优化算法选择、仿真工具配置等。此外,还讨论了波长泛化能力和常见问题的解决方案。

    【vue】Vue3+TS+Vite+pinia+elementPlus电商项目实战.zip

    【vue】Vue3+TS+Vite+pinia+elementPlus电商项目实战.zip

    scratch少儿编程逻辑思维游戏源码-下落忍者.zip

    scratch少儿编程逻辑思维游戏源码-下落忍者.zip

    西门子1200 PLC轴运动控制程序:成熟应用于装路由器壳子的机器,涵盖伺服与电缸控制及PUT GET通讯块,可复用轴控制与报警块,助力西门子轴控制项目学习与实践

    内容概要:本文详细介绍了基于西门子1200 PLC的轴运动控制在海康威视路由器壳子装配机项目中的应用。主要内容涵盖硬件配置、轴控制程序、气缸报警块、PUT/GET块通讯等多个方面。硬件上,使用西门子1200 PLC为核心控制器,控制3个伺服和1个电缸,并与其他PLC通信。软件层面,通过编写轴控制块、气缸报警块和通讯程序实现了对设备的精确控制。文章不仅展示了具体的代码示例,还分享了许多实战经验和优化技巧,如参数动态加载、通讯超时保护、状态机模式报警处理等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对西门子1200 PLC轴运动控制感兴趣的读者。 使用场景及目标:①学习如何使用西门子1200 PLC进行轴运动控制;②掌握轴控制块、气缸报警块和通讯程序的具体实现;③了解工业自动化项目中的常见问题及其解决方案。 其他说明:文章提供了丰富的实战经验和优化技巧,有助于提高读者在实际项目中的开发效率和解决问题的能力。此外,附带的代码示例和详细的注释使得学习更加直观和易懂。

    scratch少儿编程逻辑思维游戏源码-纸片马里奥 激流勇进.zip

    scratch少儿编程逻辑思维游戏源码-纸片马里奥 激流勇进.zip

    XK7130数控铣床工作台及床身设计.rar

    XK7130数控铣床工作台及床身设计.rar

    基于最优线性二次型理论的多智能体系统带外部干扰的最优控制问题研究

    内容概要:本文详细探讨了基于最优线性二次型(LQR)理论的多智能体系统最优控制问题,特别是针对存在外部干扰的情况。文章首先介绍了在无外部干扰条件下,通过性能指标函数优化获得最优分布式控制协议,并展示了具体的Python代码实现。接着,为了应对外部干扰,引入了DOBC(基于干扰观测器的控制)方法,通过估计并补偿干扰,确保系统的稳定性。此外,还提出了带有最小采样粒度的事件触发机制,进一步提高了控制效率,减少了计算资源的消耗。最终,通过仿真验证了所提出方法的有效性和优越性。 适合人群:对多智能体系统、最优控制理论以及相关应用感兴趣的科研人员和技术开发者。 使用场景及目标:适用于需要处理复杂环境下多智能体协作任务的研究项目,如机器人集群控制、自动化系统管理等。主要目标是在存在外部干扰的情况下,实现高效稳定的多智能体系统控制。 其他说明:文中提供了详细的代码示例,帮助读者更好地理解和实现所讨论的技术细节。同时,强调了在实际应用中需要注意的问题,如干扰估计的收敛速度、事件触发条件的设计等。

    MATLAB代码实现电气热综合能源系统耦合优化调度模型及仿真平台分析

    内容概要:本文详细介绍了利用MATLAB及其工具箱YALMIP和求解器CPLEX/Gurobi构建电-气-热综合能源系统的耦合优化调度模型。该模型采用39节点电力系统、比利时20节点天然气系统以及热网系统进行建模,通过直流潮流、线性化处理等手段将复杂的非线性问题转化为线性规划问题,从而提高求解效率。文中展示了具体的数学公式、代码片段及求解策略,如目标函数的设计、气网平衡方程的处理、热电联产(CHP)和电转气(P2G)设备的约束条件等。此外,还讨论了求解器的选择与性能比较,以及模块化的代码设计思想。 适合人群:从事能源系统优化研究的专业人士,尤其是对电力系统、天然气系统和热网系统有深入了解的研究人员和技术人员。 使用场景及目标:适用于希望深入理解电-气-热综合能源系统耦合机制的研究者和技术开发者。主要目标是掌握如何通过MATLAB实现高效的多能耦合优化调度,探索不同能源系统之间的相互作用及其对整体系统性能的影响。 其他说明:文章不仅提供了详细的理论推导和代码实现,还分享了许多实践经验,如参数调优、线性化处理技巧等。这对于实际工程项目中的应用具有重要的指导意义。

    scratch少儿编程逻辑思维游戏源码-月影——城市素材.zip

    scratch少儿编程逻辑思维游戏源码-月影——城市素材.zip

Global site tag (gtag.js) - Google Analytics