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认证的服务端和客户端相关代码。
相关推荐
在CA证书验证方法中,Apache CXF提供了另一种安全机制,即使用SSL/TLS协议。CA证书验证通常涉及到数字证书的使用,这些证书由受信任的证书颁发机构签发。在Apache CXF中,可以设置信任证书管理器来确保服务端只接受...
**双向SSL**,也称为客户端和服务器之间的双向认证,比单向SSL更安全。在双向SSL中,不仅服务器验证客户端,客户端也要验证服务器的身份,同时服务器也会验证客户端的身份。这需要客户端和服务器各自拥有并提供有效...
【描述】"cxf 调用https webservice接口 ,此工程jar包齐全可直接导入eclipse进行二次开发"指出,这个压缩包可能包含了一个完整的项目示例,该示例演示了如何使用CXF调用HTTPS Web服务接口。用户可以直接将这些资源...
### CXF实现SSL安全验证 ...通过以上三个步骤,我们成功地实现了 CXF 的 SSL 安全验证,并搭建了一个基于 HTTPS 的 Web Service。这种方式不仅确保了数据传输的安全性,还提高了系统的整体安全等级。
为了设置安全认证,我们需要配置 CXF 的 Spring 容器,添加相关的拦截器或过滤器,比如 `org.apache.cxf.security.authentication.BasicAuthenticationInInterceptor` 或 `org.apache.cxf.security.transport....
Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...
这个压缩包文件“cxf-https”可能包含了一个已经配置好的示例工程,包括了所有必要的配置文件、源代码和依赖。下载后,可以通过解压并导入到IDE(如IntelliJ IDEA或Eclipse)来研究和学习如何在Spring 5.0和CXF 3.2...
在本文中,我们将深入探讨如何使用Apache CXF V3.2.4实现带有安全认证的Web服务调用。Apache CXF是一个开源框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful API。CXF 3.2版本引入了许多增强功能,包括...
Apache CXF是一个开源的Java框架,它支持创建和消费各种Web服务,包括SOAP和RESTful API。而Spring框架则是一个全面的企业级应用开发框架,它提供了丰富的功能,如依赖注入、AOP(面向切面编程)以及与CXF的良好集成...
本文将深入探讨CXF安全访问的一个重要方面:HTTP基本认证(Http Basic Auth)。这是一种简单但有效的身份验证机制,适用于对Web服务进行安全控制。 HTTP基本认证是基于HTTP协议的,它在请求头中包含一个Base64编码...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而CXF则是一个流行的Web服务实现框架。这两个框架的集成使得开发者能够轻松地创建和消费Web服务。本实例将详细介绍如何在Spring环境中集成CXF,并使用...
这个文件名暗示了可能包含一个CXF的示例项目,可能是用来演示如何设置认证、登录以及客户端调用的代码实例。通常,这样的项目会有一个或多个Java类,用于定义服务接口和服务实现,还有一些配置文件,如Spring XML...
【CXF WSSCEURITRY 身份认证demo】是一个关于在WEB服务中使用Apache CXF框架实现WS-Security(Web Services Security)标准的身份验证的示例项目。该示例着重展示了如何在CXF中配置和使用WS-SecureConversation(WS-...
Apache CXF是一个开源的Java框架,它用于创建和消费SOAP和RESTful Web服务。这里的验证过程通常涉及到安全控制,确保只有经过授权的用户才能访问服务。 在Web服务中,认证是确保用户身份的过程,而授权则是决定用户...
标题 "CXF之一 (与Spring整合)" 指向的是一个关于Apache CXF与Spring框架集成的主题。Apache CXF是一个开源的Web服务框架,它允许开发者创建和消费各种Web服务,而Spring是一个广泛使用的Java企业级应用开发框架。...
Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和服务级应用程序。它支持多种Web服务标准,包括SOAP、RESTful API等,并提供了强大的安全功能。 首先,让我们理解权限验证的基本概念。...
CXF不仅简化了Web服务的开发,而且允许开发者无缝地在客户端和服务端之间切换,从而实现双向通信。 **1. CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)...
Apache CXF是一个开源的Java框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API、WS-*规范支持以及安全验证等。 【描述】中的“客户端和服务端都已经做好了”意味着这个示例包含了完整的CXF...
CXF(CXF: The Apache CXF project is an open source services framework)是一个开源的Java服务框架,它允许开发者创建和消费各种Web服务。CXF的名字来源于"Code first"和"XML first",代表着它支持从Java代码或者...