- 创建自签名的SSL证书和私钥
1.1 生成私钥(key文件)
# -genra 生成RSA私钥
# -des3 des3算法
# -out server.key 生成的私钥文件名
# -2048 私钥长度
openssl genrsa -des3 -out server.pass.key 2048 # 输入一个4位以上的密码
1.2 去除私钥中的密码
# 注意:有密码的私钥是server.pass.key,没有密码的私钥是server.key
# 在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。所以要删除私钥中的密码。
openssl rsa -in server.pass.key -out server.key
1.3 生成CSR(证书签名请求)
# -req 生成证书签名请求
# -new 新生成
# -key 私钥文件
# -out 生成的CSR文件
# -subj 生成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"
字段 | 字段含义 | 示例 |
---|---|---|
/C= | Country 国家 | CN |
/ST= | State or Province 省 | Shanghai |
/L= | Location or City | Shanghai |
/O= | Organization 组织或企业 | test |
/OU= | Organization Unit 部门 | test |
/CN= | Common Name 域名或IP | localhost |
1.4 生成自签名SSL证书
# -days 证书有效期
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
# csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
# crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有的公钥,以及签署者的签名等信息
# 备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
- 将.key和.crt文件转换成.jks文件
2.1 使用openssl 工具 将 crt和key格式的证书转还成pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
# 其中:server.pfx (转后的pfx)mycert.key,mycert.crt( crt和key格式的证书)
# 注意:该步骤需要输入密码passward,该密码2与3均需要用到
2.2 查看证书别名
keytool -list -v -keystore server.pfx
2.3 在使用jdk自带的keytool将pfx格式文件转为jks
keytool -importkeystore -srckeystore server.pfx -srcstoretype pkcs12 -destkeystore mycert.jks -deststoretype JKS -alias 1
# 其中:-alias(设置别名) mycert.jks(转还后jks) server.pfx(需转还的pfx)
# 注意:该步骤需要输入3次密码,均采用1中的passward。