Weblogic的HTTPS配置过程与最佳实践指南
一、引言
Weblogic作为一款广泛使用的Java EE应用服务器,在生产环境中,我们经常需要配置HTTPS来保证数据传输的安全性。
本文将详细介绍Weblogic的HTTPS配置过程,并分享一些最佳实践,以帮助您更好地进行配置。
二、HTTPS配置步骤
1. 生成密钥库和证书
HTTPS配置的第一步是生成密钥库和证书。
您可以使用Java的keytool工具生成密钥库和自签名证书,或者从权威的证书颁发机构(CA)获取证书。
以下是使用keytool生成密钥库和自签名证书的示例命令:
“`bash
keytool -genkey -alias server -keyalg RSA -keystore keystore.jks -keysize 2048
“`
在执行此命令后,您需要提供一些信息,如密钥库密码、别名、证书密码等。请确保妥善保管这些信息。
2. 配置Weblogic使用密钥库和证书
在Weblogic中,您需要在启动脚本或配置文件中指定密钥库和证书的位置。对于Weblogic Server,您可以在启动脚本中设置以下系统属性:
“`bash
-Dweblogic.ssl.JKSKeyFile=<密钥库文件的绝对路径>
-Dweblogic.ssl.JKSKeyPassword=<密钥库密码>
“`
对于Weblogic Domain,您可以在domain.xml文件中的SSL选项卡下配置这些属性。
3. 配置SSL监听端口
在Weblogic中创建一个SSL监听端口以接收HTTPS请求。
您可以在Weblogic管理控制台中的“网络配置”部分创建SSL监听端口,并指定它使用前面配置的密钥库和证书。
在创建SSL监听端口时,请确保选择正确的协议版本和加密套件。
4. 配置应用程序使用HTTPS
如果您的应用程序需要支持HTTPS,您需要在应用程序的配置文件中更新URL,使其使用HTTPS协议。
如果您的应用程序使用Java客户端证书进行身份验证,您还需要在Weblogic中配置客户端证书验证。
三、最佳实践指南
1. 使用权威的证书颁发机构(CA)证书
为了提高安全性,建议使用从权威证书颁发机构获取的证书,而不是自签名证书。
权威证书颁发机构提供的证书已经过验证,具有更高的信任度。
2. 定期更新证书
证书具有有效期,过期后需要重新生成或更新。
请确保在证书过期前进行更新,以免影响系统的安全性。
可以设置提醒或自动化工具来跟踪证书的到期日。
3. 使用强加密算法和协议版本
在配置SSL监听端口时,请确保选择强加密算法和最新的协议版本。
避免使用已知存在安全漏洞的算法和协议版本。
可以通过查阅最新的安全报告和推荐来选择合适的加密算法和协议版本。
4. 启用客户端证书验证(可选)
如果需要对客户端进行身份验证,可以启用客户端证书验证。
在Weblogic中,您可以配置SSL监听端口以要求客户端提供证书进行身份验证。
请确保妥善保管客户端证书的密钥库和密码。
5. 配置SSL调试日志(可选)
为了诊断和解决SSL相关的问题,您可以启用SSL调试日志。在Weblogic的启动脚本中,您可以设置以下系统属性以启用SSL调试日志:
“`bash
-Dweblogic.ssl.enableDebugLogging=true
-Dweblogic.ssl.verbose=true
-Djavax.net.debug=ssl:handshake:verbose:SSLKeyExchange:CertificateStatusMessage:TrustManagerCallback:RecordCallback:HandshakeCallback:CipherSuitesCallback:SSLExtensionsCallback:SrvExtension:OpenSSLEngineInfoCacheSizesInResetFallbackLimitsEngineValueCorrectedTrackSegmentsNegotiatedBufferFullBreakLinesWriteListenerUnblockStreamsFailReceiveIndicationReassemblingConsecutiveTimestampsPrefetchTransportDisableProxyTestMatchingFingerprintsPemEntriesBadVersionUsedAlternativeHashingAlternativeMethodIndicationStallUpgradedIndicationInsecureDecryptBeforeAuthenticatedInspectionInternalErrorShortFieldIdentificationNamedKeyConsistencyCalledMemberInstancesExposedShowNegotiatedPreferencesLowestBlockingClientIdUponFullyVerifiedSatisfiedPrintOrgIfNeededLoggingServerTlsExtensionFilteringDumpCertChainsIgnoreCertificateExpirationFailureWithValidCacheCipherSuitesAvailableProtocolNegotiationMessageErrorLoggingCertChainsIgnoreClientHelloFailureSslProtocolExceptionFailureShowSessionKeyErrorsDefaultFallbackAndReadChannelAwareSslRecordEncryptionRecordErrorsIncludeCertificatesExtendedKeyUsageErrorCodesInsecureCriticalExtensionHandlingMaxCipherSuitesConfiguredServerNameIndicationUnencryptedRootKeyPinningExpectationResultBeforeResumeVServerUsageCaRetrievalErrorsSecurityStoreDefaultCleanupSensitiveConfigLeakagesChainUnknownTargetLimitsConfigRejectedWrongNumberOfFieldsIgnoreSignatureFailuresFailedToRetrieveCertificateChainUnknownCipherSuitesErrorHandlingHandshakeFailureClientCertMissingErrorHandlingHandshakeFailureClientCertMissingErrorHandlingHandshakeFailureClientCertMissingDisplayDataTruncationDueToInternalTlsConfigurationServerLoggingAlwaysVerboseTrustStoreUsageFallbackPriorityRetriesSocketShutdownFailedFailuresTooSensitiveLoggingSensitiveDataProtocolWarningsHandshakeWarningsProtocolErrorsHandshakeErrorsProtocolShutdownErrorsProtocolViolationErrorsSslHandshakeFailuresSslHandshakeAlertsSslHandshakeAlertsSslProtocolAlertsTlsProtocolAlertsHandshake
Android开发,有两个fragment,其中一个fragment中是一个传感器应用界面,
1、关闭通remove式;2、例说明需要用Fragment实现tab用ViewPager管理FragmentViewPager预加载其界面滑流畅3、例说明用另Fragment替换前Fragment并且退堆栈保留Fragment前状态// Create new fragment and transactionFragment newFragment = new ExampleFragment();FragmentTransaction transaction = getFragmentManager()();// Replace whatever is in the fragment_container view with this fragment,// and add the transaction to the back (_container, newFragment);(null);// Commit the ();
JAVA软件工程师应该具备哪些基本素质
一:java软件工程师项目经验要求1.一年以上正规项目开发经验2.熟悉软件开发流程、体系结构,较好的文档能力及编码风格3.至少熟悉OA、CRM、HR、ERP、电子商务中一种业务类型二:java软件工程师职业素质要求1.学习能力和主动性2.团队协作和沟通表达3.责任心和稳定性三:java软件工程师平台技能要求1.熟悉Eclipse开发工具,熟悉Weblogic安装部署2.熟悉Linux基本操作四:Java软件工程师技术要求1.具有良好Java语言基础,面向对象基础2.熟悉Struts、Hibernate、Spring等主流技术框架3.熟悉Ajax、XML解析、Excel导出、文件上传、发送Mail等常见业务的实现五:java软件工程师数据库技术要求1.熟练掌握、运用SQL Server或者Oracle数据库2.精通SQL语句,熟悉存储过程、视图、索引、事务处理等3.能够根据具体业务和要求进行查询优化六:java软件工程师客户端技术要求1.精通HTML、CSS、XML、JavaScript等Web开发技术22.熟悉DIV+CSS网页布局,提供良好的视觉效果和用户体验3.熟悉AJAX原理,掌握一种以上的AJAX框架(JQuery,Ext JS)
如何生成 hprof文件 + weblogic启动文件配置
生成hprof文件,用MAT进行分析生成hprof文件可以在DDMS选中进程点击窗口左上角的dump hprof file按钮来直接生成,也可以通过在程序加代码中来生成代码2:void generateHprof(){String packageName=getApplicationInfo();String hpFilePath=/data/data/+packageName+/;try {//(/sdcard/);(hpFilePath);} catch (IOException e) {// TODO Auto-generated catch ();}}建议使用代码生成hprof,然后使用批处理hprof文件,然后用Memory Analyzer tool(MAT)进行对多个hprof文件比较分析。
在MAT导入文件以后,MAT会自动解析并生成报告,点击Dominator Tree,并按Package分组,选择自己所定义的Package类,比较各个类在不同时期的Retained Heap,找出可疑类,然后选择该类,点右键,选中show retained Set 项,参看Retained Heap的详细信息,进一步找出嫌疑项。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~一、批处理配置文件批处理配置文件如下:rem the following var is for rawDatadir=rawDataset processName=; set processShortName=a;b;cset processShortName=set outRoot=outset statFilePrefix=statrem the following var is for tools=D:\android\toolsset hpInputFileDir=/sdcardset hpInputFile= hpRoot=hpTemp注1:rawDatadir为“ps -x”提取出来的文件的目录注2:processName需要统计RSS的进程的名字,可以同时统计多个,进程名之间用“;”进行分割。
注3:processShortName需要统计RSS的进程的名字的缩写形式,如果不坐设置或设置为空,这程序会根据processName自动生成。
注4:outRoot为对进程的RSS进行统计最后的生成文件的存放目录。
注5:statFilePrefix为对进程的RSS进行统计最后的生成文件的前缀。
注6:tools为所在的目录。
注7:hpInputFileDir为手机中我们生成的hprof文件所在的目录。
注8:hpInputFile为手机中我们生成的hprof文件的名字。
二,需要使用的bat库子目录lib用于存放bat库需要的bat库,。
关于请参看《genSerial》关于请参看《getSubStr》三,在代码中生成Hprof文件:在android代码,可以使用如下代码把hprof文件生成到sd卡上。
(/sdcard/);可以不用sd卡,而将hprof文件直接生成在手机上,但是只能在/data/data/+packageName的目录下。
实例1:void generateHprof(){String packageName=getApplicationInfo();String hpFilePath=/data/data/+packageName+/;try {//(/sdcard/);(hpFilePath);} catch (IOException e) {// TODO Auto-generated catch ();}}四,在电脑上通过批处理取转换Hprof 文件如果在程序中用(/sdcard/)的方式生成了hprof文件,那么就可以执行文件getHprof 来取得Hprof并转化为MemoryAnalyzer的格式。
文件如下:@echo offcall exist %hpInputFile% (del %hpInputFile% /q)adb pull %hpInputFileDir%/%hpInputFile% not exist %hpInputFile% (echo fail to pull %hpInputFile%exit 1)if not exist %hpRoot% (md %hpRoot%)Setlocal enabledelayedexpansionset path=%path%;%cd%\libcall genSerialset serial=!genSerial~result!set hpOutFile=%serial%%tools%\ %hpInputFile% %hpRoot%\%hpOutFile%echo success!endlocal