自签发多域名SSL证书

264 阅读1分钟

生成根证书

openssl genrsa -out ca.key 4096  
openssl req -new -x509 -key ca.key -sha256 -subj "/C=CN/ST=Beijing/O=Test CA, INC." -days 3650 -out ca.crt

定义服务端证书配置文件server-cert.conf

[req]
default_bits = 4096
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[dn]
C = CN 
ST = Beijing
O = Test CA, INC.
CN = tls-sample
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = tls-sample
DNS.2 = ...
IP.1 = 127.0.0.1
IP.2 = ::1

生成服务端证书

openssl genrsa -out server.key 4096  
openssl req -new -key server.key -out server.csr -config server-cert.conf  
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650 -sha256 -extfile server-cert.conf -extensions req_ext

查看服务端证书是否多域名

openssl x509 -text -in server.crt -noout

定义客户端证书配置文件server-cert.conf

[req]
default_bits = 4096
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[dn]
C = CN 
ST = Beijing
O = Test Client, Inc.
CN = localhost
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = ...
IP.1 = ::1
IP.2 = 127.0.0.1

生成客户端证书

openssl req -newkey rsa:4096 -nodes -keyout client.key -out client.csr -config client-cert.conf 
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650 -sha256 -extfile client-cert.conf -extensions req_ext

查看客户端证书是否多域名

openssl x509 -text -in client.crt -noout

JAVA 导入证书

keytool -import -alias casserver -keystore $JAVA_HOME/lib/security/cacerts -file server.crt -storepass changeit -noprompt