证书生成过程及自建CA(一)

关键字: 自建CA, openssl, https证书,带有多域名

需求

  • 自建CA并签发证书,可以将自建CA的根证书作为可信任的证书发行人加入到系统中,由它签发的一系列证书就被检验和信任了,不需要没增加一个证书都反复添加信任关系。
  • 浏览器中对https链接所使用的证书进行与域名匹配关系的检查,如果不匹配就会被当作不安全的链接,哪怕已经在系统的信任列表中添加了该证书或为其签发的CA根证书。

生成证书的一般过程

  • 证书生成的过程

生成私钥 --> 生成证书签发请求(csr) --> 签发证书(自签发, CA签发)

  • 生成CA的过程

生成CA私钥 --> 生成证书签发请求(csr) --> 自签发形成CA根证书

  • 生成服务器/客户端证书的过程

生成私钥 --> 生成证书签发请求(csr) --> 由CA对csr签发生成证书

在过程中可以根据需要对过程进行简化,比如使用openss通过参数设置,在一个处理中即可生成自签名的证书

自建CA

自己CA是把一个自签的证书作为根证书,并用于签发其认证的证书的过程,因此除了生成自签发的证书外,还需要建立用于以后进行签发的目录结构和配置文件。

  1. 建立CA的根目录
# 创建根目录及
mkdir rootCA/root  
cd rootCA  
# 复制缺省的配置文件openssl.cnf 
cp /etc/pki/tls/openssl.cnf . 

修改openssl.cnf中[ CA_default ] 中的dir 为当前路径


[ CA_default ]
dir             = .                     # /etc/pki/CA           # Where everything is kept
....

创建相关子目录和文件

# 创建保存新签证书的目录,可在openssl.cnf中修改名称
mkdir newcerts

# 生成两个文件,并初始化内容
touch index.txt
echo "0000">serial

  1. 生成私钥
# rsa 2048-bit
openssl genrsa -out root/ca.key 2048

为包含秘钥可以通过增加-des 或者 -des3等参数设置秘钥

  1. 生成CSR
openssl req -new -sha256  \
    -days 10000 \
    -key root/ca.key \
    -subj "/C=CN/ST=BeiJing/L=Beijing/O=OWNCA/OU=Ownca/CN=www.ownca-root.com" \
    -out root/ca.csr
  1. 生成自签发证书
    openssl ca -selfsign \
    -days 10000 \
    -extensions SAN \
    -config <(cat ./openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS.1:ownca-root.com.com")) \
    -in root/ca.csr -keyfile root/ca.key  \
    -out root/ca.crt

以上两个步骤可以合并在一起,如下:

    openssl req -new -sha256  \
    -x509 \
    -days 10000 \
    -key root/ca.key \
    -subj "/C=CN/ST=BeiJing/L=Beijing/O=OWNCA/OU=Ownca/CN=www.ownca-root.com" \
    -extensions SAN \
    -config <(cat ./openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS.1:ownca-root.com.com")) \
    -out root/ca.crt


本来用openssl x509..也可以签发文件但因为它不能用extensions 指定扩展的section,所以用了openssl ca ...

  • 查看csr中内容
openssl req -in root/ca.csr -text

示例为

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CN, ST=BeiJing, L=Beijing, O=OWNCA, OU=Ownca, CN=www.ownca-root.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:e8:dd:74:30:c7:09:a1:ff:d4:ac:00:15:3c:4f:
                    20:9c:31:ac:5b:e0:b5:ed:7e:79:10:7c:34:69:db:
                    16:e3:21:ae:9d:20:83:a1:7a:d4:63:fc:12:94:7a:
                    a7:36:33:af:02:0e:6e:f9:b5:b4:72:d1:ed:e5:d2:
                    5c:ee:26:6f:cb:fc:9d:7b:82:b7:5b:92:f6:96:3b:
                    60:e7:5b:c4:2c:4e:c6:52:cf:00:9f:06:34:26:d6:

*查看证书中内容

openssl x509 -in root/ca.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 0 (0x0)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=BeiJing, O=OWNCA, OU=Ownca, CN=www.ownca-root.com
        Validity
            Not Before: Jan 16 09:42:23 2019 GMT
            Not After : Jun  3 09:42:23 2046 GMT
        Subject: C=CN, ST=BeiJing, O=OWNCA, OU=Ownca, CN=www.ownca-root.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:e8:dd:74:30:c7:09:a1:ff:d4:ac:00:15:3c:4f:
                    20:9c:31:ac:5b:e0:b5:ed:7e:79:10:7c:34:69:db:
                    16:e3:21:ae:9d:20:83:a1:7a:d4:63:fc:12:94:7a:
  • 检查输出
    查看后发现index.txt文件中添加了内容,增加了对应的.attr, .old文件,serial文件的内容被更新了,增加了.old, 在newcerts中存在一个00.pem文件,它是ca的根证书,比较发现它和root/ca.crt是完全一样的。
-rw-r--r-- 1 root root    84 Jan 16 17:42 index.txt
-rw-r--r-- 1 root root    21 Jan 16 17:42 index.txt.attr
-rw-r--r-- 1 root root     0 Jan 16 17:38 index.txt.old
drwxr-xr-x 2 root root  4096 Jan 16 17:42 newcerts
-rw-r--r-- 1 root root 10947 Jan 16 16:11 openssl.cnf
drwxr-xr-x 2 root root  4096 Jan 16 17:39 root
-rw-r--r-- 1 root root     3 Jan 16 17:42 serial
-rw-r--r-- 1 root root     5 Jan 16 17:42 serial.old
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352