`
380071587
  • 浏览: 446441 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何通过HTTPS(SSL加密)方式访问web service

 
阅读更多
web service在企业应用中常常被用作不同系统之间的接口方式。但是如果没有任何安全机制的话,显然是难以委以重任的。比较直接的web service加密方式就是使用https方式(SSL)方式加密连接,并且只允许持有信任证书的客户端连接,即SSL双向认证。这样就保证了连接来源的可信度以及数据在传输过程中没有被窃取或篡改。而且我认为这样做的开发量最小。具体方法如下
本文适合对SSL加密方式不是很了解的朋友们阅读,如果你是这方面的专家,我描述的步骤就显得太罗嗦了。
0. 准备工作及环境说明
0.1 检查JDK的环境变量是否正确(略)。我使用的是JDK 1.6
0.2 准备web服务器,这里选用TOMCAT 6.0
0.3 准备web service服务端和客户端(略,如果不会写的话可以用eclipse的工具生成)。
1. 生成证书
这里用到的文件,我们存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。
1.1生成服务端证书
开始-运行-CMD-在dos窗口执行下执行命令:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/SSL/server/tomcat.keystore -dname "CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" -validity 3650 -storepass zljzlj -keypass zljzlj
说明:
keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help
-genkey 创建新证书
-v 详细信息
-alias tomcat 以”tomcat”作为该证书的别名。这里可以根据需要修改
-keyalg RSA 指定算法
-keystore D:/SSL/server/tomcat.keystore 保存路径及文件名
-dname "CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" 证书发行者身份,这里的CN要与发布后的访问域名一致。但由于我们是自己发行的证书,如果在浏览器访问,仍然会有警告提示。
-validity 3650证书有效期,单位为天
-storepass zljzlj 证书的存取密码
-keypass zljzlj 证书的私钥
1.2 生成客户端证书
执行命令:
keytool ‐genkey ‐v ‐alias client ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname "CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN" ‐validity 3650 ‐storepass client ‐keypass client
说明:
参数说明同上。这里的-dname 证书发行者身份可以和前面不同,到目前为止,这2个证书可以没有任何关系。下面要做的工作才是建立2者之间的信任关系。
1.3 导出客户端证书
执行命令:
keytool ‐export ‐alias client ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client ‐rfc ‐file D:/SSL/client/client.cer
说明:
-export 执行导出
-file 导出文件的文件路径
1.4 把客户端证书加入服务端证书信任列表
执行命令:
keytool ‐import ‐alias client ‐v ‐file D:/SSL/client/client.cer ‐keystore D:/SSL/server/tomcat.keystore ‐storepass zljzl
说明:
参数说明同前。这里提供的密码是服务端证书的存取密码。
1.5 导出服务端证书
执行命令:
keytool -export -alias tomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -file D:/SSL/server/tomcat.cer
说明:
把服务端证书导出。这里提供的密码也是服务端证书的密码。
1.6 生成客户端信任列表
执行命令:
keytool -import -file D:/SSL/server/tomcat.cer -storepass zljzlj -keystore D:/SSL/client/client.truststore -alias tomcat –noprompt
说明:
让客户端信任服务端证书
2. 配置服务端为只允许HTTPS连接
2.1 配置Tomcat 目录下的/conf/server.xml
Xml代码 收藏代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="true"
sslProtocol="TLS" keystoreFile="D:/SSL/server/tomcat.keystore"
keystorePass="zljzlj" truststoreFile="D:/SSL/server/tomcat.keystore"
truststorePass="zljzlj" />
说明:

在server.xml里面这段内容本来是被注释掉的,如果想使用https的默认端口443,请修改这里的port参数。其中的clientAuth="true" 指定了双向证书认证。
2.2 配置服务端项目web.xml
在<welcome-file-list>之后增加:
Xml代码 收藏代码
<!-- 强制SSL配置,即普通的请求也会重定向为SSL请求 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/service/*</url-pattern><!-- 全站使用SSL <url-pattern>/*</url-pattern>-->
</web-resource-collection>
<user-data-constraint>
<description>SSL required</description>
<!-- CONFIDENTIAL: 要保证服务器和客户端之间传输的数据不能够被修改,且不能被第三方查看到 -->
<!-- INTEGRAL: 要保证服务器和client之间传输的数据不能够被修改 -->
<!-- NONE: 指示容器必须能够在任一的连接上提供数据。(即用HTTP或HTTPS,由客户端来决定)-->
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
说明:
这里限制了WEB service服务地址的访问必须为https连接。<url-pattern>要根据你的web service服务地址配置。
3. 修改客户端代码
在执行访问之前,增加:
Java代码 收藏代码
System.setProperty("javax.net.ssl.trustStore", "D:/SSL/client/client.truststore");
System.setProperty("javax.net.ssl.trustStorePassword","zljzlj");
System.setProperty("javax.net.ssl.keyStoreType","PKCS12") ;
System.setProperty("javax.net.ssl.keyStore","D:/SSL/client/client.p12") ;
System.setProperty("javax.net.ssl.keyStorePassword","client") ;
String endPoint="https://127.0.0.1:8443/easbCut/services/ApplyFormService";
...
通过设置参数来指定客户端连接时所使用的客户端证书,这里还可以采用修改JVM启动参数的的方式来执行,但出于不影响其他功能的考虑,这里采用System.setProperty的方式来设置这些参数,在使用结束后,可以还原这些参数配置。


做为客户端的开发者,可以把拿到的证书文件后,只执行步骤3。


分享到:
评论

相关推荐

    应用文档 之 SSL 加密站点配置

    主要过程分为三个步骤:创建IIS 服务、Web 站点的建立与配置、Web 站点登 录。IIS 即Internet Imformation Service。如果你的计算机已经配置了IIS 服务,则可以跳过这一步,进行加密站点的建立与配置。如果没有,则...

    web技术与网站规划共387页

    本课程是软件工程硕士的专业选修课。本课程的任务是使学生掌握Web技术的基础知识,并具有网站建设规划...了解加密术、SSL和证书授权机构。 (十四)侵入检测和恢复:1学时 掌握Web攻击的检测和受到攻击后的恢复方法。

    Java加密与解密的艺术

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    Java加密与解密的艺术配书源代码

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    NetBox 一个全新概念的开发平台NetBox 支持目前最为流行的 XML 和 Web Service 工业标准和 ASP、COM、.NET 等流行标准

    NetBox 提供的 SSL、TLS 安全协议、RSA、DES 等加密算法和独立于应用程序的虚拟机技术使您的数据得到最大限度的保护。NetBox 提供将应用部署到无线设备的能力。NetBox 提供将您的应用编译成独立可执行文件的能力,极...

    NetBox v2.8.4128

    NetBox 提供的 SSL、TLS 安全协议、RSA、DES 等加密算法和独立于应用程序的虚拟机技术使您的数据得到最大限度的保护。NetBox 提供将应用部署到无线设备的能力。NetBox 提供将您的应用编译成独立可执行文件的能力,极...

    网络盒子(netbox)

    NetBox 提供的 SSL、TLS 安全协议、RSA、DES 等加密算法和独立于应用程序的虚拟机技术使您的数据得到最大限度的保护。NetBox 提供将应用部署到无线设备的能力。NetBox 提供将您的应用编译成独立可执行文件的能力,极...

    SAML2.0 基础理论

    无论是选择最短口令,决定何时使用SSL加密HTTP会话,还是通过自动登录cookie来识别用户,都经常要付出重大的设计努力,以保护用户的身份信息和他们可能存放于Web站点的其他资料。糟糕的安全性可能带来公关灾难。当...

    PowerUpdate Server Enterprise Edition --- 支持多平台的

    PowerUpdate几乎能够在所有客户或服务器平台上对任何一种软件(比如桌面软件、企业软件或是多层的Web service软件)进行更新。PowerUpdate能够给你的产品添加自动化更新功能,这是一个经证实是安全、可靠、具有可...

    IIS6.0 IIS,互联网信息服务

    C:\Inetpub\wwwroot 9、把frshop.rar解压之后的文件复制到C:\Inetpub\wwwroot\shop下即可 10、您可以通过以下方式访问商城: http://localhost/shop/ 或 http://127.0.0.1/shop/ 或 http://计算机名/shop/ 或 ...

    亮剑.NET深入体验与实战精要2

    7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 常见面试技巧之经典问题巧回答 320 本章小结 321 第8章 用户体验的杀手锏—— Ajax 323 8.1...

    亮剑.NET深入体验与实战精要3

    7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 常见面试技巧之经典问题巧回答 320 本章小结 321 第8章 用户体验的杀手锏—— Ajax 323 8.1...

    citrix 中文管理操作手册

    在不使用 HTTPS 的情况下通过端口 443 运行 SSL Relay 139 配置 SSL Relay 允许的密码集 139 配置 SSL Relay 使用的密码集 139 使用 Secure Gateway 140 使用 Secure Ticket Authority 140 显示 Secure Ticket ...

    Distributed-Storage-System---AWS-S3

    它还有助于通过SSL加密的端点安全地上传和下载数据,并提供了多种静态加密数据的选项。 如何 设置AWS 转到链接 。 下载并运行用于Windows操作系统的64位Windows安装程序或用于Mac操作系统的MacOS PKG安装程序。 ...

    asp.net技术内幕(1)

    &lt;br&gt;第21章 加密网上发送的数据 &lt;br&gt;21.1 使用Secure Sockets Layer 21.1.1 加密 21.1.2 身份验证 21.1.3 数据完整性 21.1.4 SSL有多安全 21.2 将服务器配置为使用SSL 21.2.1 产生...

    asp.net技术内幕(2)

    &lt;br&gt;第21章 加密网上发送的数据 &lt;br&gt;21.1 使用Secure Sockets Layer 21.1.1 加密 21.1.2 身份验证 21.1.3 数据完整性 21.1.4 SSL有多安全 21.2 将服务器配置为使用SSL 21.2.1 产生...

    asp.net技术内幕(5)

    &lt;br&gt;第21章 加密网上发送的数据 &lt;br&gt;21.1 使用Secure Sockets Layer 21.1.1 加密 21.1.2 身份验证 21.1.3 数据完整性 21.1.4 SSL有多安全 21.2 将服务器配置为使用SSL 21.2.1 产生...

    asp.net技术内幕(4)

    &lt;br&gt;第21章 加密网上发送的数据 &lt;br&gt;21.1 使用Secure Sockets Layer 21.1.1 加密 21.1.2 身份验证 21.1.3 数据完整性 21.1.4 SSL有多安全 21.2 将服务器配置为使用SSL 21.2.1 产生...

    asp.net技术内幕(3)

    &lt;br&gt;第21章 加密网上发送的数据 &lt;br&gt;21.1 使用Secure Sockets Layer 21.1.1 加密 21.1.2 身份验证 21.1.3 数据完整性 21.1.4 SSL有多安全 21.2 将服务器配置为使用SSL 21.2.1 产生...

Global site tag (gtag.js) - Google Analytics