`
西门吹牛
  • 浏览: 227228 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

cxf证书式安全验证

 
阅读更多
无责任声明:防止原帖消失还是挪过来吧,原帖地址http://my.oschina.net/XYleung/blog/81790

第一步 生成可用的数字证书
使用命令行打开您要生成数字证书的路径

生成证书还是比较麻烦的,要用到jdk的一个工具——keytool
首先,创建客户端KeyStore和公钥
在命令行运行:
1、创建私钥和KeyStore: keytool -genkey -alias clientprivatekey -keypass keypass -keystore Client_KeyStore.jks -storepass storepass -dname "CN=tongtech.com,C=CN" -keyalg RSA 


创建KeyStore,文件名字为Client_KeyStore.jks,里面有个名为clientprivatekey的私钥。
2、给私钥进行自签名: keytool -selfcert -keystore Client_KeyStore.jks -storepass storepass -alias clientprivatekey -keypass keypass 


签名成功,无任何提示。
3、导出私钥
作用是导出的证书将作为公钥保存到TrustStore中。 keytool -export -alias clientprivatekey -file Client_PublicCert.cer -keystore Client_KeyStore.jks -storepass storepass 


如果成功,可以看到提示:
保存在文件中的认证 <Client_PublicCert.cer>
然后创建服务端KeyStore
1、创建私钥和KeyStore
keytool -genkey -alias serverprivatekey -keypass keypass -keystore Server_KeyStore.jks -storepass storepass -dname "CN=tongtech.com,C=CN" -keyalg RSA 


2、给私钥进行自签名
keytool -selfcert -keystore Server_KeyStore.jks -storepass storepass -alias serverprivatekey -keypass keypass 


3、导出私钥
keytool -export -alias serverprivatekey -file Server_PublicCert.cer -keystore Server_KeyStore.jks -storepass storepass 


接下来,将客户端公钥导入到服务端TrustStore中,将服务端公钥导入到客户端TrustStore中。
在命令行中输入:
keytool -import -alias clientpublickey -file Client_PublicCert.cer -keystore Server_TrustStore.jks -storepass storepass 


回车后会提示

引用

所有者:CN=tongtech.com, C=CN
签发人:CN=tongtech.com, C=CN
序列号:4cc7e86c
有效期: Wed Oct 27 16:53:00 CST 2010 至Tue Jan 25 16:53:00 CST 2011
证书指纹:
         MD5:FB:AB:71:9F:56:F3:CB:65:16:DC:52:E0:2D:27:FF:F6
         SHA1:06:A8:B1:B4:E2:42:9D:B2:F7:99:E7:70:34:08:96:52:E1:CD:4A:76
         签名算法名称:SHA1withRSA
         版本: 3
信任这个认证? [否]:


打y即可,然后提示

引用

认证已添加至keystore中


同理,将服务端公钥导入到客户端TrustStore中
keytool -import -alias serverpublickey -file Server_PublicCert.cer -keystore Client_TrustStore.jks -storepass storepass   
同样会出现提示,打y回车,提示成功就可以了。
最终你会在您的文件夹中看到如下的文件


第二步 服务端配置
1.放置证书的位置和属性配置
将上面生成的文件以Server开头的文件放置在src的cert包下
配置Server_Decrypt.properties,内容如下
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=serverprivatekey
org.apache.ws.security.crypto.merlin.file=cert/Server_KeyStore.jks
这里有个问题要注意,要注意去除空格,否则会报org.apache.ws.security.components.crypto.Merlin Not Found的error
配置Server_Verf.properties,内容如下
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=clientpublickey
org.apache.ws.security.crypto.merlin.file=cert/Server_TrustStore.jks
2.设置配置文件(由于在上一篇文章已经有了基本的配置,这里直接给出WSS4JInInterceptor的配置)
<bean id="WSS4JInInterceptorCert"  class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
        <constructor-arg> 
            <map> 
                <entry key="action" value="Signature Encrypt" />  
                <entry key="signaturePropFile" value="Server_SignVerf.properties"/>
                <entry key="decryptionPropFile" value="Server_Decrypt.properties"/>
                <entry key="passwordCallbackClass" value="ws.interceptor.UTPasswordServerCallBack"/>     
            </map> 
        </constructor-arg> 
    </bean>
3.UTPasswordServerCallBack类
import java.io.IOException;                                              
                                                                         
import javax.security.auth.callback.Callback;                            
import javax.security.auth.callback.CallbackHandler;                     
import javax.security.auth.callback.UnsupportedCallbackException;        
                                                                         
import org.apache.ws.security.WSPasswordCallback;                        
                                                                         
public class UTPasswordServerCallBack implements CallbackHandler {       
                                                                         
    public void handle(Callback[] callbacks) throws IOException,         
            UnsupportedCallbackException {                               
        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];       
        pc.setPassword("keypass");                                       
        System.out.println("Server Identifier=" + pc.getIdentifier());   
        System.out.println("Server Password=" + pc.getPassword());       
    }                                                                    
}                                                                        



第三部 客户端配置
1.放置证书的位置和属性配置
将上面生成的文件以Client开头的文件放置在src的cert包下
配置Client_Encrypt.properties,内容如下
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=serverpublickey
org.apache.ws.security.crypto.merlin.file=cert/Client_TrustStore.jks
配置Client_Sign.properties,内容如下
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=clientprivatekey
org.apache.ws.security.crypto.merlin.file=cert/Client_KeyStore.jks
2.设置配置文件(由于在上一篇文章已经有了基本的配置,这里直接给出WSS4JOutInterceptor的配置)
<bean id="WSS4JOutInterceptorCert" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
         <constructor-arg> 
            <map> 
              <entry key="action" value="Signature Encrypt"/>
              <entry key="user" value="clientprivatekey"/>
              <entry key="signaturePropFile" value="Client_Sign.properties"/>
              <entry key="encryptionUser" value="serverpublickey"/>
                <entry key="encryptionPropFile" value="Client_Encrypt.properties"/>
                <entry key="passwordCallbackClass" value="ws.erp.UTPasswordClientCallBack"/>
              </map> 
          </constructor-arg>   
    </bean>    
3.UTPasswordClientCallBack类
public class UTPasswordClientCallBack implements CallbackHandler {            
                                                                              
    public void handle(Callback[] callbacks) throws IOException,              
            UnsupportedCallbackException {                                    
        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];            
        pc.setPassword("keypass");                                            
        System.out.println("Client Identifier=" + pc.getIdentifier());        
        System.out.println("Client Password=" + pc.getPassword());            
    }                                                                         
                                                                              
}                                                                             

分享到:
评论

相关推荐

    CXF实现SSL安全验证

    ### CXF实现SSL安全验证 在现代网络应用中,安全通信是至关重要的。Apache CXF 是一个开源项目,提供了一套强大的工具和服务框架,用于构建和开发基于标准的服务(如 Web Services)。本文将详细介绍如何使用 CXF ...

    使用cxf的webservice安全验证

    本篇将深入探讨如何使用Apache CXF进行Web服务的安全验证。 首先,我们要了解Web服务安全的基本概念。Web服务安全通常涉及身份验证、授权、加密和消息完整性。Apache CXF支持多种安全模型,包括基本认证、digest...

    cxf 安全验证例子

    【标题】"CXF安全验证例子"涉及到的是Apache CXF框架在实现Web服务时的安全验证机制。Apache CXF是一个开源的Java框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API、WS-*规范支持以及安全...

    cxf安全验证完整实例

    这是一个cxf安全验证的完整实例,直接可以部署到应用服务器中运行。

    cxf 数字安全证书 生成工具

    在这个"**cxf 数字安全证书 生成工具**"中,我们主要关注如何使用CXF框架进行Web服务的数字证书验证。 首先,让我们了解**keytool**。keytool是Java提供的一个命令行工具,用于管理密钥对和证书。在生成数字证书的...

    CXF 通过用户名和密码进行验证

    **三、CXF安全配置** 在CXF中,可以通过以下几种方式进行安全配置: - **Java代码配置**:使用`javax.xml.ws.BindingProvider`的`setEndpointAddress`和`setOutboundProperties`方法,设置安全相关的属性,如`wsse...

    CXF V3.2.4 实现的WebService调用(带安全认证)

    在CXF中,我们可以使用WS-Security(Web Services Security)标准来实现这一功能,它支持多种安全机制,如用户名令牌、X.509证书和SAML令牌。 在CXF V3.2.4中实现带有安全认证的Web服务调用,我们需要以下步骤: 1...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    在本文中,我们将深入探讨如何在Apache CXF框架中实现客户端和服务器端的权限验证。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和服务级应用程序。它支持多种Web服务标准,包括SOAP、...

    Apache Cxf 安全认证

    在CA证书验证方法中,Apache CXF提供了另一种安全机制,即使用SSL/TLS协议。CA证书验证通常涉及到数字证书的使用,这些证书由受信任的证书颁发机构签发。在Apache CXF中,可以设置信任证书管理器来确保服务端只接受...

    cxf入门例子(安全认证)

    【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...

    CXF 调用ASP服务器端通过用户名密码验证

    java CXF客户端请求ERP SAP webservice通过用户名和密码验证功能!

    CXF(WS_Security)证书加密

    3. **配置CXF**:在CXF的配置文件(如cxf.xml或Spring配置文件)中,需要设置安全策略,包括启用WS-Security,指定使用的加密算法、证书路径等。 4. **服务端配置**:在服务端,我们需要配置服务端的证书,以及如何...

    验证客户端源码cxf

    - CXF提供对WS-Security的支持,可以实现用户名令牌、X.509证书等安全策略。 7. **异常处理**: - 源码中会包含处理服务调用异常的部分,例如,处理网络错误、服务不可用、业务逻辑错误等。 8. **日志和调试**:...

    4.CXF安全访问之单向SSL或者双向SSL(三)

    本篇将详细探讨如何使用CXF实现单向SSL(Secure Sockets Layer)和双向SSL的安全访问。首先,我们需要理解SSL的基本概念。 SSL是一种网络安全协议,用于在客户端和服务器之间建立加密连接,确保数据传输的隐私和...

    Spring集成CXF实例(包含WSS4J安全认证)

    5. **X.509证书认证**: 使用X.509证书进行客户端和服务端的身份验证。 **三、CxfSpringWss4JServer** 这个服务器端项目包含了Spring-CXF-WSS4J集成的核心配置和实现。主要步骤包括: 1. **配置WSS4J安全策略**: ...

    CXF webservice 验证码接口

    使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的初始化和配置。而Apache CXF则是一个强大的...通过这种方式,你可以构建安全、可靠的Web服务,并在Spring Boot环境中轻松地进行客户端调用。

    CXF 添加soap 头部信息.zip_CXF增加soap头验证_bluex8z_cxf_meltedkw7_soap信息头

    本篇文章将深入探讨如何在CXF中添加SOAP头部信息,并进行验证,以确保服务的安全性和正确性。 首先,我们需要理解SOAP头部的作用。SOAP头是SOAP消息的一个可选部分,它包含了除消息体之外的附加信息,如安全凭证、...

Global site tag (gtag.js) - Google Analytics