为了防止数据在传输过程中被窥视,应用程序和Web服务器通常使用安全套接字层(SSL)(现在又称为传输层安全性(TLS)),它是SSL的更新和改进版本,用于加密通信。 在典型的SSL用法中,服务器配置有证书,该证书可证明其身份,并能够对服务器和客户端之间发送的数据进行安全加密,以确保隐私和数据完整性。
在本文中,我们描述如何使用IBM Web Administration for i提供的向导为i上的集成Web应用程序服务器(IAS),i上的集成Web服务服务器(IWS)和运行在IBM上的独立Liberty服务器配置SSL一世。 IAS是在Liberty Web容器上构建的轻量级Java™应用程序服务器,该服务器集成到IBM i操作系统中。 IWS服务器在IAS上运行,以提供对将集成语言环境(ILE)程序对象(例如RPG和COBOL程序和服务程序)作为Web服务快速外部化的支持。 Web Administration for i图形用户界面(GUI)提供了许多易于使用的向导来管理IBM i上的HTTP服务器和应用程序服务器。 现在,它支持为IAS v8.5,IWS v2.6和更高版本以及独立Liberty服务器配置SSL。 此外,您可以为在Liberty Web容器上运行的某些管理实例(例如ADMIN2,ADMIN5和ADMIN3)配置SSL。
先决条件
要在IBM Web Administration for i GUI上使用SSL配置向导,您需要满足以下先决条件:
组PTF
- IBM i7.3 SF99722 2级或更高版本
- IBM i7.2 SF99713 15级或更高版本
- IBM i7.1 SF99368级别41或更高版本
许可程序
当* SYSTEM存储用于SSL时,需要带有数字证书管理器(DCM)产品的,带有选件34的许可程序5770SS1。
用户资料
访问用于i GUI的Web管理员的用户配置文件必须有权访问应用程序服务器和关联的HTTP服务器,或者可以是具有* ALLOBJ,* IOSYSCFG和* SECADM权限的用户配置文件,或者是通过以下方式被授予权限的用户: Web Administrator for i GUI中的权限支持。
条款
- 证书 :数字证书是一种证书,用作服务器和客户端之间的证明身份。 它由公共密钥和证书颁发机构(CA)(用于签署证书的实体)进行数字签名的一些标识信息组成。 每个公用密钥都有一个关联的专用密钥,并且服务器必须证明它有权访问与数字证书中包含的公用密钥关联的专用密钥。 自签名证书意味着它是由服务器本身签名的。 如果为服务器指定了自签名证书,则客户端可能不信任该连接。 要从公共CA获得签名证书,您需要生成一个证书签名请求(CSR)并将其发送到CA。 返回证书后,它将导入到您的密钥库中。
- 密钥库 :密钥库是用于存储加密密钥和证书的工具。 密钥库文件中的私钥条目包含加密的私钥和对应的公钥的证书链。 配置SSL时,可以为服务器指定私钥条目。 可信证书条目包含可信方(通常是CA)的公共密钥。 可信证书用于验证服务器或客户端提供的证书的签名者。 Web Administrator for i GUI支持的密钥库类型为:JKS,JCEKS,PKCS12和CMS。 此外,还支持数字证书管理器(DCM)* SYSTEM。
SSL概述
SSL通过提供消息加密,完整性和身份验证来保护通信。 图1说明了客户端请求与服务器建立SSL连接的SSL过程。 此连接是安全的,不需要客户端身份验证。
- 客户端使用SSL版本,支持的算法列表以及将用于生成密钥的随机数发送消息。
- 服务器以要使用的算法和将用于生成密钥的随机数作为响应。
- 服务器将包含其公钥的服务器证书发送给客户端。
- 客户端使用其信任CA列表对服务器证书进行身份验证。 如果证书是从未知的CA颁发的,则浏览器通常会警告客户端承担不受信任的连接的风险。 通常,浏览器会维护默认的信任CA列表,包括公共已知的CA。 建议使用由公共CA签署的证书来保护服务器的安全。
- 客户端会生成一个主密码,然后使用服务器的公钥对其进行加密,然后将其发送给服务器。
- 服务器使用其私钥解密和检索主密码。
- 客户端和服务器根据随机数和主密码前的密码分别计算将在SSL会话中使用的对称密钥。
- 客户端和服务器发送完成的消息,并开始使用对称密钥传输数据。
图1. SSL流程概述
配置SSL向导
iGUI的Web管理员现在允许您使用现有证书或通过发布具有以下密钥库类型的新自签名证书来为IAS V8.5,IWS V2.6和独立Liberty服务器配置SSL:JKS,JCEKS,使用“配置SSL”向导为SSL的PKCS12,CMS或DCM * SYSTEM存储。
在本节讨论的示例中,我们有一个集成的应用程序服务器INTAPPSVR(请参阅Web Administrator产品网站以找到如何创建IAS服务器),并在其上部署了一个应用程序myapp 。 默认情况下,只能通过INTAPPSVR服务器或前端HTTP服务器的非安全HTTP端口访问该应用程序。 我们在DCM * SYSTEM存储区中有一个标记为MYKEY的证书,可以使用该证书为IAS服务器设置SSL。 表1中列出了此方案的信息。
表1.有关示例方案的信息
零件 | 值 |
---|---|
IAS名称 | INTAPPSVR |
应用名称 | MYAPP |
应用环境 | / myapp |
IAS HTTP端口现在可以监听 | 10000 |
要配置的IAS SSL端口 | 443 |
HTTP服务器名称 | INTAPPSVR |
HTTP服务器HTTP端口现在正在侦听 | 80 |
要配置的HTTP服务器SSL端口 | 4433 |
证书 | MYKEY存储在DCM * SYSTEM存储中 |
如果DCM中没有可用的证书,则可以使用Web Administrator for i GUI中的“创建证书”向导轻松地创建它,如图2所示。
图2.创建一个证书
图3.为INTAPPSVR设置SSL的方案
使用INTAPPSVR IAS配置SSL的步骤为九步,使用Configure SSL向导完成。 这些步骤如下所述。
步骤1.打开欢迎页面
在使用“配置SSL向导”之前,必须使用以下命令启动Admin服务器。 (您可以在知识中心中找到关于此的更多详细信息)。
STRTCPSVR服务器(* HTTP)HTTPSVR(* ADMIN)
启动服务器后,使用以下URL访问Web Administrator for i GUI:
http:// 系统 :2001 / HTTPAdmin
单击“ 管理”选项卡,然后在其中单击“ 应用程序 服务器”选项卡,然后选择应用程序服务器INTAPPSVR 。 在左窗格中,单击“ 应用程序服务器向导”下的“ 配置SSL ”以启动向导。 向导的步骤1显示了欢迎页面,如图4所示。单击Next继续。
图4.配置SSL
步骤2.指定SSL端口和SSL协议
图5.指定SSL端口和SSL协议
在步骤2中,我们配置SSL端口和SSL协议,如图5所示。
在此示例中,使用默认值443作为SSL端口,并为SSL启用TLS v1.0,v.1.1和1.2 。 禁用非SSL端口,以便只能通过SSL访问该应用程序。 将其余的默认值保留在此页面上,然后单击“ 下一步”继续下一步。
注意 :对于ADMIN实例,SSL端口默认值如下:
- 行政管理2:2005
- 管理员3:2007
- 行政管理5:2012年
如果在配置SSL时修改了给定的默认端口,则从ADMIN HTTP服务器的重定向将失败。 例如,IBM Navigator for i部署在ADMIN2上,该ADMIN2从端口2001重定向到2005。如果ADMIN2 SSL端口从2005更新到其他端口号,为了使重定向有效,必须手动更新ADMIN HTTP服务器RewriteRule指令。 。
步骤3.指定密钥库信息
图6.指定密钥库信息
在向导的第3步中,如图6所示配置密钥库信息。密钥库是SSL证书的存储工具。 必须指定密钥库文件才能为应用程序服务器配置SSL。 可以使用IBM i系统上已经存在的密钥库文件或尚不存在的新文件。 对于新的密钥库文件,向导将帮助创建文件和创建自签名证书。
在当前示例中,选择“ 使用数字证书管理器(DCM)系统存储 ”作为密钥存储信息,然后单击“ 下一步” 。
注意 :如果需要在前端HTTP服务器插件与应用程序服务器之间进行SSL通信,则只能使用CMS密钥库和DCM * SYSTEM存储区。 如果没有可用于应用程序服务器的非SSL端口,并且未指定非CMS或DCM类型的存储,则从前端HTTP服务器进行的访问将失败。
DCM * SYSTEM存储位于/QIBM/USERDATA/ICSS/CERT/Server/DEFAULT.KDB。 默认情况下,* PUBLIC是* EXCLUDE到DCM存储文件。 如果使用DCM * SYSTEM存储为应用程序服务器配置SSL,则应用程序服务器运行时用户配置文件(IAS V8.5的默认QLWISVRT,IWS2.6的默认QWSERVICE和独立Liberty服务器的默认QEJBSVR)和HTTP服务器运行时用户QTMHHTTP将通过向导使用* RX权限更新到存储路径。
步骤4.指定密钥库密码
图7.指定密钥库密码
对于现有的密钥库,必须提供访问它的密码。 指定DCM * SYSTEM存储密码,然后单击下一步 。 有关DCM的更多信息,请参阅知识中心 。
步骤5.指定信任库密码
该向导的第5步是指定信任库的密码。 仅当在步骤3中选中“ 为信任库指定其他路径”复选框时,向导才进入此步骤。在当前示例中,我们没有为信任库指定其他路径(这意味着对密钥库和信任库使用相同的文件用于应用服务器),因此向导将跳过步骤5。
步骤6.指定数字证书
图8.选择数字证书
在步骤6中,如图8所示,从密钥库和数字证书MYKEY中选择现有证书,然后单击Next 。
仅当指定的密钥库文件中有证书可用时,向导才会提供此屏幕。 如果没有可用的证书,则此向导将创建一个自签名证书。 使用以下设置生成自签名证书:
- DN:CN = host_name ,O = IBM Web Administration for i,C = US
- 有效期:365天
- 算法:SHA256withRSA
- 密钥大小:2048位
步骤7.添加受信任的CA证书
图9.添加可信的CA证书
如果SSL需要高级客户端身份验证,则应将受信任的CA证书导入到信任库中,以帮助服务器做出信任决定。 信任库与密钥库是同一文件,除非您在步骤3中为其指定了其他文件。
在此示例中,不需要客户端身份验证。 您可以在此页面上保留默认选项,然后单击“ 下一步” 。
步骤8.重新启动服务器
图10.重新启动服务器
如图10所示,选择“ 在向导后立即重新启动服务器”选项,以使向导重新启动服务器以使配置更改生效。 单击下一步 。
IAS v8.5和IWS 2.6服务器基于IBMWebSphere®Liberty概要文件容器。 如果为应用程序服务器启用了配置上的动态更新(默认情况下,使用动态更新禁用了i GUI创建的Web Administrator IAS v8.5和IWS2.6。)即使没有重新启动,应用程序服务器也可以检测到SSL配置更新。 但是,如果CMS密钥库用于SSL,则必须重新启动服务器才能使更改生效。 这是因为,默认情况下,CMS i密钥库提供程序未包含在IBM i上的Java安全提供程序中,并且在向导为应用程序服务器添加了提供程序之后,需要重新启动Java虚拟机(JVM)。
因为有一个前端HTTP服务器,并且相关的插件文件在SSL配置期间已更新,所以在本示例中,我们将重新启动服务器,以使所有更改生效。
步骤9.完成配置SSL向导
图11. Configure SSL向导摘要
如图11所示,摘要页面显示了用于SSL配置的所有信息,包括SSL端口和协议,密钥库和要使用的证书名称。 单击“ 完成”后 ,向导将处理配置更改。
“配置SSL”向导完成并且服务器重新启动后,将为服务器INTAPPSVR配置SSL。 在“ 属性”下 ,单击“ 端口”选项卡。 您可以找到服务器正在侦听HTTPs端口443。单击查看以查看有关SSL设置的详细信息。 如果为服务器配置了多个SSL设置,则您还可以在此处指定用于HTTPS端口的SSL。
图12. HTTPS端口的SSL设置
现在,您可以使用端口443通过SSL访问myapp应用程序。
图13.通过SSL访问的应用程序
您还可以在浏览器上查看网站证书,如图14所示。
图14.证书信息
在后台,将SSL配置添加到普通实例的server.xml文件中。 对于管理员实例,SSL配置被添加到server.xml文件中包含的自定义XML文件中,该文件位于resources / security / admin-cust.xml中。 例如,配置如下:
清单1.示例代码清单
<sslDefault sslRef="SSLSettingsByWebAdmin"/>
<keyStore id="KeyStoreByWebAdmin" location="/QIBM/USERDATA/ICSS/CERT/Server/DEFAULT.KDB" password="{xor}Lz4sLChvLTs=" provider="IBMi5OSJSSEProvider" type="IBMi5OSKeyStore"/>
<ssl id="SSLSettingsByWebAdmin" keyStoreRef="KeyStoreByWebAdmin" serverKeyAlias="MYKEY" sslProtocol="SSL_TLSv2" trustStoreRef="KeyStoreByWebAdmin"/>
<httpEndpoint host="*" httpPort="-1" httpsPort="443" id="HttpEndpointByWebAdmin">
<sslOptions sslRef="SSLSettingsByWebAdmin"/>
</httpEndpoint>
由于存在与INTAPPSVR关联的HTTP服务器,因此我们可以为HTTP服务器设置SSL,以也强制从前端HTTP服务器进行SSL通信。 单击“ 管理”选项卡,然后在其中单击“ HTTP服务器”选项卡,然后选择关联的HTTP服务器INTAPPSVR 。 在左窗格中,单击“ 配置SSL”以启动向导,然后按照向导为HTTP服务器使用端口4433配置SSL。
图15.为HTTP服务器配置SSL
完成向导并重新启动服务器后,您可以从前端HTTP服务器和应用程序服务器通过SSL访问应用程序服务器上的应用程序。
图16.通过HTTP服务器使用SSL访问的应用程序
停用SSL
前面我们介绍了如何为应用程序服务器INTAPPSVR配置SSL。 如果不再需要SSL,则可以使用“禁用SSL”向导清除服务器的所有SSL配置。
图17.禁用SSL
在“ 管理”下 ,单击“ 应用程序服务器”选项卡,然后选择应用程序服务器INTAPPSVR 。 在左窗格中,单击“ 禁用SSL”以启动向导。 然后,在欢迎页面上单击“ 下一步 ”。
图18.禁用SSL端口
禁用服务器的SSL时,如果选择禁用端口,则向导可以从配置中删除服务器上配置的SSL端口(如图18所示)。 未选择的端口可以保留在配置中以备将来使用。 如果当前服务器没有可用的HTTP端口,则需要指定一个。 在此示例中,禁用端口443,并为INTAPPSVR指定HTTP端口,然后单击“ 下一步” 。
图19.重新启动服务器
完成向导后,立即重新启动服务器,然后单击“ 下一步” 。
图20.禁用SSL向导摘要
单击“ 完成”后 ,向导会删除普通实例的server.xml或admin实例的admin-cust.xml中的所有SSL设置。 此外,它还会在关联的HTTP服务器中更新相应的插件文件。 请注意,如果包括配置有SSL设置的其他XML文件,则“禁用SSL”向导将不会更新任何内容。
摘要
本文提供了一个示例,该示例说明了DCM * SYSTEM存储中具有现有证书的集成应用程序服务器的SSL配置。 您可以使用Web Administrator for i GUI向导轻松地为您的应用程序设置SSL,而不管是否存在现有证书或没有证书。 您可以按照本文提供的步骤来设置SSL。
参考
- 有关IBM Web Administration for i的介绍,请参阅产品页面和知识中心 。
- 有关DCM的更多信息,请参阅IBM Digital Certificate Manager 。
- 有关WebSphere Liberty概要文件,请参阅知识中心 。
翻译自: https://www.ibm.com/developerworks/ibmi/library/i-secure-web-app-with-ssl-trs/index.html