openssl3.2/test/certs – 009 – Root CA security level variants: MD5 self-signature

文章目录

    • openssl3.2/test/certs - 009 - Root CA security level variants: MD5 self-signature
    • 概述
    • 笔记
    • END

openssl3.2/test/certs - 009 - Root CA security level variants: MD5 self-signature

概述

openssl3.2 - 官方demo学习 - test - certs

笔记

// file my_openssl_linux_log_doc_009.txt

// --------------------------------------------------------------------------------
// 官方原始bash 脚本
// --------------------------------------------------------------------------------
// openssl3.2/test/certs - 009 - Root CA security level variants: MD5 self-signature
OPENSSL_SIGALG=md5 ./mkcert.sh genroot “Root CA” root-key root-cert-md5

// --------------------------------------------------------------------------------
// openssl 命令行整理/分析
// --------------------------------------------------------------------------------
有点知道为啥官方例子有时用bash脚本, 有时又直接用openssl命令行了.
如果比较好归纳的操作(e.g. 证书申请(流程都是生成密钥,生成证书请求文件,生成证书), 就用官方封装的脚本库来做)
如果是概率很小(不经常用到)的操作或者一步就搞定的操作, 官方就没有封装脚本库, 而是直接用openssl命令行.
不过, openssl用户都是用openssl命令行或者用openssl的库(.dll/.so), 没人喜欢学个例子还要去看bash脚本.
不过这个脚本库和测试例子, 不是给用户看的. 而是openssl自己用的.
有点纳闷, 如果是内部自动化测试的证书操作脚本, 为啥不写个文档说一下用途.
放个宝库在这里, 让有好奇心的用户自己研究, 有点过分. 这500行的脚本调用(setup.sh), 疯狂的搞, 也得5天啊.

cmd1:
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out root-key.pem
生成密钥

cmd2:
config file = config_cmd2.txt
string_mask=utf8only
[req]
prompt = no
distinguished_name = dn
[dn]
CN = Root CA

openssl req -new -md5 -key root-key.pem -config config_cmd2.txt -out root-key_req.pem

cmd3:
config file = extfile_cmd3.txt
basicConstraints = critical,CA:true
keyUsage = keyCertSign,cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid

openssl x509 -req -md5 -out root-cert-md5.pem -extfile extfile_cmd3.txt -signkey root-key.pem -set_serial 1 -days 36525 -in root-key_req.pem

这个例子生成的证书和前面的例子不同点: 证书申请文件用的摘要算法是md5, 证书生成的摘要算法也是md5
生成证书的流程是一样的(3步曲 : 生成密钥, 生成证书请求文件, 生成最终的证书)

// --------------------------------------------------------------------------------
// 改版openssl截取的日志(命令行 + 管道配置数据)
// --------------------------------------------------------------------------------
cmd1:
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out root-key.pem

cmd2:
openssl req -new -md5 -key root-key.pem -config /dev/fd/63

-config /dev/fd/63 => /home/lostspeed/openssl/openssl-3.2.0_debian/test/certs/my_openssl_linux_log.txt

string_mask=utf8only
[req]
prompt = no
distinguished_name = dn
[dn]
CN = Root CA

cmd3:
openssl x509 -req -md5 -out root-cert-md5.pem -extfile /dev/fd/63 -signkey root-key.pem -set_serial 1 -days 36525

-extfile /dev/fd/63 => /home/lostspeed/openssl/openssl-3.2.0_debian/test/certs/my_openssl_linux_log.txt

basicConstraints = critical,CA:true
keyUsage = keyCertSign,cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid

END