关于weblogic:全网最全weblogic自定义Provider开发教程

weblogic Provider做过OAM,OID我的项目的同学应该都晓得,要集成OAM和OID须要在weblogic的Security Realms中配置Provider,那什么是Provider?在业务零碎中,认证和受权始终是最简单的一块,体现在 认证协定多样性,比方OAuth2,SAML等认证形式多样性,比方二次认证,验证码认证等认证策略多样性,比方有多个认证源,策略能够多样性,能够是一个不通过就不通过,也能够是只有有一个通过就全副通过自定义认证的需要,这个在企业外面还是挺多的,一些零碎上线时还没有相应的规范进去,所以都是自开发明码认证策略多样性,大部分零碎明码存储是不可逆的,如果一开始没有将明码存储在LDAP之类的服务里,后续如果要做降级,就无奈拿到原始明码,那么就须要自定义明码认证策略。总之,认证并不是用户名明码验证这么简略,所以weblogic针对不同的认证场景提供不同的Provider,weblogic作为成熟的商业服务器,天然蕴含大部分认证场景,以weblogic 11g为例,蕴含了以下Provider SAML2IdentityAsserterX3gppAssertedIdentityAsserterX3gppAssertedIdentityStrictAsserterDBMSDigestIdentityAsserterIdentityAssertionAuthenticatorIdentityHeaderAsserterLdapDigestIdentityAsserterPAssertedIdentityAsserterPAssertedIdentityStrictAsserterCrossTenantAuthenticatorTrustServiceIdentityAsserterOSSOIdentityAsserterOAMIdentityAsserterOAMAuthenticatorActiveDirectoryAuthenticatorCustomDBMSAuthenticatorDefaultAuthenticatorDefaultIdentityAsserterIPlanetAuthenticatorLDAPAuthenticatorLDAPX509IdentityAsserterNegotiateIdentityAsserterNovellAuthenticatorOpenLDAPAuthenticatorOracleInternetDirectoryAuthenticatorOracleVirtualDirectoryAuthenticatorReadOnlySQLAuthenticatorSQLAuthenticatorWindowsNTAuthenticatorSAMLAuthenticatorSAMLIdentityAsserterSAMLIdentityAsserterV2通过观察下面的列表,咱们发现有两类Provider xxxAsserterxxxAuthenticator那么这两个有什么区别,搞清楚这两个的区别十分重要,你进小区,如果你有带房卡就能够间接进,如果没有,你就得证实你是小区的户主,可能就须要你提供身份证,电话之类的信息,同理,如果带着token或者cookie拜访零碎那么就须要Asserter进行认证受权,如果带着用户名明码登录零碎就须要Authenticator进行认证,总之,Asserter看token,Authenticator看明码,那配过OAM单点登录的同学应该晓得,要实现OAM单点登录须要配置两个货色 配置OAMIdentityAsserter配置OracleInternetDirectoryAuthenticator那问题来了,为什么有了OAMIdentityAsserter还须要OracleInternetDirectoryAuthenticator?用户在登录页登录后,后续所有的申请都是通过OAMIdentityAsserter解析OAM信息进行认证受权,那么还须要Authenticator干嘛?Asserter获取的用户信息无限,只能从token外面解析出无限的用户信息,个别就是用户ID,那么须要判断用户存不存在或者须要更多的用户信息就须要借助Authenticator JAASJAAS(Java Authentication and Authorization Service)是Java提供集成在JDK中(在javax.security.auth门路下)规范用户认证与受权模型,简略来说,JAAS提供了一系列的接口,不同认证形式通过实现接口从而能够以插件的模式集成到java应用程序中,JAAS架构图下 在JAAS中有几个重要的概念须要理解 SubjectSubject示意请求者,可能是一个人也可能是一个设施 PrincipalPrincipal是关联在Subject下,后面提到Subject示意的是请求者,咱们用登录用户会更好了解点,那么Principal就是用户的账号,可能是用手机号登录的,也可能是用邮箱登录的,Subject能够有多个Principal LoginContextLoginContext认证上下文,提供一系列认证办法,负责调用具体的认证实现(LoginModule),并且认证胜利后返回Subject LoginModule认证的具体实现,其中login办法实现登录逻辑,存储后果,commit办法最终将Subject提交到上下文 CallbackHandler当LoginModule须要拿到用户名和明码等认证信息时,就须要调用CallbackHandler返回这些信息,在gui利用中,CallbackHandler可能会弹出一个窗口让用户输出用户名和明码 CallbackLoginModule须要获取的用户信息成为Callback,比方须要向CallbackHandler获取用户名,那么就会创立一个NameCallback,须要获取明码就会创立一个PasswordCallback,CallbackHandler依据Callback的类型返回用户信息 我的项目背景某我的项目须要将OAM替换成其余产品,要求不能批改利用,做到无缝切换,利用部署在webogic上,通过OAMIdentityAsserter和OracleInternetDirectoryAuthenticator集成OAM和OID实现单点登录,利用局部配置如下 web.xml <security-constraint> <web-resource-collection> <web-resource-name>SecurePages</web-resource-name> <description>These pages are only accessible by authorized users.</description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> </web-resource-collection> <auth-constraint> <description>These are the roles who have access.</description> <role-name>ValidUser</role-name> </auth-constraint> <user-data-constraint> <description>This is how the user data must be transmitted.</description> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint></security-constraint><login-config> <auth-method>CLIENT-CERT</auth-method> <realm-name>myrealm</realm-name></login-config><security-role> <description>These are the roles who have access.</description> <role-name>ValidUser</role-name></security-role>weblogic.xml <wls:security-role-assignment> <wls:role-name>ValidUser</wls:role-name> <wls:principal-name>users</wls:principal-name> </wls:security-role-assignment>留神到web.xml中login-config的配置<auth-method>CLIENT-CERT</auth-method>,这个配置示意利用从上下文获取用户信息,也就是从HttpServletRequest的getUserPrincipal办法获取用户信息 ...

May 12, 2021 · 7 min · jiezi

关于weblogic:运维攻坚之bpm-token无效问题

背景某我的项目在weblogic降级失败后进行回滚,回滚后环境接口无法访问,报500异样,接口为BPM Service客户端程序,谬误如下: SEVERE: <.> getTokenType: invalid token: e0FFU31EbGdrK0IxSlV1WkFMM0doc2dlMUJxdWpjQmEza0tzZGNncnlOSUlLdnFaT0QrY1pyanBBa0d0MTdURHhqbmx4SWJ1d3hvMGsxNmZyaUJFcDIvbGd3MkFWUjRCUXVZdFhvemcxZmprQm83akFoS3pMSWVxeG1DT213VkJpUW5rUWhzQ3lVSmRUT204dXdUUmI2bnlsdEg4bTducTFBWVd0eDVKWjdVSHRiRndsRkRxcjQrZnBVKzBoV0lkc1lRZXQ2VlZkSDRtNUp0V05LYW1SdGNMNWZOUE0rVTVtaEhYYWU5czg4c1VLNHIvenFDN05GTXFieGl6YXJubkd6ZHhTSEZRcUxiRTlmK3ZaNzlLMVlCNExmbkJhL0pSY2hvanlHZ0ZyQWJLdVhJbz0=SEVERE: <.> Invalid Token Error in Verification Service.Invalid Token Error in Verification Service. Received invalid token in getTokenType.Verify that correct token is passed.ORABPEL-30503Invalid Token Error in Verification Service.Invalid Token Error in Verification Service. Received invalid token in getTokenType.Verify that correct token is passed. at oracle.bpel.services.workflow.verification.impl.Token.getTokenType(Token.java:545) at oracle.bpel.services.workflow.verification.impl.Token.isSameValue(Token.java:314) at oracle.bpel.services.workflow.verification.impl.VerificationService.isInternalWorkflowContext(VerificationService.java:689)排查从谬误日志上看是token问题,首先就要搞清楚token是怎么来的,通过排查,整顿出token的逻辑如下 1.用户在登录页输出用户名明码登录2.后盾登录bpm获取token3.bpm token通过加密后作为jwt的claim放入jwt token中4.用户带上jwt token获取代办5.后盾解码jwt token,从jwt中获取bpm token的claim6.解密bpm token7.带上bpm token调用bpm api还有一个比拟重要的信息是,登录获取token的接口和调用bpm api的接口不在同一个war包里,所以一开始狐疑是两边bpm相干jar包版本不一样,比方登录生成token用的jar包和调用bpm api用的jar包如果版本不一样,那么token就可能无奈被辨认,而后都是朝着这个方向去排查,试了很多计划 ...

November 30, 2020 · 2 min · jiezi

关于weblogic:weblogic密码破解全攻略

背景置信做过oracle中间件的同学必定都会遇到这样的状况 遗记weblogic管理员明码遗记数据库schema明码我的项目就像流水一样永不平息,每个我的项目又有多套环境,每个环境又有超级多的服务器,就产生了超级多的明码,程序员又懒又自负,自认为能记住所有明码,后果往往是喜剧的,侥幸的是weblogic帮咱们记住了所有的明码,尽管是加密的,但因为weblogic自身也要应用明码进行验证,因而加密必然是可逆的,这篇文档介绍如何进行解密。 在weblogic后盾配置文件中,有很多是蕴含明码的,比方boot.properties,config.xml等,这些明码都被加密过,你看到的模式为{AES}xxxxxx都是明码。 过程解密关键步骤是拿到密钥,weblogic密钥位于${DOMAIN_HOME}/security/SerializedSystemIni.dat中,比方/u01/Middleware/user_projects/domains/portal_domain/security/SerializedSystemIni.dat,该文件是一个64字节的二进制文件,每个domain都有一个这个文件。 本地创立一个新的目录(如/workspace/secret/,把密钥文件SerializedSystemIni.dat下载到该目录下执行以下代码,获取明码明文package com.definesys.weblogic;import java.io.*;import weblogic.security.internal.*;import weblogic.security.internal.encryption.*;/** * @Description: * @author: jianfeng.zheng * @since: 2020/9/4 1:43 下午 * @history: 1.2020/9/4 created by jianfeng.zheng */public class Cracker { public static void main(String[] args) { String secretDirectory = "/workspace/secret/"; String password = "{AES}3lQ83x6dp5ZdmtCbLOs+5E8o48nfOK2na5TZD6oMrvi9L5fTbHk+VE6A9bn4xIXl"; ClearOrEncryptedService ces = new ClearOrEncryptedService(SerializedSystemIni.getEncryptionService(new File(secretDirectory).getAbsolutePath())); String pwd = ces.decrypt(password); System.out.println(pwd); }}secretDirectory:密钥所在目录password:加密后的明码依赖包程序须要两个依赖包 wlfullclient.jarcryptoj.jar这两个依赖包能够从weblogic后盾下载,门路如下 $WL_HOME/server/lib/wlfullclient.jar 如:/u01/Middleware/wlserver_10.3/server/lib/wlfullclient.jar$WL_HOME/server/lib/cryptoj.jar 如:/u01/Middleware/wlserver_10.3/server/lib/cryptoj.jar如果没有wlfullclient.jar须要自行构建,构建办法如下 [oracle]$ cd /u01/Middleware/wlserver_10.3/server/lib[oracle]$ java -jar /u01/Middleware/modules/com.bea.core.jarbuilder_1.7.0.0.jar肯定要在server/lib目录下构建更不便的办法如果有服务器后盾权限,借助wlst工具,有更简略的办法,如下 [oracle]$ cd /data/Middleware/wlserver_10.3/common/bin[oracle]$ ./wlst.sh ...Type help() for help on available commandswls:/offline> domain = "/data/Middleware/user_projects/domains/portal_domain"wls:/offline> service = weblogic.security.internal.SerializedSystemIni.getEncryptionService(domain)wls:/offline> encryption = weblogic.security.internal.encryption.ClearOrEncryptedService(service)wls:/offline> print encryption.decrypt("{AES}1nZiIY0Fb1BckEaX7F/3V3MR+io2/dxJUfoUm3iH13S=")这里输入明码总结就是登录wlst后,执行以下语句,批改为特定环境的domain门路和须要解密的明码即可 ...

November 19, 2020 · 1 min · jiezi

关于weblogic:weblogic补丁安装步骤

补丁下载oracle每个季度都会更新一次补丁,能够从这里下载oracle产品每个季度的补丁,点击去后,在右边找到你的产品,点击左边进入补丁下载 补丁下载须要登录oracle support,你必须先注册一个support账号,进入后在产品列表找到产品 点击补丁编号就能够下载补丁 补丁装置备份须要备份整个中间件目录,即备份Middleware目录,备份没有实现之前肯定不要装置补丁,特地是生产环境,备份命令参考如下 cp -ar Middleware Middleware_bak20201024补丁上传把补丁文件上传到服务器并且解压,个别上传到${MW_HOME}/utils/bsu/cache_dir目录下,当然也能够其余目录。 MW_HOME示意中间件目录,比方/u01/Middleware批改bsu文件批改${MW_HOME}/utils/bsu/bsu.sh脚本jvm内存参数 MEM_ARGS="-Xms1024m -Xmx4096m"敞开服务器确认进行所有weblogic服务器,包含admin服务器,能够用jps -v命令确认,命令没有显示正在运行的服务器即可 执行补丁脚本须要用oracle用户装置$ cd {MW_HOME}/utils/bsu$ ./bsu.sh -install -patch_download_dir=/data/Middleware/utils/bsu/cache_dir -patchlist=I37G -prod_dir={WL_HOME}Checking for conflicts.......................No conflict(s) detectedInstalling Patch ID: I37G..Result: Success比方 $ cd /data/Middleware/utils/bsu$ ./bsu.sh -install -patch_download_dir=/data/Middleware/utils/bsu/cache_dir -patchlist=I37G -prod_dir=/data/Middleware/wlserver_10.3Checking for conflicts.......................No conflict(s) detectedInstalling Patch ID: I37G..Result: Success脚本会在Checking for conflicts执行较长时间,这个是失常的,不要强行中断,如果没有抵触脚本就开始失常装置补丁,如果有抵触,依据提醒解决抵触,具体问题具体解决 验证补丁执行以下命令验证补丁是否装置胜利 $ . $WL_HOME/server/bin/setWLSEnv.sh$ java weblogic.versionWebLogic Server 10.3.6.0.200714 PSU Patch for BUG31178492 Fri Jun 5 20:42:30 PDT 2020WebLogic Server 10.3.6.0 Tue Nov 15 08:52:36 PST 2011 1441050 Use 'weblogic.version -verbose' to get subsystem informationUse 'weblogic.utils.Versions' to get version information for all modules验证装置胜利后即可重启所有服务器 ...

October 23, 2020 · 1 min · jiezi

wlst获取weblogic数据源运行时信息

背景weblogic可以通过console查看数据源运行时统计信息,如当前活动数,最大容量,最小容量等,如果Server数量庞大或者需要做数据源统计监控功能,那么需要通过程序定时获取数据源运行时信息,有两个方案可以获取到数据源运行时信息。 通过JMX获取weblogic运行时MBean信息,从MBean中获取数据源运行时信息。通过jython脚本获取数据源运行时信息,这也是本文要介绍的方法。 wlst 脚本基本思路就是通过连接服务器获取数据源运行时信息,通过csv格式输出到文件里,csv文件可以通过excel打开做统计分析,也可以将csv文件上传到服务器通过第三方程序进行统计分析。 import sysurl=sys.argv[1]username=sys.argv[2]password=sys.argv[3]connect(username,password,'t3://'+url)file=open("datasource.csv",'a')file.write("machine,server,Name,ActiveConnectionsAverageCount,ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,ConnectionDelayTime,ConnectionsTotalCount,CurrCapacity,CurrCapacityHighCount,DeploymentState,FailedReserveRequestCount,FailuresToReconnectCount,HighestNumAvailable,HighestNumUnavailable,LeakedConnectionCount,NumAvailable,NumUnavailable,PrepStmtCacheAccessCount,PrepStmtCacheAddCount,PrepStmtCacheCurrentSize,PrepStmtCacheDeleteCount,PrepStmtCacheHitCount,PrepStmtCacheMissCount,Properties,ReserveRequestCount,State,WaitingForConnectionCurrentCount,WaitingForConnectionFailureTotal,WaitingForConnectionHighCount,WaitingForConnectionSuccessTotal,WaitingForConnectionTotal,WaitSecondsHighCount\n")allServers=domainRuntimeService.getServerRuntimes();if (len(allServers) > 0): for tempServer in allServers: jdbcServiceRT = tempServer.getJDBCServiceRuntime(); dataSources = jdbcServiceRT.getJDBCDataSourceRuntimeMBeans(); if (len(dataSources) > 0): for dataSource in dataSources: print "Server:" , tempServer print "Datasource:" , dataSource.getName() print "ActiveCount" , dataSource.getActiveConnectionsCurrentCount() file.write(url+",") file.write(str(tempServer.getName())+",") file.write(str(dataSource.getName())+",") file.write(str(dataSource.getActiveConnectionsAverageCount())+",") file.write(str(dataSource.getActiveConnectionsCurrentCount())+",") file.write(str(dataSource.getActiveConnectionsHighCount())+",") file.write(str(dataSource.getConnectionDelayTime())+",") file.write(str(dataSource.getConnectionsTotalCount())+",") file.write(str(dataSource.getCurrCapacity())+",") file.write(str(dataSource.getCurrCapacityHighCount())+",") file.write(str(dataSource.getDeploymentState())+",") file.write(str(dataSource.getFailedReserveRequestCount())+",") file.write(str(dataSource.getFailuresToReconnectCount())+",") file.write(str(dataSource.getHighestNumAvailable())+",") file.write(str(dataSource.getHighestNumUnavailable())+",") file.write(str(dataSource.getLeakedConnectionCount())+",") file.write(str(dataSource.getNumAvailable())+",") file.write(str(dataSource.getNumUnavailable())+",") file.write(str(dataSource.getPrepStmtCacheAccessCount())+",") file.write(str(dataSource.getPrepStmtCacheAddCount())+",") file.write(str(dataSource.getPrepStmtCacheCurrentSize())+",") file.write(str(dataSource.getPrepStmtCacheDeleteCount())+",") file.write(str(dataSource.getPrepStmtCacheHitCount())+",") file.write(str(dataSource.getPrepStmtCacheMissCount())+",") file.write(str(dataSource.getProperties())+",") file.write(str(dataSource.getReserveRequestCount())+",") file.write(str(dataSource.getState())+",") file.write(str(dataSource.getWaitingForConnectionCurrentCount())+",") file.write(str(dataSource.getWaitingForConnectionFailureTotal())+",") file.write(str(dataSource.getWaitingForConnectionHighCount())+",") file.write(str(dataSource.getWaitingForConnectionSuccessTotal())+",") file.write(str(dataSource.getWaitingForConnectionTotal())+",") file.write(str(dataSource.getWaitSecondsHighCount())) file.write("\n")运行脚本要执行wlst脚本,你需要有weblogic环境,建议在服务器上执行。 ...

October 1, 2019 · 1 min · jiezi

weblogic1221EOS76部署记

> weblogic12.2.1安装java -jar fmw_12.2.1.0.0_wls.jar时需要jdk1.7安装后,配置向导选jdk1.8且版本152(以上)> EOS Server 7.6安装weblogic需要处于启动状态!bea home:D:OracleMiddlewareOracle_Homeweblogic home: D:OracleMiddlewareOracle_Homewlserverdomain: D:OracleMiddlewareuser_projectsdomainsbase_domainserver: AdminServer如需修改默认端口7001,需先修改后再安装EOS,否则workspace登录存在问题> 部署包上传大小限制修改D:OracleMiddlewareOracle_Homeuser_projectsdomainsbase_domainapplicationsgovernor.warWEB-INF_srvconfig下user_config.xml<group name="FileUpload"> <configValue key="TempDir">upload</configValue> <configValue key="MaxSize">184857600</configValue> <configValue key="InMemorySize">10240</configValue> <!--files with specified ext names are not accespted when uploading --> <configValue key="Exclude">exe,java,jsp,html,htm,class,jar</configValue></group>> jar冲突解决方案替换weblogic.xml:D:OracleMiddlewareOracle_Homeuser_projectsdomainsbase_domainapplicationsdefault.eardefault.warWEB-INF删除掉D:OracleMiddlewareOracle_Homeoracle_commonmodules下commonj.sdo.jar、commonj.sdo.backward.jarxmlbeans-2.3.0换为2.6.0(可能)排查过程查看应用日志contribution.log得知:[2019-05-2416:26:52,178]ERROR[Line:166]loadAuthService[IAuthManagerService=org.gocom.components.coframe.auth.DefaultAuthManagerService]error. java.lang.LinkageError: loader constraint violation: whenresolving interface method"javax.xml.stream.XMLStreamReader.getName()Ljavax/xml/namespace/QName;"the class loader (instance ofweblogic/utils/classloaders/ChangeAwareClassLoader) of the currentclass, com/primeton/spring/parser/SpringConfigFileParser, and theclass loader (instance of <bootloader>) for the method's definingclass, javax/xml/stream/XMLStreamReader, have different Class objectsfor the type javax/xml/namespace/QName used in the signature通过findClass工具查找com/primeton/spring/parser/SpringConfigFileParser对应jar,出现在普元的哪个jar中:F:primeton6for3276ideeclipsejrebinjava -cp ant.jar;. FindClass com.primeton.spring.parser.SpringConfigFileParser F:primeton6for3276ideeclipse(上述例子就是在F:primeton6for3276ideeclipse目录下,搜索com.primeton.spring.parser.SpringConfigFileParser所在位置)结果是eos-server-spring开头的jar ...

May 26, 2019 · 1 min · jiezi

WebLogic服务器打补丁11g12c

背景2019年04月17日,Oracle发布新季度安全公告。该安全公告披露WebLogic服务器存在多个高危漏洞,影响多个版本多个WebLogic组件。这次我们以本次事件为例,讲解如何给WebLogic(11g/12c)服务器打补丁。 本次漏洞受影响的包括三个Oracle WebLogic Server版本,分别是: 10.3.6.0.012.1.3.0.012.2.1.3.0补丁下载点击进入补丁下载页面,你需要提前注册好oracle账号才能下载。 该页面内容较多,比较不容易找到需要的补丁,有个小技巧,按 Ctrl+F 进行关键字搜索,搜索 weblogic 看到有链接的地方点击进入,可以直接跳转到补丁下载地址,如图: 以下是我们整理好的补丁的下载地址,你也可以直接点击下载: 10.3.6.0.0 补丁下载12.1.3.0.0 补丁下载12.2.1.3.0 补丁下载补丁安装 - 10.3.6.0.010.3.6.0.0是通过 PSUs (patch set updates)工具对补丁进行安装。 1. 关闭服务器登陆console控制台,将所有server包括admin server关闭 2. 备份中间件目录(重要)安装补丁前请务必备份好中间件目录(是中间件目录不是domain),以便修复过程发生意外可以恢复。假设我们的中间件目录为/u01/app/Oracle/Middleware $ cd /u01/app/Oracle/Middleware$ cp -rf Middleware Middleware_bak20190423备份时间较长,可以先去喝杯咖啡,备份完成后继续以下步骤。 3. 上传补丁,准备环境将下载好的补丁,通过ftp等工具将补丁文件 p29204678_1036_Generic.zip 上传至 {MW_HOME}/utils/bsu/cache_dir目录下并解压,cache_dir 目录如果没有需要手动创建。如果之前有上传过补丁,则先将之前的补丁删除后再上传。 -rw-r--r-- 1 oracle oinstall 101146211 Apr 19 17:09 p29204678_1036_Generic.zip-rw-r--r-- 1 oracle oinstall 136403408 Feb 4 04:30 patch-catalog_26516.xml-rw-r--r-- 1 oracle oinstall 136403408 Apr 19 18:25 patch-catalog.xml-rw-rw-r-- 1 oracle oinstall 61197 Apr 15 17:56 README.txt-rw-r--r-- 1 oracle oinstall 93124490 Feb 4 04:30 U5I2.jar4、修改bsu.sh配置为了避免补丁安装过程中内存不足,建议对bsu.sh进行修改,将默认的内存最小值从256m修改为1024m;最大值从513m修改为2048m ...

May 3, 2019 · 1 min · jiezi

weblogic 脚本创建Managed Server (受管服务器)

说明weblogic安装目录下有一个创建Managed Server的脚本,脚本位于/u01/app/Oracle/Middleware/oracle_common/common/bin/config.sh下,但脚本会启动一个GUI界面程序,在Linux下需要安装图形界面程序,非常不方便。wlst(WebLogic Scripting Tools,WebLogic)是一个用来管理和配置weblogic的CLI命令行工具,可以运行Jython脚本,本文介绍如何通过该工具创建Managed Server。WLST介绍wlst位于/u01/app/Oracle/Middleware/wlserver_10.3/common/bin/wlst.sh目录下,其中/u01/app/Oracle/Middleware/wlserver_10.3目录为$WEBLOGIC_HOME,所以严谨的讲,是安装在$WEBLOGIC_HOME/common/bin/wlst.sh下。直接执行该脚本即可运行wlst工具。$ cd /u01/app/Oracle/Middleware/wlserver_10.3/common/bin/$ ./wlst.shInitializing WebLogic Scripting Tool (WLST) …Welcome to WebLogic Server Administration Scripting ShellType help() for help on available commandswls:/offline> connect(‘weblogic’,‘weblogic1’,’t3://localhost:7001’)Connecting to t3://localhost:7001 with userid weblogic …Successfully connected to Admin Server ‘AdminServer’ that belongs to domain ‘base_domain’.Warning: An insecure protocol was used to connect to theserver. To ensure on-the-wire security, the SSL port orAdmin port should be used instead.wls:/base_domain/serverConfig> cd(’/’)wls:/base_domain/serverConfig> ls()dr– AdminConsoledr– AppDeploymentsdr– BridgeDestinationsdr– Clustersdr– CoherenceClusterSystemResourcesdr– CoherenceServers….wlst有offline(离线)和online(在线)两种模式,通过connect命令可以从offline进入online,wlst按照liux目录形式对weblogic资源进行管理,甚至连操作的命令都和linux高度相似,比如cd是切换到指定资源路径下,ls()是列出该目录下所有资源。如要了解更多关于wlst的内容,可以查看官方文档。wlst脚本本脚本原作者为Tim Hall,本文这里稍作修改,以下为脚本代码 create_managed_server.py#!/usr/bin/python# Author : Tim Hall# Modified : Jianfeng.Zheng# Save Script as : create_managed_server.pyimport timeimport getoptimport sysimport re# Get location of the properties file.properties = ‘’try: opts, args = getopt.getopt(sys.argv[1:],“p:h::”,[“properies=”])except getopt.GetoptError: print ‘create_managed_server.py -p <path-to-properties-file>’ sys.exit(2)for opt, arg in opts: if opt == ‘-h’: print ‘create_managed_server.py -p <path-to-properties-file>’ sys.exit() elif opt in ("-p", “–properties”): properties = argprint ‘properties=’, properties# Load the properties from the properties file.from java.io import FileInputStream propInputStream = FileInputStream(properties)configProps = Properties()configProps.load(propInputStream)# Set all variables from values in properties file.adminUsername=configProps.get(“admin.username”)adminPassword=configProps.get(“admin.password”)adminURL=configProps.get(“admin.url”)msName=configProps.get(“ms.name”)msAddress=configProps.get(“ms.address”)msPort=configProps.get(“ms.port”)msMachine=configProps.get(“ms.machine”)# Display the variable values.print ‘adminUsername=’, adminUsernameprint ‘adminPassword=’, adminPasswordprint ‘adminURL=’, adminURLprint ‘msName=’, msNameprint ‘msAddress=’, msAddressprint ‘msPort=’, msPortprint ‘msMachine=’, msMachine# Connect to the AdminServer.connect(adminUsername, adminPassword, adminURL)edit()startEdit()# Create the managed Server.cd(’/’)cmo.createServer(msName)cd(’/Servers/’ + msName)cmo.setListenAddress(msAddress)cmo.setListenPort(int(msPort))# Associated with a node manager.cd(’/Servers/’ + msName)cmo.setMachine(getMBean(’/Machines/’ + msMachine))save()activate()disconnect()exit()properties文件脚本所需参数通过properties文件传入,以下是properties文件 api-api-managed-server.properties # AdminServer connection details.admin.username=weblogicadmin.password=weblogic1admin.url=t3://10.1.11.71:7001ms.name=api-serverms.address=0.0.0.0ms.port=7002ms.machine=api-server-machineadmin.username: weblogic管理员用户名admin.password: weblogic管理员密码admiin.url: weblogic控制台地址需要加上t3协议字段ms.name: managed server名称,可以自定义ms.address: managed server监听地址ms.port: managed server监听端口号ms.machine: managed server关联的计算机名称ms.machine需要提前创建好,可以在weblogic控制台页面http://localhost:7001/console/console.portal?_nfpb=true&_pageLabel=CoreMachineMachineTablePage创建运行将create_managed_server.py和api-api-managed-server.properties文件上传到服务器,这里上传到目录~/shell下$ cd /u01/app/Oracle/Middleware/user_projects/domains/base_domain/bin$ . ./setDomainEnv.sh$ java weblogic.WLST ~/shell/create_managed_server.py -p ~/shell/api-managed-server.properties ps:. ./setDomainEnv.sh第一个点(.)不能省略执行完毕后登录console查看结果。参考https://oracle-base.com/articles/web/wlst-create-managed-serverhttps://docs.oracle.com/cd/E13222_01/wls/docs90/config_scripting/using_WLST.html ...

February 18, 2019 · 2 min · jiezi

Weblogic 12版本以下服务器如何调整SSL协议和加密套件

Weblogic SSL证书部署 、 SSL证书申请注:请认真细读里面的每个步骤。针对不同系统安装的weblogic 需要调整不同的启动文件,此目的是为了提示低版本的weblogic可以支持TLS1.0以上安全协议和提升安全加密套件而制作。注意:首先要额外(Windows:安装jdk新的版本)或是(Linux或centos:编译安装jdk新版本)。然后记住安装编译的路径。Windows 版本weblogic1:根据您安装weblogic目录和您创建用户的账户路径而定:我的测试环境如下例如:1.1:(C:OracleMiddlewareuser_projectsdomainszzidc.com)我的账户目录。1.2:来到账户中的(bin)目录中。1.3:修改前备份好原始文件(必需做的一步,以防万一。可以恢复原始)。找到此文件 “setDomainEnv.cmd”(linux环境修改setDomainEnv.sh)用记事本打开,接着找到里面set WL_HOME 的参数段,如下: 保存重启即可。1.4:最后通过openssl 来测试是否已经启用了TLS1.0以上的安全协议,可以运用此命令:首先你得有Openssl的插件目录(我的环境:D:OpenSSL-Win64bin>。Linux下也可以检测)通过命令定位到openssl的bin路径下。1.5:输入命令:openssl s_client -connect test.yibaomd.com:443 –status红色部分可以换成你的IP或是域名。执行结果:如图提示:Protocol: TLSv1.2 就说明指定替换成功。1.6:以上为安全协议已经是调整为最佳状态。接下来就是要调整加密套件。可以参考此路径中的tomcat7方案进行调整:https://bbs.wosign.com/forum….1.7:同样:首先到您的账户目录中的config的目录中找到:config.xml的配置文件用记事本打开:找到到“<SSL></SSL>”的节点。加入红色的套件(以下为测试环境加密套件仅作参考)如需额外根据环境调整请参考上诉提供的BBS论坛中的自行调整。<ssl><enabled>true</enabled><ciphersuite>TLS_RSA_WITH_AES_128_CBC_SHA</ciphersuite><ciphersuite>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</ciphersuite><ciphersuite>TLS_RSA_WITH_AES_128_CBC_SHA256</ciphersuite><ciphersuite>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</ciphersuite><hostname-verification-ignored>true</hostname-verification-ignored>。。</ssl>最好保存1.8:调整加密套件后就需要测试是否真正达到和提升服务器安全需要通过扫描工具进行扫描:https://wosign.ssllabs.com/ 扫描的域名必须默认443端口:如下图:未调整前结果:调整后结果:大功告成。。。。。。。。。。。。。沃通技术支持原创文章,转载请注明来源

January 22, 2019 · 1 min · jiezi