使用OpenSSL自签SSL证书

如要获得SSL证书,我们通常选择通过广受信任的CA厂家来签发证书,但有时我们也需要自行签发证书。

生成根证书

生成RSA密钥:

openssl genrsa -out ca.key 2048

基于刚生成的RSA密钥生成CA根证书:

openssl req -new -x509 -days 365 -key ca.key -subj "/C=CN/ST=ZJ/L=HZ/O=ZJU/CN=Makazeu Root CA" -out ca.crt

签发证书

以签发*.test.com通配符证书为例:
生成CSR(证书签发请求):

openssl req -newkey rsa:2048 -nodes -keyout test.key -subj "/C=CN/ST=ZJ/L=HZ/O=ZJU/CN=*.test.com" -out test.csr

基于根证书和CSR来签发证书:

openssl x509 -req -extfile <(printf "subjectAltName=DNS:*.test.com") -days 365 -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out test.crt

导入Java虚拟机

使用JRE中的keytool将根证书导入JVM:

keytool -import -trustcacerts -alias MyCACert -file F:\ssl\ca.crt -keystore cacerts