`

cxf之https双向认证之一

    博客分类:
  • cxf
cxf 
阅读更多


https认证其实是基于证书认证,一般常用的x509认证。

关于x509认证,我们需要理解几个名称

Private key 指的是证书中的私钥。

Public key  指的是证书中的公钥。

KeyStore    指的是存储公钥的容器。

TrustStore  指的是存储私钥的容器。

简单的介绍下,x509认证的基本原理

1、客户端发送soap到服务端
首先A(客户端)需要使用自己的私钥进行签名,使用B(服务端)的公钥进行加密,然后将soap传给B,B用私钥进行解密,用A的公钥进行验签。
2、服务端返回数据到客户端
首先B用自己的私钥进行签名,用A的公钥进行加密,然后将soap传回给A,A用私钥进行解密,用B的公钥进行验签。  

了解了相关的概念后,我们开始制作相关的证书。

在java中制作证书可以采用jdk中提供的keytool和openssl,这两者主要的区别在于,如

果制作的证书没有相关的证书链那么完全可以采用keytool,否则就需要用openssl工具。

下载openssl工具,可以从官网进行下载

http://www.yassl.com/yaSSL/Home.html

首先简单介绍下,我需要制作证书的结构,其中包括根证书,二级证书,服务端证书,客户端

证书。 由根证书签署服务端证书和二级证书,二级证书签署客户端证书。


根证书

根证书一般是其认证作用的,也可以称作CA,有相关的CA认证机构,不过一般需要花钱去实现CA认证,在这里根证书采

 

的是自签的方式。

 

其相关命令如下:

mkdir root


//制作根证书
openssl genrsa -out root/root-key.pem 1024


//创建证书请求
openssl req -new -out root/root-req.csr -key root/root-key.pem -subj /C=CN/ST=GuangDong/L=ShenZhen/O="ShanCao Technologies Co. Ltd."/OU="ShanCao EOMS System Team"/OU="Copyright (c) 1998-2018 ShanCao Technologies Co. Ltd."/CN="ShanCao EOMS Root Authority"/emailAddress=liuwuhen@aa.com


//自签署根证书
openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 3650

 

//将证书导入到JKS文件中
keytool -import -v -trustcacerts -storepass changeit -alias root -file root/root-cert.pem -keystore root/root-id.jks
//将证书导出成cer文件
keytool -export -alias root -keystore root/root-id.jks -file root/root-id.cer -storepass changeit

 

服务端

 

服务证书制作命令如下:
cd root


mkdir server


//创建服务器端证书,并自用根证书签署
//创建私钥
openssl genrsa -out root/server/temip-key.pem 1024


//创建证书请求
openssl req -new -out root/server/temip-req.csr -key root/server/temip-key.pem -subj /C=CN/ST=GuangDong/L=ShenZhen/O="ShanCao Technologies Co. Ltd."/OU="ShanCao EOMS System Team"/OU="Copyright (c) 1998-2018 ShanCao Technologies Co. Ltd."/CN=localhost/emailAddress=liuwuhen@huawei.com


注意cn如果是本机应该填写localhost,如果是网站则填写域名.


//签署服务器端证书
openssl x509 -req -in root/server/temip-req.csr -out root/server/temip-cert.pem -CA root/root2.pem -CAkey root/root-key.pem -CAcreateserial -days 3650


//将服务器端证书PKCS12格式
openssl pkcs12 -export -clcerts -in root/server/temip-cert.pem -inkey root/server/temip-key.pem -out

root/server/temip-id.p12

 


二级证书

 

二级证书制作命令如下:

 

mkdir client


//创建私钥
openssl genrsa -out root/client/eomsca-key.pem 1024


//创建证书请求
openssl req -new -out root/client/eomsca-req.csr -key root/client/eomsca-key.pem -subj /C=CN/ST=GuangDong/L=ShenZhen/O="ShanCao Technologies Co. Ltd."/OU="ShanCao EOMS System Team"/OU="Copyright (c) 1998-2018 ShanCao Technologies Co. Ltd."/CN="ShanCao EOMS Secure Server Authority"/emailAddress=liuwuhen@gd.chinamobile.com -reqexts v3_req


//自签署客户端证书
openssl x509 -req -in root/client/eomsca-req.csr -out root/client/eomsca-cert.pem -signkey root/client/eomsca-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650


//将客户端证书导出成浏览器可导入的PKCS12格式
openssl pkcs12 -export -clcerts -in root/client/eomsca-cert.pem -inkey root/client/eomsca-key.pem -out root/client/eomsca-id.p12

 

客户端

 

客户端证书制作命令如下:

 

//创建私钥
openssl genrsa -out root/client/hw_shangcao-key.pem 1024


//创建证书请求
openssl req -new -out root/client/hw_shangcao-req.csr -key root/client/hw_shangcao-key.pem -subj /C=CN/ST=GuangDong/L=ShenZhen/O="ShanCao Technologies Co. Ltd."/OU="ShanCao EOMS System Team"/OU="Copyright (c) 1998-2018 ShanCao Technologies Co. Ltd."/CN=localhost/emailAddress=liuwuhen@gd.chinamobile.com


//自签署客户端证书
openssl x509 -req -in root/client/hw_shangcao-req.csr -out root/client/hw_shangcao-cert.pem -signkey root/client/hw_shangcao-key.pem -CA root/client/eomsca-cert.pem -CAkey root/client/eomsca-key.pem -CAcreateserial -days 3650


//将客户端证书导出成浏览器可导入的PKCS12格式
openssl pkcs12 -export -clcerts -in root/client/hw_shangcao-cert.pem -inkey root/client/hw_shangcao-key.pem -out root/client/hw_shangcao-id.p12

 

补充相关证书类型之间的转换

 

转换成cer格式证书

 

    keytool -export -alias temip -keystore root/server/temip-id.jks -file root/server/temip-id.cer

 

-storepass changeit。

 

转换成keystore和jks格式的

 

//jks格式

keytool -import -v -trustcacerts -storepass changeit -alias temip -file root/server/temip-cert.pem -

 

keystore root/server/temip-id.jks

 

//keystore格式

 

keytool -import -v -trustcacerts -storepass changeit -alias temip -file root/server/temip-cert.pem -

 

keystore root/server/server.keystore

 

 

关于https需要的相关证书已经制作完成,接下来编写cxf https认证的服务端和客户端相关代码。

 

分享到:
评论

相关推荐

    Apache Cxf 安全认证

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

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

    **双向SSL**,也称为客户端和服务器之间的双向认证,比单向SSL更安全。在双向SSL中,不仅服务器验证客户端,客户端也要验证服务器的身份,同时服务器也会验证客户端的身份。这需要客户端和服务器各自拥有并提供有效...

    cxf https webservice

    【描述】"cxf 调用https webservice接口 ,此工程jar包齐全可直接导入eclipse进行二次开发"指出,这个压缩包可能包含了一个完整的项目示例,该示例演示了如何使用CXF调用HTTPS Web服务接口。用户可以直接将这些资源...

    CXF实现SSL安全验证

    ### CXF实现SSL安全验证 ...通过以上三个步骤,我们成功地实现了 CXF 的 SSL 安全验证,并搭建了一个基于 HTTPS 的 Web Service。这种方式不仅确保了数据传输的安全性,还提高了系统的整体安全等级。

    cxf入门例子(安全认证)

    为了设置安全认证,我们需要配置 CXF 的 Spring 容器,添加相关的拦截器或过滤器,比如 `org.apache.cxf.security.authentication.BasicAuthenticationInInterceptor` 或 `org.apache.cxf.security.transport....

    spring+CXF实现WebService(http+https)

    Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...

    cxf-https spring5.0

    这个压缩包文件“cxf-https”可能包含了一个已经配置好的示例工程,包括了所有必要的配置文件、源代码和依赖。下载后,可以通过解压并导入到IDE(如IntelliJ IDEA或Eclipse)来研究和学习如何在Spring 5.0和CXF 3.2...

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

    在本文中,我们将深入探讨如何使用Apache CXF V3.2.4实现带有安全认证的Web服务调用。Apache CXF是一个开源框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful API。CXF 3.2版本引入了许多增强功能,包括...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    Apache CXF是一个开源的Java框架,它支持创建和消费各种Web服务,包括SOAP和RESTful API。而Spring框架则是一个全面的企业级应用开发框架,它提供了丰富的功能,如依赖注入、AOP(面向切面编程)以及与CXF的良好集成...

    2.CXF安全访问之Http Basic Auth(一)

    本文将深入探讨CXF安全访问的一个重要方面:HTTP基本认证(Http Basic Auth)。这是一种简单但有效的身份验证机制,适用于对Web服务进行安全控制。 HTTP基本认证是基于HTTP协议的,它在请求头中包含一个Base64编码...

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

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而CXF则是一个流行的Web服务实现框架。这两个框架的集成使得开发者能够轻松地创建和消费Web服务。本实例将详细介绍如何在Spring环境中集成CXF,并使用...

    cxf例子,认证,登录,客户端

    这个文件名暗示了可能包含一个CXF的示例项目,可能是用来演示如何设置认证、登录以及客户端调用的代码实例。通常,这样的项目会有一个或多个Java类,用于定义服务接口和服务实现,还有一些配置文件,如Spring XML...

    CXF WSSCEURITRY 身份认证demo

    【CXF WSSCEURITRY 身份认证demo】是一个关于在WEB服务中使用Apache CXF框架实现WS-Security(Web Services Security)标准的身份验证的示例项目。该示例着重展示了如何在CXF中配置和使用WS-SecureConversation(WS-...

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

    Apache CXF是一个开源的Java框架,它用于创建和消费SOAP和RESTful Web服务。这里的验证过程通常涉及到安全控制,确保只有经过授权的用户才能访问服务。 在Web服务中,认证是确保用户身份的过程,而授权则是决定用户...

    CXF之一 (与Spring整合)

    标题 "CXF之一 (与Spring整合)" 指向的是一个关于Apache CXF与Spring框架集成的主题。Apache CXF是一个开源的Web服务框架,它允许开发者创建和消费各种Web服务,而Spring是一个广泛使用的Java企业级应用开发框架。...

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

    Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和服务级应用程序。它支持多种Web服务标准,包括SOAP、RESTful API等,并提供了强大的安全功能。 首先,让我们理解权限验证的基本概念。...

    CXF 一个完整的webService(整合客户端和服务端)

    CXF不仅简化了Web服务的开发,而且允许开发者无缝地在客户端和服务端之间切换,从而实现双向通信。 **1. CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)...

    cxf 安全验证例子

    Apache CXF是一个开源的Java框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API、WS-*规范支持以及安全验证等。 【描述】中的“客户端和服务端都已经做好了”意味着这个示例包含了完整的CXF...

    cxf 3.1.1 jar包

    CXF(CXF: The Apache CXF project is an open source services framework)是一个开源的Java服务框架,它允许开发者创建和消费各种Web服务。CXF的名字来源于"Code first"和"XML first",代表着它支持从Java代码或者...

Global site tag (gtag.js) - Google Analytics