1, 建立一个新的目录,把OPENSSL下的CA.sh和openssl.cnf copy到新目录下,然后执行
#CA.sh –newca
cacert.pem作为根证书来使用。
2, 用openssl建立C++ client端的私钥+公钥签名:
openssl req -newkey rsa:1024 -out serverreq.pem -keyout Clientkey.pem
输入Common Name的时候最好不要和CA证书一致,这里叫的是Boris1
3, 用CA私钥为C++ client端的公钥
openssl ca –in ./demoCA/serverreq.pem –out ./demoCA/clientcert.pem
这里所生成的clientcert.pem是经过ca签名的证书。
4, 生成客户端私钥并存入osbserver.jks
keytool -genkey -alias osbserver -validity 365 -keyalg RSA -keysize 1024 -keystore osbserver.jks -keypass 123456 –storepass 123456
5, 从osbserver.jks中提取服务器端签名请求
keytool -certreq -alias osbserver -sigalg SHA1withRSA -file osbserver.csr -keypass 123456 -storepass 123456 -keystore osbserver.jks
6,用CA私钥为客户端请求签名生成服务器端证书
openssl ca -in demoCA/java/osbserver.csr -out osbserver.crt -cert demoCA/cacert.pem -keyfile demoCA/private/cakey.pem –notext
上边这行命令的执行目录自己改下。
Osbserver.crt为经过签名的服务器端证书.
7,转化服务器端证书的格式。
openssl x509 -in osbserver.crt -out osbserver.der -outform DER
8,转化根证书的格式
openssl x509 -in cacert.pem -out cacert.der -outform DER
9,将转化后的根证书导入到keystore
keytool -import -v -trustcacerts -alias ca_root -file ..\cacert.der -storepass 123456 -keystore osbserver.jks
10,将经过签名的服务器证书导入到服务器的keystore中。
keytool -import -v -alias osbserver -file osbserver.der -storepass 123456 -keystore osbserver.jks
11,创建一个truststore,并导入der格式的根证书
keytool -import -alias ca_root -file cacert.der -keystore osbtrust.jks
12,将c client签名后的的证书转化为der格式
openssl x509 -in clientcert.pem -out clientcert.der -outform DER
13,把c client签名后的der格式证书导入到truststore中
keytool -import -alias c_client -file ../clientcert.der -keystore osbtrust.jks
这样就完成了,C++ client需要用到的是
cacert.pem ,clientcert.pem,Clientkey.pem
osb用到的是:osbserver.jks ,osbtrust.jks
以上命令的路径应根据实际情况输入。