`
morry
  • 浏览: 129281 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

openssl生成证书,供服务器端dotnet和 java客户端使用

    博客分类:
  • java
阅读更多

前提: 为了安全考虑,原来使用dotnet发布的web service 使用ssl方式

修改: 需要为服务端dotnet颁发数字证书, iis 将生成的证书导入到证书库,dotnet的服务使用该证书。 为另一端java颁布证书, 调用web service的时候,需要提供可信任的证书。

使用工具: openssl

网上查了资料, 现在整理一下,以供备忘。

 

操作步骤:

一.  生成CA证书

    不使用第三方CA机构, 自己创建密钥充当CA,来给双方签名。

   1. 生成创建私钥

       openssl genrsa -out ca/ca-key.pem 1024

   2. 创建证书请求

       openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf

       接下来填写申请证书的相关信息

   3. 自签署证书

       openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

   4. 将证书导出浏览器支持的.p12格式:

       openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

 

二. 生成server端证书

   1. 生成创建私钥

       openssl genrsa -out server/server-key.pem 1024

   2. 创建证书请求

       openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf

       接下来填写申请证书的相关信息

   3. 自签署证书

       openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

   4. 将证书导出浏览器支持的.p12格式:

       openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

 

三. 生成客户端证书

    操作步骤和server端类似

四. 生成JKS证书

    keytool  -keystore  xxx/truststore.jks -keypass 123456 -storepass 123456 -alias test -import -trustcacert -file ca/ca-cert.pem

五. 颁发证书

    1. 服务器端(dotnet): 双击server.p12文件导入到iis密钥库,然后再iis里将web service使用这个证书.

    2. 客户端(java): 将jks证书复制到项目下, 然后在调用服务的时候, 添加System.setProperty("javax.net.ssl.trustStore", "truststore.jks");

 

0
1
分享到:
评论
1 楼 zhb8015 2012-04-24  
文章简洁,明了,学习了。但我有一个问题,生成的客户端的密钥和服务器端的密钥有什么关系呢?或者是没有关系,只是在SSL握手时能够根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和MAC密钥?

相关推荐

Global site tag (gtag.js) - Google Analytics