一个实际问题分析及解决之五:两种方法的区别和选择

前面两篇文章分别解释了在websphere环境下建立SSL连接的两种办法,那么一更进一步:

两者的区别是什么?

本质上两者是一样的都是通过JVM来建立socket连接,区别在于配置JVM socket连接方式。

两种配置方式的优先级?

系统变量方式的优先级高,会覆盖websphere的配置。具体可看下面一篇文章。

http://www.ibm.com/developerworks/websphere/techjournal/0502_benantar/0502_benantar.html

如何选择?

通常应该选择让websphere来管理你的ssl socket连接,因为这是容器的工作内容之一,但如果你采用了第三方jar包,而该第三方jar包有调用SSLContext.getInstance()语句,那么别无选择,只能小心处理你的keystore和truststore,因为这种方式下它不会读取websphere的ssl配置,你只能通过系统变量的方式指定keystore和truststore,但该系统变量是全局性的,会覆盖websphere的配置,所以你要小心的处理两个keystore。

当然如果你想自己指定keystore但又不想覆盖websphere的相关配置,也是可以的,你要在sslcontext.getInstance()之后继续调用jdk api去设置当前instance的key store和truststore,这样的设置是局部的只对当前instance可见,但往往第三方jar包并没有暴露出该instance。

另一个可行的办法就是把你所有的certificate都import进websphere配置的keystore和truststore中去,然后让javax.net.ssl.keystore指向sal配置的keystore文件,这样就完全不用担心一个被另一个覆盖的问题,因为两者用同一个文件,唯一的问题是能不能拿到websphere的keystore和truststore的密码。

时间: 2024-08-23 07:01:35

一个实际问题分析及解决之五:两种方法的区别和选择的相关文章

积跬步,聚小流------实例分析jquery开发插件两种方法的区别

1.简介 jquery为开发插件提供了两个方法: *  jquery.extend(object);   为jquery类本身添加新的方法 *  jquery.fn.extend(object);  用来为jquery对象添加新的方法 2.理论介绍 分析这两个方法,不同点就在于中间多了一个.fn,那么这个.fn又是什么意思呢? $.fn是指jquery的命名空间,加了fn的方法和属性,会对jquery的每一个实例有效. 换种说法来解释的话: jquery本身是一个类,有它的属性和方法,赤裸裸的"

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

检测一个字符串是否为回文? 两种方法

/** *    检测一个字符串是否为回文?三种方法? *    方法1:用str.charAt(index) !=  str.charAt(len-i-1) *    方法2:用StringBuilder . reverse反转 *    方法3:用开关控制 */ public class reversChar { public static void main(String[] args) { String str = "123321"; //中文也可以 System.out.pr

设置数据库兼容级别的两种方法以及区别

转:http://blog.csdn.net/htl258/article/details/5696325 --设置数据库兼容级别的两种方法 --以设置兼容SQL Serve 2005 为例 --法一: ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 90 GO --法二: EXEC sp_dbcmptlevel database_name,90 GO database_name 要修改为数据库的名称. 各参数值对应的数据库版本: 8

使用express创建node服务器的两种方法及区别

使用express创建node服务器有两种方法,如下所示: 方法一: var express = require('express'); var app = express(); app.listen('3000', function () { console.log("The server is running at *: 3000"); }); 这是我们常用的一种创建node服务器的方式. 写vue项目时使用的vue-cli脚手架使用的就是这种创建方式.  方法二: var exp

一个实际问题分析及解决之四:通过IBM的JDK建立SSL连接

接前面内容,这里主要谈我们实现一开始描述的实际的技术需求的过程. 我们在建立与服务器的SonicMQ的SSL连接时,用了第三方jar去完成握手,而该第三方包采用的是标准的Java接口方式,即SSLContext.getInstance().这也很容易理解,因为第三方jar的提供方并不能假设用户一定是在websphere环境下使用该第三方jar,所以采用标准方式更为可取. 我们的碰到的最大问题就是该jar在Oracle的jdk上可以工作,而在IBM的jdk都不能工作,出现SSLHandShake

一个实际问题分析及解决之三:websphere中SSL配置及使用

SSL配置是websphere security中很重要的一部分,具体详细阅读下面内容. http://www.ibm.com/developerworks/websphere/techjournal/0612_birk/0612_birk.html 这里重点分析两个问题:KeyStore和TrustStore的区别以及如何使用websphere的ssl配置. 一. KeyStore和TrustStore的区别 TrustStore主要用于存放public certificate,即公钥.而公钥

SpringMVC的学习____5.乱码问题的解决_两种方法(两个类)

乱码问题很让人心烦,接下来我们来讨论这两种解决乱码问题的方法: 方法1: 使用Spring包中的类 (在web.xml)中注册该过滤器即可) <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/java

注册广播的两种方法和区别

第一种:在清单文件中声明,添加 <receive android:name=".IncomingSMSReceiver " > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED") <intent-filter> <receiver> 第二种使用代码进行注册如: IntentFilter filter =