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 安全认证,includes some source code to test
CXF实现SSL安全验证,实现https的WebService
cxf 调用https webservice接口 ,此工程jar包齐全可直接导入eclipse进行二次开发
https使用jks,附件里有证书文件,需要自己修改路径
用maven 建立工程,下载即可用~! spring5.0 cxf3.2 maven
NULL 博文链接:https://wangwengcn.iteye.com/blog/1881535
cxf例子,认证,登录,客户端 cxf学习 cxf实例 cxf
包含服务器端和客户端,自己写的,能成功的运行,
WEB service 使用cxf 包实现后的身份验证,使用wssecuriry
CXF V3.2.4 实现的WebService调用(带安全认证),项目下载后只需调整代码中服务器地址、用户名+密码后即可运行。
Spring集成CXF实例(包含WSS4J安全认证)
实战Web Service 之 CXF 实战Web Service 之 CXF
CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载
CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目...Apache CXF已经是一个正式的Apache顶级项目。
WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- 3.2之前版本 java 6 3.1 ...
WebService之CXF开发指南WebService之CXF开发指南WebService之CXF开发指南
配置: trial-cxf-server.xml 其中配置了对传入请求的拦截器用以验证调用者身份 验证程序: WsServerAuthHandler. 这里只需要提供调用者应该使用的正确的口令. 是否和调用者实际传入的口令一致,由cxf完成. web.xml ...
webservice=maven+spring+cxf we服务端+java客户端代码
Spring CXF Restful 实例