`

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认证的服务端和客户端相关代码。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics