使用openssl创建自签名证书
创建CA
| |
创建私钥和公钥文件
| |
创建签名请求
| |
创建自签名证书 新建自签名证书的附加信息server.ext,内容如下
| |
使用ca签发ssl证书,此时会产生server.crt文件,即为证书文件
| |
查看证书文件内容
| |
使用ca校验证书是否通过
| |
使用cfssl签发证书
cfssl是CloudFlare开源的一款tls工具,使用go语言编写,地址:https://github.com/cloudflare/cfssl。
安装
mac用户:brew install cfssl
linux用户可以直接下载二进制文件:https://github.com/cloudflare/cfssl/releases
签发证书
待补充
证书格式
证书按照格式可以分为二进制和文本文件两种格式。
二进制格式分为:
- .der或者.cer:用来存放证书信息,不包含私钥。
文本格式分为:
- .pem:存放证书或者私钥。一般是.key文件存放私钥信息。对于pem或者key文件,如果存在**——BEGIN CERTIFICATE——,则说明这是一个证书文件。如果存在—–BEGIN RSA PRIVATE KEY—–**,则说明这是一个私钥文件。
- *.key:用来存放私钥文件。
- *.crt:证书请求文件,格式的开头为:—–BEGIN CERTIFICATE REQUEST—–
证书格式的转换
将cert证书转换为pem格式
| |
将pem格式转换为cert格式
证书查看
查看特定域名的证书内容:echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null | openssl x509 -noout -text
获取特定域名的证书内容:openssl s_client -servername www.baidu.com -connect www.baidu.com:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
在 k8s 中,证书通常存放在 secret 中,可以使用 kubeclt + openssl 命令查看证书内容:kubectl get secret -n test-cluster sharer -o jsonpath='{.data.tls\.crt}' | base64 --decode | openssl x509 -text -noout
证书的使用
curl命令关于证书的用法:
- –cacert:指定ca来校验server端的证书合法性
- –cert:指定客户端的证书文件,用在双向认证mTLS中
- –key:私钥文件名,用在双向认证mTLS中