为IBM Http Server 和 WAS配置基于SSL证书的客户端认证.docx
《为IBM Http Server 和 WAS配置基于SSL证书的客户端认证.docx》由会员分享,可在线阅读,更多相关《为IBM Http Server 和 WAS配置基于SSL证书的客户端认证.docx(18页珍藏版)》请在冰豆网上搜索。
为IBMHttpServer和WAS配置基于SSL证书的客户端认证
为IBMHttpServer和WAS配置基于SSL证书的客户端认证
内容提要:
本文介绍了如何在IBMHttpServer和浏览器端配置基于ssl的客户端证书认证。
说明:
为IBMHttpServer和WAS配置基于SSL证书的客户端认证
第一部分配置IBMHttpServer和浏览器之间的客户端认证
为了便于介绍配置的完整过程,本文中使用ikeyman创建密钥库和自签署证书,代替实际生成环境中常见的专业证书颁发机构颁发的证书。
如果您拥有现成的个人证书和颁发机构的根证书,则请跳过前2步。
1.创建一个PKCS12格式的密钥库testKey.p12,并在这个密钥库中生成一个自签署证书。
2.把上一步中创建的自签署证书导出为.arm格式的文件证书文件,本例中命名为testcert.arm。
3.为了使客户端和服务器端的ssl握手成功,需要把刚才导出的testcert.arm导入到IHS的密钥库IHSKey.kdb里(实际生产环境中需要把客户端证书的颁发机构的证书添加到IHS的密钥库里)。
4.接下来,需要把把证书导入到浏览器里(以IE为例)。
a.在工具-Internet选项-内容-证书里,选择“客户端验证”,“个人”证书,选择“导入”,把密钥库文件testKey.p12导入。
b.将安全级别设置成中级。
可以看到证书的具体信息。
c.点击“高级”属性,在“证书目的”列表里勾选上“客户端验证”。
5.接下来需要在IHS里进行相应的配置。
a.在IHS的配置文件httpd.conf里添加如下配置,使IHS处理基于ssl的安全请求。
其中,“SSLClientAuth”是客户端验证的开关,配置成“required”表示需要客户端认证。
#---------------------------------------------------------------------
LoadModuleibm_ssl_modulemodules/mod_ibm_ssl.so
Listen443
443>
ServerName
DocumentRoot"C:
/ProgramFiles/IBM/HTTPServer60/htdocs/zh_CN"
SSLEnable
Keyfile"C:
/ProgramFiles/IBM/HTTPServer60/ssl/IHSkey.kdb"
SSLV2Timeout100
SSLV3Timeout1000
SSLClientAuthrequired
SSLDisable
#-----------------------------------------------------------------------
b.保存上面的配置后重新启动IHS,访问https:
//localhost,会弹出客户端验证的提示窗口。
点击确定后可以访问到IHS的首页。
第二部分为WAS配置基于SSL证书的客户端认证
将证书导入浏览器的步骤和第一部分中相似,这里不再重复。
1.在WAS管理控制台的安全-SSL里定义一个新的JSSE存储库,注意勾选上“客户端认证”。
2.把客户端证书的CA根证书导入到新创建的jks信任库里(在本例中把testcert.arm导入WC_Key.jks)。
3.在服务器-应用服务器-服务器名称下面的“web容器传输链”配置里,为SSL入站通道配置使用刚才创建的JSSE定义。
4.保存配置后,需要重启应用程序服务器(如果是ND环境,需要重启整个环境)。
使用WAS自带的DefaultApplication进行测试:
在浏览器里输入url:
https:
//localhost:
9443/snoop,会看到客户端验证提示窗口,确定后可以看到snoop的页面。
在snoop页面的“HTTPSInformation”部分,可以看到客户端证书的信息,说明已经正确使用了配置的证书进行ssl握手。
第三部分配置plug-in插件和WAS内嵌web容器之间的ssl通信
为了是plug-in插件和web容器实现基于SSL的安全通信,需要交换web容器传输链WCInboundDefaultSecure的SSL_2入站通道所使用的密钥库与plug-in插件使用的密钥库的签署者证书。
打开plug-in插件的密钥库文件(默认在plugin安装目录的etc路径下,具体可以查看plugin-cfg.xml里面的设置:
\ProgramFiles\IBM\WebSphere\Plugins60\etc\keys\plugin-key.kdb"/>):
抽取个人证书(公钥),保存成文件:
3.将web容器传输链WCInboundDefaultSecure使用的密钥库的公钥(第一部分第2步抽取出来的个人证书)导入到plug-in插件的密钥库里:
4类似的,把抽取出的plug-in插件的公钥(个人证书)导入到web容器传输链使用的密钥库里:
5.为了使plug-in与web容器使用基于SSL的HTTPS协议通信,手动更改插件配置文件plugin-cfg.xml,把http的内容注释掉,只剩下使用https协议的9443端口:
6.重启IHS,加载新的插件配置,使用https:
//localhost/snoop进行测试。
根据提示选择正确的证书:
确认弹出的窗口提示:
snoop页面的“RequestInformation”里能够看到请求从前端的443端口发来,本地端口是9443,说明web容器和plug-in之间已经通过HTTPS协议通信;在“Requestheaders”和“HTTPSInformation”里,能够看到原始的请求头信息和客户端的证书信息。
总结:
本文以自签署证书为例,在第一部分和第二部分中分别介绍了在IBMHttpServer,客户端浏览器,以及WebSphereApplicationServer上配置基于ssl证书的客户端认证的方法。
几个重要的设置包括:
在httpd.conf里配置“SSLClientAuthrequired”;在定义新的JSSE存储库时注意勾选上“客户端认证”;在浏览器端添加密钥库的时候,在证书的“高级”属性配置里,把“证书目的”列表里的“客户端验证”勾选上。
在第三部分中,我们把plug-in插件和web容器传输链之前的SSL配置也完成了,这样,从客户端到IHS,再到WAS,他们之间的通信都是基于SSL的安全通信,并且需要进行客户端认证,从而很好的保证了客户端和浏览器之间通信的安全性。
实际生产环境中,可能不需要用户手动把证书和密钥库添加到浏览器里(如U盾),各种客户端的具体实现方法已经超出了本文讨论的范畴,如需了解,请参考相关资料。
参考资料:
《WebSphereApplicationServerV6SecurityHandbook》出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。