FTP 和 Telnet 正是核心联网应用程序的两个示例。为 System SSL 编程接口编码的供应商应用程序可以通过更改代码来利用这些新支持。

这是安全套接层 (SSL) 协议的最新版本,也是最为出色的一个版本。人们普遍认为,出于多种技术原因,这个版本比之前的所有版本都要更加安全。美国政府推荐将 TLSv1.2 作为惟一使用的 SSL 协议。大多数应用程序都需要经历一个过渡阶段,并且需要同时支持 TLSv1.2 和旧版本协议(而非直接全盘取代)。本文介绍的新支持允许安全性管理员限制各应用程序,让它们在操作上可行的情况下仅使用 TLSv1.2。

系统要求

IBM i 7.1 Technology Refresh 6 (TR6) 中包含 System SSL TLSv1.2 功能。为了支持和使用新协议,还需要用到操作系统多个领域的程序临时补丁 (PTF)。在系统中安装 DCM(5770SS1 选项 34)之后,请求并应用 SI48659 就可以获得所有支持 PTF。SI48659 会拉取超过二十个 PTF,作为 PTF 先决条件。请保证应用产品和选项分发需要的 PTF 有效的在系统上安装。

系统值更改

应用 SI48659 之后,就安装了新支持,但新支持在 System SSL 中处于休眠状态。必须通过 Change System Value (CHGSYSVAL) 来更改 QSSLPCL 系统值,为 System SSL 激活新协议。将 *OPSYS 的默认值更改为:

*TLSV1.2

*TLSV1.1

*TLSV1

*SSLV3

如果 QSSLPCL 被设置为 *OPSYS 以外的值,请为现有设置添加 *TLSV1.2 和 *TLSV1.1。

图 1. 更改系统值

除 了 Change System Value (CHGSYSVAL) CL 命令之外,还可以使用 Navigator for i 来处理 QSSLPCL 值。Navigator for i 目前正处于另外一个发布周期,通过此接口结构支持 TLSv1.2 的增强将在 2013 年夏季过后推出。通过 CHGSYSVAL 支持此新协议时,在 Navigator for i 中将暂时无法看到此配置,直至该更新可用为止。

修改 QSSLPCL 系统值之后,系统就可以开始使用新协议。任何应用程序都不能自动使用新支持,必须为各应用程序启用支持。

应用程序支持

DCM

IBM i 提供的许多应用程序都使用应用程序定义来配置应用程序的证书信息。目前,通过利用 DCM,管理员可以为应用程序定义指定证书。应用程序定义中的其他字段确定了是否使用客户端身份验证,以及允许使用哪些认证中心 (CA)。这种现有 DCM 配置接口已经过增强,应用程序定义中包含一些新字段。

新字段之一用于控制应用程序支 持哪些协议。您必须对此字段进行更改,使之包含 TLSv1.2,从而为该应用程序激活此协议。此字段的默认设置是 *PGM,允许应用程序的代码和现有配置确定要使用哪种协议。最初的时候,使用 *PGM 设置的应用程序无法使用 TLSv1.2,但随着版本的发展,这种情况会有所转变。

这种新型的应用程序级支持协议和密码套件控制也有一些缺点。现在,管理员可以为 IBM 应用程序配置比过去更弱的安全性属性。

某 些应用程序不允许修改某一个或某几个新字段。如果应用程序禁止更改,DCM 面板将会显示一条 4022 错误。IBM HTTP Server 就是这样一个应用程序,不允许通过 DCM 面板配置协议和密码。HTTP Server PTF Group Level 18 提供了启用 TLSv1.2 的 HTTP 支持。

集成化语言环境 (ILE) 应用程序编程接口

System SSL 编程接口经过更新,允许开发人员使用 TLSv1.2。您需要安装 SI48539(SI48659 的分发先决条件),然后才能在开发系统中加载新版本的 gskssl.h 和 qsossl.h。IBM i 信息中心内的 GSKit 和 SSL API 说明已经更新。

典型的 GSKit 应用程序修改是添加两个对 gsk_attribute_set_enum() 的调用,指定从现有 gsk_environment_open() 调用返回安全环境句柄。

清单 1. GSKit 样例代码

rc = gsk_attribute_set_enum(env_handle, GSK_PROTOCOL_TLSV12, GSK_TRUE);
if (rc != GSK_OK)
{
printf("gsk_attribute_set_enum() failed with rc = %d.\n", rc);
printf("rc of %d means %s\n", rc, gsk_strerror(rc));
break;
}
rc = gsk_attribute_set_enum(env_handle, GSK_PROTOCOL_TLSV11, GSK_TRUE);
if (rc != GSK_OK)
{
printf("gsk_attribute_set_enum() failed with rc = %d.\n", rc);
printf("rc of %d means %s\n", rc, gsk_strerror(rc));
break;
}

请参阅 API 文档,查看有关这些属性以及开发人员可用的其他新属性或经过更改的属性的更多细节。

Java Secure Socket Extension (JSSE)

如果您是 IBM Pure JSSE 提供程序 IBMJSSE2 的用户,那么 JDK6 和 JDK7 的最新 SR 版本提供了 TLSv1.2 支持,而且不需要 IBM i 7.1 TR6。

如果您是本机 IBM i JSSE 提供程序 IBMi5OSJSSEProvider 的用户,则需要满足上面列出的需求,包括更改 QSSLPCL。

JDK7 使用 SSL_TLSv2 作为默认上下文协议。这种上下文协议支持 TLSv1.2、TLSv1.1、TLSv1.0 和 SSLv3。要将系统限制为使用一种协议,您可以使用 TLSV1.2 或 TLSv1.1 作为 SSLContext.getInstance 方法的协议。

对于 JDK6,必须在 SSLContext.getInstance 方法中指定 SSL_TLSv2,因为这并不是默认协议值。您还可以使用 TLSV1.2 或 TLSv1.1。

互操作性

SSL 协议最初设计时考虑到了向前兼容性。SSL 服务器可以同时支持多个协议版本。它利用连接两端支持的最高版本的协议进行协商。遗憾的是,有迹象表明,目前仍有少数 SSL 实现不兼容。在新启用了 TLSv1.2 的 SSL 客户端应用程序利用其中一种实现连接到 SSL 服务器时,这种状况本身会引发错误。如果发生互操作性问题,对等服务器必须更新其 SSL 实现,否则客户端在使用服务器时就必须停止使用 TLSv1.2。

如果通过测试已经确定所有对等应用程序均支持 TLSv1.2,那么该应用程序可配置为仅支持 TLSv1.2,以实现最高级别的安全性。对于某些应用程序,这种该配置可能始终不可行。

有 必要说明,对等客户端也必须支持和启用 TLSv1.2,两者才能实现协商。由于 “因果难定” 的问题,许多客户端应用程序目前都不支持 TLSv1.2:由于服务器不理解 TLSv1.2,客户端没有整合这项支持的动机。既然服务器已经具备了 TLSv1.2 功能,那么逐渐将有更多客户端体添加家 TLSv1.2 支持。

其他特性

本 文的重点是 TLSv1.2 支持;但除了 TLSv1.2 支持之外,还有其他一些新的 System SSL 特性。DCM 帮助文本和 GSKit API 文档提供了有关这些信特性的具体信息。在线证书状态协议 (OCSP) 支持就是您可能会感兴趣的另外一项特性。

结束语

IBM i 7.1 TR6 版本现已提供 TLSv1.2 支持。通过简单的配置或代码更改,您的应用程序即可开始利用这种更为安全的协议。

为什么要使用TLSv1.2和System SSL?的更多相关文章

  1. github不支持tlsv1.1后, 出现SSL connect error

    过完年回来, github不安分了, 发了博文说不支持TLSv1/TLSv1.1: Weak cryptographic standards removed, 没看到这篇博文之前, 还以为是代理问题, ...

  2. SSL 3.0曝出Poodle漏洞的解决方案

    tomcat 各版本对ssl解决方案的配置:tomcat6: <Connector port="443" protocol="org.apache.coyote.h ...

  3. haproxy 关闭ssl 3.0 加密

    global log 127.0.0.1 local3 maxconn 65535 chroot /usr/local/haproxy uid 500 gid 500 daemon ssl-defau ...

  4. haproxy ssl相关配置

    ssl-default-bind-options [<option>]... This setting is only available when support for OpenSSL ...

  5. 基于 SSL 的 Nginx 反向代理

    基于 SSL 的 Nginx 反向代理 描述: 线上zabbix因机房网络问题,外网接口无法对外访问,因此采用同机房的另外一台服务器做反向代理. 线上用于zabbix提供web访问的Nginx,采用h ...

  6. Linux 搭建Nginx并添加配置 SSL 证书

    1. 安装准备   1.1 gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: [root@nginx ~]# yum -y i ...

  7. phpmailer发送邮件出现错误:stream_socket_enable_crypto(): SSL operation failed with code 1.

    如果开了调试,调试进去会看到错误提示: smtp_code:"stream_socket_enable_crypto(): SSL operation failed with code 1. ...

  8. nginx+php+redis+ssl 配置

    php的接触得很少,记录一下 环境:CentOS 7.4 安装软件 # 安装 nginx yum install nginx # 配置PHP7的源,安装 PHP 7.0 及扩展 yum install ...

  9. nginx ssl

    SSL 私钥/etc/pki/CA/ (umask 077;openssl genrsa -out private/cakey.pem 2048) 自签证书 openssl req -new -x50 ...

随机推荐

  1. 百度地图 api bug 解决.......

    百度地图 遇到了一个默明奇妙的bug.....  调用后中心点 不再 point(标注的点上...)这是需要执行一次(仅一次) 当 地图 加载完后 执行(这个方法你每次改地图 都会执行...所以让他执 ...

  2. Maven常见问题总结

    Failed to read artifact descriptor for cn.lds.tsp:common:jar 1. 先查看本地repository是否下载成功,如果没有,考虑更改下载rep ...

  3. chrome插件 crap jsonview

    最近有用到几个非常好用的Chrome  记录一下: 1.Crap Api debug,直接在Chrome标签打开的,界面大概长这样,方便调试 2. adblock 比较大众 3. tampermonk ...

  4. 如何使用java代码进行视频格式的转换(FLV)

    如何使用java代码进行视频格式的转换(FLV) 一,前言 在给网页添加视频播放功能后,发现上传的视频有各种格式,那么就需要将他么转换成FLV,以很好的支持在线视频播放. 公司一直在使用中,配合使用, ...

  5. 练习六十八:pyecharts模块练习

    用一个地图显示最热的几个城市温度 代码(用Geo模块) from pyecharts import Geo attr = ["西安","上海","苏州 ...

  6. java——第十二章 异常处理和文本I/O

    1.异常处理: 使用try_throw_catch块模块 优点:将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来. 例子: package test; import java.u ...

  7. Python入妖4-----Request库的基本使用

    什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...

  8. pdf.js使用爬过的坑

    最近项目里需要做一个在浏览器直接预览pdf的功能,有些浏览器可以直接预览pdf文件,但是有些不能(不要躲,说的就是你IE)查资料普遍推荐pdf.js,兼容能到ie9,很不错了. 1. 从pdf.js官 ...

  9. angularjs的ng-repeat回调

    首先html代码是这样的: <label>Name des Leiters:</label><select name="leaderID" id=&q ...

  10. python迭代器、生成器、列表推倒式

    创建迭代器: iter( ): 创建迭代器 next( ): 返回迭代器的下一个element(元素) 实例题: >>> list = [1,2,3,4] >>> ...