前提: 为了安全考虑,原来使用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");