1.创建根证书私钥:
openssl genrsa -out root.key 1024
2.创建根证书请求文件:
openssl req -new -out root.csr -key root.key
3.创建根证书:
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650
这个步骤会生成3个文件:
root.key
root.csr
root.crt
字段解读
C字段:Country,单位所在国家,为两位数的国家缩写,如:CN 表示中国;
ST 字段:State/Province,单位所在州或省;
L 字段:Locality,单位所在城市/或县区;
O 字段:Organization,此网站的单位名称;
OU 字段:Organization Unit,下属部门名称,也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
CN 字段:Common Name,网站的域名;
二、生成自签名服务器端证书
1.生成服务器端证书私钥:
openssl genrsa -out server.key 1024
2.生成服务器证书请求文件
openssl req -new -out server.csr -key server.key
3.生成服务器端公钥证书
--v1版本
openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
--v3版本
openssl x509 -req -days 3650 -in server.csr -CA root.crt -CAkey root.key -CAcreateserial -out server.crt -extensions v3_req -extensions v3_ca -extfile /usr/local/ssl/openssl.conf
-extensions v3_req 指定 X.509 v3版本
-extensions v3_ca 生成CA扩展名
-extfile ./openssl.conf 指定特殊的配置文件
这个步骤会生成这2个文件:
server.key:服务器端的秘钥文件
server.crt:有效期十年的服务器端公钥证书,使用根证书和服务器端私钥文件一起生成(这个要发给对方)
三.转Java可用格式
1.转换为pkcs12格式(因为在Java中使用证书,需要转换一下格式)
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
或者
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.pkcs12
2.pkcs12格式转JKS格式
keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
四、导入对方公钥证书(.crt)到密钥库
keytool -import -alias clcert -file clcert.crt -keystore server.jks
查看密钥库命令:
keytool -list -v -keystore server.jks
五、配置Spirngboot
1.把.jks文件放到resources目录下
server:
port: 5577
ssl:
enabled: true
key-store: classpath:server.jks
key-store-type: JKS
key-store-password: changeit
trust-store: classpath:server.jks
trust-store-password: changeit
trust-store-type: JKS
client-auth: need