近日,随着铁路客服中心网上购票系统中逐步可以购买大部分车次的列车,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配置相关推荐

  1. Exchange 2013部署系列之(七)配置SSL多域名证书

    Exchange 2013部署系列之(七) 配置SSL多域名证书 前面六篇博客我们详细讲解了Exchange Server 2013的部署和配置,Exchange一些服务,如 Outlook 无处不在 ...

  2. NGINX SSL配置之设置HTTPS服务器

    NGINX SSL配置 本节介绍如何在NGINX和NGINX Plus上配置HTTPS服务器. 设置HTTPS服务器 要设置HTTPS服务器,请在您的nginx.conf文件中的块中ssl将该list ...

  3. ssl证书绑定windows服务器端口及SSL配置命令详解

    ssl证书绑定windows服务器端口及SSL配置命令详解 第一部分 多层应用服务器中SSL的服务器配置 一.首先,你的 服务器的防火墙 或云服务器的安全配置要哦放通下面你想配置的端口 我配置的端口为 ...

  4. oracle celient 作用,WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用.doc

    搜索关键字:weblogic ssl webservice WebLogic Server ?? SSL 配置及 SSL 协议传输的 WebSevice 调用 作 者: 風 絮 ? ?2010-7-2 ...

  5. [转]DPM2012系列之四:配置邮件报警功能

    DPM2012系列之四:配置邮件报警功能 源地址:http://543925535.blog.51cto.com/639838/1049285 ============================ ...

  6. mac apache 和 nginx ssl 配置自签名的SSL

    2019独角兽企业重金招聘Python工程师标准>>> mac apache ssl 配置 a-生成私钥,命令: sudo openssl genrsa -des3 -out app ...

  7. 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 ...

  8. 宝塔ssl验证域名失败_宝塔SSL配置教程

    宝塔SSL配置教程 视频录的一般将就看看吧昨天有人问我SSL怎么配置其实很简单申请下证书就行了第一张(我都没发现错别字 是种)申请好证书我就不掩饰怎么申请了 腾讯云 阿里云都有免费的SSL证书打开你们 ...

  9. 基于ASA防火墙的SSL ×××配置

    基于ASA防火墙的SSL ×××配置 实验拓扑图 实验目的,PC2通过SSL×××能够访问到PC1 SSL×××服务端配置全在ASA上面,下面为配置步骤: 第一步:建立RSA密钥证书,名称为ssl** ...

最新文章

  1. linux cp 强制覆盖_Linux基本操作教程
  2. py2 HTMLTestRunner报告
  3. C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?
  4. windows server 2008 如何查看异常重启日志
  5. 六十四、前缀,后缀,中缀表达式转化求值问题
  6. Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)
  7. asp.net中通过html格式导出excel文件
  8. 2015 DevOps状态调查报告
  9. HTTP调试工具:Fiddler 介绍二
  10. arcgis引用样式无符号_【技术积累】arcgis制图应用:符号制作
  11. springboot实现单点登录_什么是单点登录,php是如何实现单点登录的
  12. 【操作系统】分页内存管理
  13. VHDL----基础知识1
  14. python串口模块_Python使用pip安装pySerial串口通讯模块
  15. Linux下更新libnss3的代码,yum安装firefox错误libnssutil3.s
  16. 电子开发网---一个硬件很好的网站
  17. 卸载 Navicat!事实已证明,正版客户端,它更牛逼……
  18. 【AtCoder】ARC065
  19. 数字频率计的功能及工作原理
  20. 搭建owncloud私有云

热门文章

  1. 数据字典例题,数 据 流 图(系统逻辑功能的图形) ——概念和符号,数据字典用途
  2. Vue 3最新力作 Vue.js 3企业级应用开发实战
  3. 文件上传(JavaScript实现)
  4. Could not create an instance of type T. Type is an interface or abstract class
  5. 含文档+PPT+源码等]精品基于java开发的航空订票系统SSM[包运行成功]计算机毕设Java项目源码
  6. python实现pdf转excel_使用python写的PDF转EXCEL工具,已打包exe
  7. 【lvcreate】创建lv需要在vg上创建 (一)
  8. 如何查询Oracle,Sql Server,MySQL 中的数据库名称、数据表名称、字段名称
  9. ICEM CFD里面,move vertice只能移动单个节点而没法整体移动该节点所连接的曲线,咋办
  10. 【敏捷开发每日一贴】敏捷实践Showcase的七宗罪