测试环境可自签ssl证书,使服务可以使用https进行访问
先说总体流程,下面再说具体的实施步骤
场景:用户a想申请ssl证书,在此场景有两个角色,用户a,证书颁发机构;所以待会儿使用openssl生成证书的时候,就要构造证书颁发机构,同时也要构建用户请求证书信息向证书颁发机构申请ssl证书
总体流程:
构造证书颁发机构:
1.生成根证书私钥(pem文件)
2.生成根证书签发申请文件(csr文件)
3.自签发根证书(cer文件)
用户申请证书:
1.生成用户证书私钥(pem文件)
2.生成用户证书签发申请文件(csr文件)
3.使用跟证书签发生成用户证书(cer文件)
具体步骤
构造证书颁发机构:
1.检查openssl版本,centos8.3已默认自带
openssl version
2.生成根证书私钥(pem文件),也可以为.key文件,都一样,但是每次运行命令生成的不一样
openssl genrsa -out root.pem 2048
2.生成根证书签发申请文件(csr文件)
直接输入生成:
openssl req -new -sha256 -out root.csr -key root.pem
指定配置文件生成:
在这里可以新建一个配置文件,写一些默认值,里面的配置可以参照/etc/pki/tls/openssl.cnf里的配置文件进行修改
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = guangdong
localityName = Locality Name (eg, city)
localityName_default = guangzhou
organizationName = Organization Name (eg, company)
organizationName_default = mycomp
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
commonName_default = Ted CA Test
#指定配置文件生成
openssl req -new -sha256 -out root2.csr -key root.pem -config ca.conf
3.自签发根证书(cer文件)
openssl x509 -req -in root.csr -out root.cer -signkey root.pem -days 365
用户申请证书:
1.生成用户证书私钥(pem文件)
openssl genrsa -out user.pem 2048
2.生成用户证书签发申请文件(csr文件)
openssl req -new -sha256 -out user.csr -key user.pem
3.使用跟证书签发生成用户证书(cer文件),将user.csr文件发往ca机构签发证书
openssl x509 -req -days 365 -CA root.cer -CAkey root.pem -CAcreateserial -in user.csr -out user.cer
至此我们已经签发了一个客户端申请的user.cer证书
最后我们导出证书文件为keystore文件
openssl pkcs12 -export -clcerts -name usercer -inkey user.pem -in user.cer -out user.keystore
需要输入之前生成证书请求文件时设置的密码:
参数含义如下:
pkcs12——用来处理pkcs#12格式的证书
-export——执行的是导出操作
-clcerts——导出的是客户端证书,-cacerts则表示导出的是ca证书
-name——导出的证书别名
-inkey——证书的私钥路径
-in——要导出的证书的路径
-out——输出的密钥库文件的路径