深入了解ApusicAS服务器配置系列之——SSL配置
近日,随着铁路客服中心网上购票系统中逐步可以购买大部分车次的列车,12306网站的种种问题便暴露出来,估计现在信息中心及系统开发商正在紧锣密鼓关注系统运行状态,并绞尽脑汁查找一切可以优化的地方进行优化,来满足数量惊人的火车票订票需求。先撇开性能问题不谈,使用过12306的朋友可能都注意到了,在使用12306进行网上购票之前,需要下载一个根证书到本地,然后,按照相关文件的说明,将证书导入IE浏览器,才能正常执行购票等操作。这个证书其实跟SSL/TLS有密切关系。本文介绍下在ApusicAS下如何配置SSL,使AAS支持基于SSL的双向认证。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。为了在不安全的网络上安全保密的传输关键信息,Netscape公司开发了SSL协议,后来IETF(Internet Engineering Task Force)把它标准化了,并且取名为TLS,目前TLS的版本为1.0,TLS1.0的完整版本请参考rfc2246(www.ietf.org)。基于TLS协议的通信双方的应用数据是经过加密后传输的,应用数据的加密采用了对称密钥加密方式,通信双方通过TLS握手协议来获得对称密钥。为了不让攻击者偷听、篡改或者伪造消息,通信的双方需要互相认证,来确认对方确实是他所声称的主体。TLS握手协议通过互相发送证书来认证对方,一般来说只需要单向认证,即客户端能确认服务器便可。但是对于对安全性要求很高的应用往往需要双向认证,以获得更高的安全性。下面详细讲述建立自己的认证机构,并且利用它来颁发服务器证书和客户端个人证书,然后配置服务器来使用双向认证。关于SSL与TLS的更加详细的信息,请参考相关专业资料。
Apusic应用服务器完全支持SSL协议SSL3.0和TLS1.0协议。
在进行双向安全传输之前,首先,建立自己的认证授权机构CA,用户可以向可信的第三方认证机构(CA)申请证书,也可以自己做CA,由自己来颁发证书。(本文末尾将会介绍如何使用openSSL来生成CA证书的操作步骤)
其次,生成服务器端证书。服务器端证书用来向客户端证明服务器的身份,也就是说在SSL协议握手的时候,服务器发给客户端的证书。生成服务器证书使用JDK的密钥管理工具Keytool,本文采用的jdk是Oracle jdk1.5.0。
- 建立工作目录。
cd ..
mkdir server
cd server
- 生成服务器私钥对及自签名证书,并且保存在密钥库mykeystore中。
keytool -genkey -alias myserver -keyalg RSA -keysize 1024 –keypass keypass -storepass keypass -dname "cn=localhost, ou=dev, o=apusic, l=Shenzhen, st=guangdong, c=CN" -keystore mykeystore
- 生成服务器待签名证书。
keytool -certreq -alias myserver -sigalg SHA1withRSA -file server.csr -keypass keypass -storepass keypass -keystore mykeystore
- 请求CA签名服务器待签名证书,得到经CA签名的服务器证书。
openssl x509 -req -in server.csr -out server-cert.cer -CA ..\ca\ca-cert.cer -CAkey ..\ca\dsakey -days 365 -set_serial 02
- 把CA根证书导入密钥库mykeystore。
keytool -import -alias caroot -file ..\ca\ca-cert.cer -noprompt -keypass keypass -storepass keypass -keystore mykeystore
- 把经过CA签名的服务器证书导入密钥库mykeystore。
keytool -import -alias myserver -file server-cert.cer -noprompt -keypass keypass -storepass keypass -keystore mykeystore
接下来,颁发并发布个人证书。个人证书用来向服务器证明个人的身份,也就是说在SSL协议握手的时候,客户端发给服务器端的证书。同时个人证书中包含个人信息如用户名等,如果需要,这个用户名将作为登录服务器的用户名。
- 建立工作目录。
cd .. mkdir client cd client
- 生成客户端私钥。
openssl genrsa -out clientkey 1024
- 生成客户端待签名证书。
openssl req -new -out client.csr -key clientkey
- 请求CA签名客户端待签名证书,得到经CA签名的客户端证书。
openssl x509 -req -in client.csr -out client.cer -CA ..\ca\ca-cert.cer -CAkey ..\ca\dsakey -days 365 -set_serial 02
- 生成客户端的个人证书client.p12。
openssl pkcs12 -export -clcerts -in client.cer -inkey clientkey -out client.p12
- CA根证书导入客户端。
在这里CA的根证书用来在SSL握手时验证服务器发给客户端浏览器的证书。如果没有此证书,浏览器将无法自动验证服务器证书,因此浏览器将弹出确认信息,让用户来确认是否信任服务器证书。在客户端的IE中使用"工具-> Internet选项-> 内容-> 证书-> 导入"把我们生成的CA根证书ca\ca-cert.cer导入,使其成为用户信任的CA。
客户端个人证书导入客户端: 在客户端的IE中使用"工具-> Internet选项-> 内容-> 证书-> 导入"把我们生成的CA根证书client.p12导入,使其成为用户信任的CA。
然后,配置服务器允许双向认证。
为了保证AAS的通用性,Apusic应用服务器出厂默认配置下不支持双向认证,要支持SSL双向认证,需要对配置作如下修改:
修改Muxer服务:如果采用密钥库文件的方式,示例配置如下:
<SERVICE CLASS="com.apusic.net.Muxer" >
<ATTRIBUTE NAME="Port" VALUE="6888"/>
<ATTRIBUTE NAME="Backlog" VALUE="50"/>
<ATTRIBUTE NAME="Timeout" VALUE="300"/>
<ATTRIBUTE NAME="MaxWaitingClients" VALUE="500"/>
<ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/>
<ATTRIBUTE NAME="SSLEnabled" VALUE="True"/>
<ATTRIBUTE NAME="SecurePort" VALUE="6889"/>
<ATTRIBUTE NAME="MutualAuthPort" VALUE="6887"/>
<ATTRIBUTE NAME="NeedClientAuth" VALUE="True"/>
<ATTRIBUTE NAME="KeyStore" VALUE="config/keystore"/>
<ATTRIBUTE NAME="KeyPassword" VALUE="keypass"/>
<ATTRIBUTE NAME="TrustStore" VALUE="config/truststore"/>
<ATTRIBUTE NAME="TrustStorePassword" VALUE="keypass"/>
<ATTRIBUTE NAME="TrustStoreType" VALUE="JKS"/>
</SERVICE>
如果采用 证书文件的方式,示例配置如下:
<SERVICE CLASS="com.apusic.net.Muxer" >
<ATTRIBUTE NAME="Port" VALUE="6888"/>
<ATTRIBUTE NAME="Backlog" VALUE="50"/>
<ATTRIBUTE NAME="Timeout" VALUE="300"/>
<ATTRIBUTE NAME="MaxWaitingClients" VALUE="500"/>
<ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/>
<ATTRIBUTE NAME="SSLEnabled" VALUE="True"/>
<ATTRIBUTE NAME="SecurePort" VALUE="6889"/>
<ATTRIBUTE NAME="MutualAuthPort" VALUE="6887"/>
<ATTRIBUTE NAME="NeedClientAuth" VALUE="True"/>
<ATTRIBUTE NAME="ServerCertificateKey" VALUE="config/192.168.6.191.key"/>
<ATTRIBUTE NAME="ServerCertificateChain" VALUE="config/192.168.6.191.cer;config/serverca.cer"/>
<ATTRIBUTE NAME="TrustCertificates" VALUE="config/clientrootca.cer"/>
</SERVICE>
最后,测试双向认证。
访问应用,如果前面的操作都正确的话,应该可以看到Apusic的欢迎页面。同时状态栏上的小锁处于闭合状态,且证书为有效状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
附:使用OpenSSL生成CA证书。
本文所使用的CA软件为Openssl。Openssl用来产生CA证书、证书签名并生成浏览器可导入的PKCS#12格式个人证书。你可以在Openssl的官方网站http://www.openssl.org下载最新版的Openssl,本文使用的是Openssl 0.9.7d。从Openssl的官方网站下载并安装了Openssl之后,设置系统环境变量Path指向Openssl的bin目录,下面开始创建CA根证书:
- 建立工作目录。
mkdir ca cd ca
- 生成ca私钥。
openssl dsaparam -out dsaparam 1024 openssl gendsa -out dsakey dsaparam
- 生成ca待签名证书。
openssl req -new -out ca-req.csr -key dsakey
- 用CA私钥进行自签名,得到自签名的CA根证书。
openssl x509 -req -in ca-req.csr -out ca-cert.cer -signkey dsakey –days
原文链接: http://blog.csdn.net/cyq1984/article/details/7183665
转载于:https://my.oschina.net/chen106106/blog/48271
深入了解ApusicAS服务器配置系列之——SSL配置相关推荐
- Exchange 2013部署系列之(七)配置SSL多域名证书
Exchange 2013部署系列之(七) 配置SSL多域名证书 前面六篇博客我们详细讲解了Exchange Server 2013的部署和配置,Exchange一些服务,如 Outlook 无处不在 ...
- NGINX SSL配置之设置HTTPS服务器
NGINX SSL配置 本节介绍如何在NGINX和NGINX Plus上配置HTTPS服务器. 设置HTTPS服务器 要设置HTTPS服务器,请在您的nginx.conf文件中的块中ssl将该list ...
- ssl证书绑定windows服务器端口及SSL配置命令详解
ssl证书绑定windows服务器端口及SSL配置命令详解 第一部分 多层应用服务器中SSL的服务器配置 一.首先,你的 服务器的防火墙 或云服务器的安全配置要哦放通下面你想配置的端口 我配置的端口为 ...
- oracle celient 作用,WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用.doc
搜索关键字:weblogic ssl webservice WebLogic Server ?? SSL 配置及 SSL 协议传输的 WebSevice 调用 作 者: 風 絮 ? ?2010-7-2 ...
- [转]DPM2012系列之四:配置邮件报警功能
DPM2012系列之四:配置邮件报警功能 源地址:http://543925535.blog.51cto.com/639838/1049285 ============================ ...
- mac apache 和 nginx ssl 配置自签名的SSL
2019独角兽企业重金招聘Python工程师标准>>> mac apache ssl 配置 a-生成私钥,命令: sudo openssl genrsa -des3 -out app ...
- Sahi (2) —— https/SSL配置(102 Tutorial)
Sahi (2) -- https/SSL配置(102 Tutorial) jvm版本: 1.8.0_65 sahi版本: Sahi Pro 6.1.0 参考来源: Sahi官网 Sahi Quick ...
- 宝塔ssl验证域名失败_宝塔SSL配置教程
宝塔SSL配置教程 视频录的一般将就看看吧昨天有人问我SSL怎么配置其实很简单申请下证书就行了第一张(我都没发现错别字 是种)申请好证书我就不掩饰怎么申请了 腾讯云 阿里云都有免费的SSL证书打开你们 ...
- 基于ASA防火墙的SSL ×××配置
基于ASA防火墙的SSL ×××配置 实验拓扑图 实验目的,PC2通过SSL×××能够访问到PC1 SSL×××服务端配置全在ASA上面,下面为配置步骤: 第一步:建立RSA密钥证书,名称为ssl** ...
最新文章
- 通过js获取元素css3的transform rotate旋转角度方法
- Android为TV端助力 转载:Java 泛型
- 玩转oracle 11g(13):命令学习1
- java中的foreach
- CheerpJ相当于一个容器,效果类似Applet
- 重新回归最初始的51单片机,跟我一起学单片机吧(内含单片机驱动、烧录软件、程序开发软件的安装和使用)
- windows安装 wget
- 检查php语法错误,PHP检查语法错误技巧
- python 配对t检验_配对t检验的python实现
- Photoshop: 将图片转换成psd格式
- 《人在囧途》- 我30岁了,转行学编程可以吗?
- python读取xlsx文件找不到_在python中打开并读取excel .xlsx文件
- 【操作指导 | 代码实现】挑战程序设计竞赛2:算法和数据结构
- php 会员 开源,会员组_POSCMS_PHP开源_迅睿CMS系统
- 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集
- VTK笔记-CT图像获取皮肤等值面-vtkContourFilter类的使用
- 免费OA系统平台在企业发展中的优势(转载)
- ASP.NET MVC 文件上传和文件下载 以及 文件下载的几种方法
- 如何制作DVDrip?
- java 生成图形验证码