前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成CA自签名根证书和颁发证书和证书提取

生成CA自签名根证书和颁发证书和证书提取

作者头像
mousemin
发布2023-06-10 17:47:15
9890
发布2023-06-10 17:47:15
举报
文章被收录于专栏:mouseminmousemin

生成CA自签名根证书和颁发证书和证书提取

CA(Certificate Authority)被称为证书授权中心,是数字证书发放和管理的机构。

根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。

生成CA证书私钥

代码语言:javascript
复制
1# 生成aes128位编码的 密码为Test@2022 2048位的 key 文件  (带密码 、加密格式 aes、des 3des等)
2openssl genrsa -aes128 -passout pass:Test@2022 -out ca_private.key 2048
3# 生成 2048位的 key 文件  (不带密码,加密格式 等)
4openssl genrsa -out ca_private.key 2048 
5# 也可生成  ca_private.pem 文件,将后缀.key 变更为.pem
6openssl genrsa -aes128 -passout pass:Test@2022 -out ca_private.pem 2048
7openssl genrsa -out ca_private.pem 2048

生成CA证书请求文件

代码语言:javascript
复制
1# 有效期20年
2# 也可以 将后缀.key 变更为.pem 带密码(注意目录,文件放在哪个目录下,一会用的到,别找不到路径)
3openssl req -new -key ca_private.key -passin pass:Test@2022 -out ca_req.csr -days 7300
4# 不带密码
5openssl req -new -key ca_private.key  -out ca_req.csr -days 7300 
6# 填写 国家、机构、密码等,按实际情况填写即可

生成CA根证书

代码语言:javascript
复制
1# 注意目录,文件放在哪个目录下,一会用的到,别找不到路径
2openssl x509 -req -in ca_req.csr -signkey ca_private.key -out ca_root.crt -days 7300 -passin pass:Test@2022
3# 不带密码
4openssl x509 -req -in ca_req.csr -signkey ca_private.key -out ca_root.crt -days 7300

注:接下来服务器证书要根据 以上证书 来生成

服务器证书生成

与根节点服务器证书类似,只是生成 服务器证书的第三部要依赖 生成的 ca 根证书

代码语言:javascript
复制
 1# 1. 生成服务器私钥 
 2openssl genrsa -aes128 -passout pass:Test@2022 -out server_private.key 2048
 3## 带秘钥 带加密方式 等同 ca 第一步
 4## 可以 去掉密码 去掉加密 方式
 5openssl genrsa -out server_private.key 2048
 6
 7# 2. 生成服务端的待签名证书
 8## 有效期10年
 9openssl req -new -key server_private.key -passin pass:Test@2022 -out server_req.csr -days 3650
10## 无密码可以去掉密码部分
11openssl req -new -key server_private.key -out server_req.csr -days 3650
12
13# 3. 使用CA根证书对服务端证书签名
14## key版
15openssl x509 -req -in server_req.csr -days 3650  -CAkey ca_private.key -CA ca_root.crt -CAcreateserial  -out server.crt
16## pem 版本
17openssl x509 -req -in server_req.csr -days 3650  -CAkey ca_private.pem -CA ca_root.pem -CAcreateserial  -out server.crt

chrome错误

错误码:NET::ERR_CERT_COMMON_NAME_INVALID

错误信息:此服务器无法证实它就是 mousemin.com - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。

解决方案

新建一个文件 ext.ini,写入以下内容:

代码语言:javascript
复制
1basicConstraints = CA:FALSE
2keyUsage = nonRepudiation, digitalSignature, keyEncipherment
3subjectAltName = @alt_names
4 
5[alt_names]
6DNS.1 = *.mousemin.com
7DNS.2 = mousemin.com

alt_names 下面填写上所有的域名即可,然后签发证书的时候带上参数:

代码语言:javascript
复制
1openssl x509 ... -extfile ext.ini

服务器证书生成脚本

代码语言:javascript
复制
 1#!/usr/bin/env bash
 2set -e
 3
 4File=$1
 5if [[ "${File}" == "" ]]
 6then
 7  echo "gen.sh filename [domain...]"
 8  exit
 9fi
10
11if [[ "$#" < 1 ]]
12then
13  echo "gen.sh filename [domain...]"
14  exit
15fi
16
17domains=($*)
18
19# 生成私钥
20openssl genrsa -out ${File}.key 2048
21
22# 生成服务端的待签名证书
23openssl req -new -key ${File}.key -out ${File}.csr -days 3650
24
25# 生成ext.ini
26echo "basicConstraints = CA:FALSE" > ${File}_ext.ini
27echo "keyUsage = nonRepudiation, digitalSignature, keyEncipherment" >> ${File}_ext.ini
28echo "subjectAltName = @alt_names" >> ${File}_ext.ini
29echo "[alt_names]" >> ${File}_ext.ini
30
31for(( i=1; i<${#domains[@]}; i++)) do
32  echo "DNS.${i} = ${domains[i]}" >> ${File}_ext.ini
33done
34
35for(( i=0;i<${#domains[@]};i++)) do
36  echo "DNS.${i} = ${domains[i]}" >> ${File}_ext.ini
37done
38
39# 使用CA根证书对服务端证书签名
40openssl x509 -req -in ${File}.csr -days 3650 -CAkey ca_private.key -CA ca_root.crt -CAcreateserial -out ${File}.crt -extfile ${File}_ext.ini
41
42rm -f ${File}.csr ${File}_ext.ini

一键生成

代码语言:javascript
复制
1openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out mousemin.com.crt -keyout mousemin.com.key
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年02月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成CA自签名根证书和颁发证书和证书提取
    • 生成CA证书私钥
      • 生成CA证书请求文件
        • 生成CA根证书
          • 服务器证书生成
            • chrome错误
              • 服务器证书生成脚本
                • 一键生成
                相关产品与服务
                SSL 证书
                腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档