Https
keytool-p12
生成密钥
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore1.p12 -validity 3650
alias:密钥别名 storetype:指定密钥仓库类型 keyalg:生证书的算法名称,RSA是一种非对称加密算法 keysize:证书大小 keystore:生成的证书文件的存储路径 validity:证书的有效期
服务器配置使用
spring.ssl.bundle.jks.mybundle.truststore.location=classpath:ssl/keystore.p12
spring.ssl.bundle.jks.mybundle.truststore.password=123456
pem
生产openssl
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -passout pass:Jonny
openssl pkcs12 -export -in cert.pem -inkey key.pem -out keystore1.p12 -name secure-service -passin pass:Jonny -passout pass:Jonny
- openssl req: 表示要执行一个证书请求(CSR,Certificate Signing Request)相关的操作
- -x509: 告诉 OpenSSL 我们不打算创建 CSR,而是直接生成一个自签名的 X.509 证书。X.509 是一种标准,用于定义公钥证书的格式
- -newkey rsa:4096: 指定生成一个新的 RSA 密钥对,并指定了密钥长度为 4096 位。RSA 是一种非对称加密算法,广泛用于数字签名和密钥交换。4096 位是当前推荐的安全密钥长度,以确保安全性。
- -keyout src/main/resources/key.pem: 指定生成的私钥文件的保存位置和名称。在这个例子中,私钥将以 PEM 格式保存到 src/main/resources/key.pem
- -out src/main/resources/cert.pem: 指定生成的自签名证书的保存位置和名称。该证书也会是 PEM 格式,存储在 src/main/resources/cert.pem
- -days 365: 设置证书的有效期为 365 天(即一年)。这意味着证书从生成之日起一年内有效
- -passout pass:FooBar: 为生成的私钥文件设置密码。当他人尝试使用或查看私钥时,需要提供这个密码(在这里是 FooBar)
- openssl pkcs12: 这是命令的起点,指示使用 OpenSSL 工具来处理 PKCS#12 相关的操作
- -export: 这个选项告诉 OpenSSL 你要创建一个新的 PKCS#12 文件(也就是常说的密钥库或证书库文件),用于存储证书和相应的私钥。
- -inkey src/main/resources/key.pem: -inkey 指定了私钥文件的路径,这里是 src/main/resources/key.pem。这个私钥需要与提供的证书匹配,同样是以 PEM 格式存储
- -name secure-service: 这个参数为 PKCS#12 文件内的条目指定一个友好的名称。当你将此 PKCS#12 导入到其他应用程序或服务时,这个名称可以帮助识别它。在这个例子里,名称是 secure-service
- -passin pass:FooBar: 指定输入文件(这里是私钥文件)的密码。如果私钥文件被加密保护了,你需要提供正确的密码来解密它。在这个命令中,密码被设定为 FooBar
- -passout pass:FooBar: 类似于 -passin,但这是为输出的 PKCS#12 文件设置密码。这意味着生成的 keystore.p12 文件在创建时就会被加密,并且之后访问它时需要输入密码 FooBar
再来一个case
生成密钥
# 生产私钥
openssl genrsa -des3 -out server.pass.key 2048
# 移除密码,因为后续都需要输入密码很麻烦
openssl rsa -in server.pass.key -out server.key
# 生成csr
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=cetc/OU=cetc/CN=gitlab.cetc.cn"
# 生成自签名SSL证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# 使用openssl 工具 将 crt和key格式的证书转还成pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
# 查看证书别名
keytool -list -v -keystore server.pfx
# 在使用jdk自带的keytool将pfx格式文件转为jks
keytool -importkeystore -srckeystore server.pfx -srcstoretype pkcs12 -destkeystore sever.jks -deststoretype JKS -alias 1
# 迁移。最开始为新密码,最后为老密码
keytool -importkeystore -srckeystore server.jks -destkeystore server.jks -deststoretype pkcs12
SpringBoot配置
server.port=8443
server.ssl.key-store=classpath:ssl/server.jks
server.ssl.key-store-password=新密码
server.ssl.key-password=新密码