熟悉下相关概念
- x509:证书标准
- pem和der:两种(包括公私钥、证书签名请求、证书等内容的)的格式,前者是文本形式,linux常用,后者是二进制形式,windows常用,仅仅是格式,不表明内容,如果作为后缀就像html起的效果一样。有时候用pem做公钥的后缀
- crt和cer:常见的两种证书后缀名,前者大多数情况为pem格式,后者大多数情况为der格式
- csr:证书签名请求文件(后缀一般都是.csr),包含了公钥、用户名等信息
- key:常见的私钥的后缀名
创建私钥,公钥
openssl genpkey -algorithm RSA -out registry_private.key -pkeyopt rsa_keygen_bits:2048
openssl rsa -in registry_private.key -pubout -out registry_public.key 生产一个公钥信息文件
创建签名申请
生成证书签名请求 (CSR)
创建一个配置文件,内容如下:
[root@master01 pki]# cat crs.conf
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = CKG
L = CKG
O = ITTest
OU = IT
CN = 192.168.2.222
[v3_req]
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.2.222 # 这些dns名和ip 就是 表示后面生成的证书就是用来验证这些地址,如果生成的证书用于其他地址的,客户端就认为不证书不合法。
执行命令生成申请文件
openssl req -new -key registry_private.key -out registry.csr -config crs.conf
创建证书
生成自签名证书
openssl x509 -req -in registry.csr -signkey registry_private.key -out registry.crt -days 3650 -extfile crs.conf -extensions v3_req
-days 3650 指定证书的有效天数
查看证书信息
openssl pkey -in registry_private.key -text -noout 查看生成后的私钥信息
openssl x509 -in registry.crt -text -noout 查看证书
检验证书是否有某个根证书签名
openssl verify -CAfile rootCA.crt
-CAfile rootCA.crt 指定了根证书文件。
server.crt 是待验证的证书文件。
输出 server.crt: OK 说明server.crt就是被rootCA.crt签名的