原文地址:自签名证书 -- 无敌牛
欢迎参观我的个人博客:无敌牛 -- 技术/著作/典籍/分享等
1 生成私钥
openssl genrsa -out server.key 2048
2 创建证书请求文件
openssl req -new -key server.key -out server.csr
3 用私钥和证书请求文件,生成签名文件
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
扩展 ...
从私钥里提取公钥
openssl rsa -in server.key -pubout -out server.pub
检查秘钥是否有效,查看私钥信息
openssl pkey -in server.key -check
查看证书请求文件信息
openssl req -in server.csr -noout -text
查看证书信息
openssl x509 -in server.crt -noout -text
查看证书有效期
openssl req -in server.csr -noout -dates
证书验证
openssl verify -CAfile root-ca.crt server.crt
从网站提取证书文件,示例:
openssl s_client -connect www.madbull.site:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > /opt/xxx.perm
Let's Encrypt 安装证书
需要安装 certbot 工具和 python3-certbot-nginx 插件
yum install certbot python3-certbot-nginx
需要提前把网站建好,certbot会在线生成私钥、证书、证书链和完整证书链,然后修改 nginx 的配置文件中对应域名的证书地址,最后做网页验证。
指令:certbot --nginx -d "www.madbull.site"
自己创建根证书,对其他服务授权,以及在linux环境,把根证书加入到系统信任列表。
1.1 创建根的私钥
openssl genrsa -out root-ca.key 2048
1.2 创建根证书
openssl req -x509 -new -nodes -key root-ca.key -sha256 -days 1024 -out root-ca.crt
2.1 创建服务的私钥
openssl genrsa -out server.key 2048
2.2 给服务创建证书请求文件
openssl req -new -key server.key -out server.csr
2.3 给服务颁发证书
openssl x509 -req -in server.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out server.crt -days 36500 -sha256
3.1 把根证书放到配置可信任的配置证书文件位置
cp root-ca.crt /etc/pki/ca-trust/source/anchors/
3.2 更新系统可信任的根证书
update-ca-trust extract
3.3 验证根证书是否已经在信任列表里
查看 /etc/ssl/certs/ca-bundle.trust.crt 文件中是否有 root-ca.crt 证书
添加多个主题替代名称(SAN)的方法参看:openssl颁发包含主题替代名的证书--SAN -- 无敌牛