MAC电脑上通过jdk8自带keytool生成秘钥和原始证书,操作如下图
生成服务器秘钥:keytool -genkey -alias my-server -keypass 'mypassword' -keyalg RSA -keystore server20210427.keystore -validity 365
生成服务器原始证书:keytool -export -alias my-server -storepass 'mypassword' -file server20210427.cer -keystore server20210427.keystore
生成客户端秘钥:keytool -export -trustcacerts -alias my-client -file my-client20210427.cer -keystore my-client20210427.store -storepass 'myclientpassword'
再通过相同的操作生成客户端原始证书
后面我们看下图这个流程。左边部分是生产自签名的CA证书,右边是通过CA签发服务器证书。当然下图是在java项目中通过java代码签发过程,所以这里能看到有原始证书。
原始证书对应的实际是openssl中的CSR签发请求。只是在java中先生成一个没有签名的原始证书,再通过签名的方法进行签发;
该图需要与https://blog.csdn.net/philip502/article/details/117040074 进行对比,才能知道java的签发流程与openssl的对应关系
java代码签发证书的代码段在 这里 有记录