Code前端首页关于Code前端联系我们

openssl签名和自签名证书的更多实现方法

terry 2年前 (2023-09-28) 阅读数 59 #未命名

1。使用自定义配置文件的实现方法

自建CA

自建CA的机制: 1.生成私钥; 2. 创建证书请求;3.使用私钥对证书请求进行签名。

由于测试环境的原因,自建CA只能是根CA。使用的配置文件如下。

[default]
name = root-ca    /* 变量*/
default_ca = CA_default
name_opt = ca_default
cert_opt = ca_default

[CA_default]
home = .     /* 变量*/
database = $home/db/index
serial = $home/db/serial
crlnumber = $home/db/crlnumber
certificate = $home/$name.crt
private_key = $home/private/$
RANDFILE = $home/private/random
new_certs_dir = $home/certs
unique_subject = no
copy_extensions = none
default_days = 3650
default_crl_days = 365
default_md = sha256
policy = policy_to_match

[policy_to_match]
countryName = match
stateOrProvinceName = optional
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[CA_DN]
countryName = "C"
contryName_default = "CN"
organizationName = "O"
organizationName_default = "jmu"
commonName = "CN"
commonName_default = ""

[req]
default_bits = 4096
encrypt_key = no
default_md = sha256
utf8 = yes
string_mask = utf8only
# prompt = no  /* 测试时该选项导致出错,所以将其注释掉*/
distinguished_name = CA_DN
req_extensions = ca_ext

[ca_ext]
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,cRLSign
subjectKeyIdentifier = hash

(1)。创建openssl的目录结构

(a)。创建配置文件

[root@xuexi ~]# mkdir /ssl;touch /ssl/

[root@xuexi ~]# cd /ssl

[root@xuexi ssl]# vim

(b)。在 openssl 目录结构中创建目录。上面配置文件中的目录是/ssl/db、/ssl/private 和/ssl/certs。您可以考虑将私有目录的权限设置为600或400。

[root@xuexi ssl]# mkdir /ssl/{db,private,certs}

[root@xuexi ssl]# chmod -R 400 private/

(2).CA自签名

常规证书请求必须使用CA的私钥进行签名并生成证书。既然是自签名证书,当然必须用你自己的私钥签名。您可以使用伪命令 req、ca、x509 来获取签名。

使用req伪命令创建CA

有两种方法: 1.一步完成,即私钥、证书请求和自签名一次完成。 2、一步步完成。首先,生成私钥,然后创建证书请求并指定私钥对其进行签名。方法二中,私钥生成和证书申请可以一步合一,证书申请和签名也可以一步合一。

方法一:一步完成

在下面的一步命令中,使用-new。由于未指定私钥的输出位置,因此自动存储在default_keyfile指定的文件中;由于中的req部分设置为encrypt_key=no,因此交互时不需要指定私钥的加密密码;由于使用req -x509自签名的证书有效期默认为30天,而配置文件的req部分无法配置这个期限,所以只能使用-days来指定有效期。请注意,此 -days 选项仅适用于x509的签名。如果证书请求中指定了时间,则该时间无效。

[root@xuexi ssl]# openssl req -x509 -new -out req.crt -config  -days 365
[root@xuexi ssl]# ll 
total 24
drwxr-xr-x 2 root root 4096 Nov 2209:05 certs
drwxr-xr-x 2 root root 4096 Nov 2209:05 db
drwx------ 2 root root 4096 Nov 2209:05 private
-rw-r--r-- 1 root root 3272 Nov 2210:52   /* 注意权限为644 */
-rw-r--r-- 1 root root 1753 Nov 2210:52 req.crt
-rw-r--r-- 1 root root 1580 Nov 2210:51 
[root@xuexi ssl]# openssl x509 -noout -dates -in req.crt 
notBefore=Nov 2202:52:242016 GMT
notAfter=Nov 2202:52:242017 GMT

方法二:逐步完成。这里我们演示了可能的步骤组合

>>创建私钥并合并证书请求并独立执行签名的方法独立生成私钥以及请求和签名合并方法完全是一步一步的

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门