使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)

---恢复内容开始---

 

一、介绍

 企业自用, 到证书机构签发证书的费用和时间等都可以省下.....

SSl证书的背景功用.......(省略万字,不废话)

 

 可以参考:

   SSL证书_百度百科 

   X509 证书详解 

   openssl 证书请求和自签名命令req详解 

★【OpenSSL】创建证书 ★ 

   使用openssl创建自签名证书及部署到IIS教程 

★利用CA私钥和证书创建中间CA★ 

  关于openssl和X509 V3证书 

★OpenSSL-证书链★ 

  理解证书和证书链(一)

  理解证书和证书链(二)

  理解证书和证书链(三)

 

开源的可视化管理工具 :)

https://github.com/chris2511/xca

 

二、创建CA根

1.创建 Root CA

创建 root 文件夹, 在root文件夹上级建立配置文件 openssl.cnf 

a.创建 root 密钥

命令:

openssl genrsa -des3 -out root/private.pem 4096

然后要输入 密码, 用以保护 私钥.

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第1张图片

 

b.创建自签名证书

命令:

openssl req -x509 -new -key root/private.pem -out root/root.crt -days 36500 -config ../openssl.cnf

输入上一步密钥的密码 , 然后填写要签名的各个项目 (直接回车使用默认信息, 输入`.`(英文句号)此项留空不填信息)

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第2张图片

 至此,自签名证书就生成好了.

 c.创建要颁发证书时要用到的文件和文件夹   (这些 都在 openssl.cnf 里配置的)

             index.txt  OpenSSL在创建自签证书时会向该文件里写下索引

             database.txt  OpenSSL会模拟数据库将一些敏感信息写在该文件里

             serial.txt  创建该文件后,请编辑在第一行写下 01

             new_certs 文件夹,openssl 自动备份签发的证书的文件夹

三、创建中间CA证书

创建 ca 文件夹, 重复上面的操作.

这里仍然需要将创建root CA用的配置文件拷贝到中间CA证书目录下,该配置文件在生成CSR文件和以后签发client文件时都要用到

1.创建私钥

openssl genrsa -des3 -out ca/private.pem 2048

输入保护密钥的密码

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第3张图片

2.创建自签名证书

openssl req -new -x509 -key ca/private.pem -out ca/cert.crt -config openssl.cnf

密钥的密码 , 填写要签名的各个项目 (直接回车使用默认信息, 输入`.`(英文句号)此项留空不填信息使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第4张图片

 "A challenge password" 不用填,

"An optional company name" 可以填一下.

 

 要注意的是, 这些字段要与root证书一样,不然不能通过:

    stateOrProvinceName  州或省名

    organizationName  组织单位名称

 

3.用 root 证书对证书请求文件签名

openssl ca -ss_cert ca/cert.crt -cert root/root.crt -keyfile root/private.pem -out ca/cacert.crt -config openssl.cnf
openssl x509 -req -in ca/cert.csr -CA root/root.crt -CAkey root/private.pem -out ca/cacert.crt -days 3650 -set_serial 03 -extfile v3.ext
openssl ca -in ca/cert.csr -cert root/root.crt -keyfile root/private.pem -out ca/cacert.crt -extensions v3_ca -notext -md sha256 -config openssl.cnf

 使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第5张图片

 最后把 root CA 的证书 和 中间CA证书 合并, (就是 简单的放到一个文件中就行了) 

copy ca\cacert.crt + root\root.crt ca_chain.crt

 https 握手, 服务器会先验证证书中的第一个, 无法验证信任就会验证其上一级(就是证书里面的第二个)第二个无法验证就继续验证第三个...直到root证书,如果root证书可信任, 这个证书链就是可信任的了

四、颁发证书

 颁发证书之前, 被颁发的证书需要 生成自己的私钥和证书请求文件

1.生成域名的私钥

openssl genrsa -out mydomain.key 2048

2.用此私钥生成证书请求文件 

openssl req -new -key mydomain.pem -out mydomain.csr -days 365 -config openssl.cnf

填写请求签名的信息

 Common Name 可以填写域名('xxx.com' 或'*.xxx.com'等), 就是颁发域名证书了

3.也可以用一条命令同时生成私钥和证书请求文件

openssl req -new -keyout mydomain.pem -out mydomain.csr  -config openssl.cnf

同样需要填写信息

 

3.查看证书请求内容

openssl req -in client.req -noout -text -subject

 

 

4.使用CA证书对证书请求文件签名,生成颁发的证书

openssl ca -in mydomain.csr -cert ca/cacert.pem -keyfile ca/cakey.pem -out mydomain.crt -config openssl.cnf

 

 

将私钥和证书转换成 .pfx 格式(iis等使用)

 openssl pkcs12 -export  -inkey server.key -in server.crt -out server.pfx

五、附配置

 

################################################################
# openssl example configuration file.
# This is mostly used for generation of certificate requests.
#################################################################

[default]          # The default ca section
name = root        # 自定义变量(可以放在开头也可以放在中间), 使用方式: $name , ${name}
default_ca = CA_default
name_opt = CA_default
cert_opt = CA_default

#################################################################

[ CA_default ]
dir=.                            # 自定义变量(可以放在开头也可以放在中间), 使用方式: $dir , ${dir}
                                 # 这是第一个openssl目录结构中的目录
certs=$dir                       # Where the issued certs are kept(已颁发的证书路径,即CA或自签的)
                                 # 这是第二个openssl目录结构中的目录,但非必须
crl_dir= $dir/crl                # Where the issued crl are kept(已颁发的crl存放目录)
                                 # 这是第三个openssl目录结构中的目录
database= $dir/index.txt         # database index file
#unique_subject = no             # 设置为yes则database文件中的subject列不能出现重复值
                                 # 即不能为subject相同的证书或证书请求签名
                                 # 建议设置为no,但为了保持老版本的兼容性默认是yes
new_certs_dir= $dir/new_certs    # default place for new certs(将来颁发的证书存放路径)
                                 # 这是第四个openssl目录结构中的目录
serial= $dir/serial.txt          # The current serial number(提供序列号的文件,如:创建收输入`01`)
crl= $dir/crl.pem                # The current CRL当前crl序列号)
private_key= $dir/CA/private.key # The private key(签名时需要的私钥,即CA自己的私钥)
certificate=$dir/CA/$name        # The CA certificate(CA自己的证书文件)
RANDFILE= $dir/.rand             # private random number file(提供随机数种子的文件)
x509_extensions = usr_cert       # The extentions to add to the cert(添加到证书中的扩展项)
## 以下两行是关于证书展示格式的,虽非必须项,但推荐设置。一般就如下格式不用修改
name_opt    = ca_default         # Subject Name options
cert_opt    = ca_default         # Certificate field options
## 以下是copy_extensions扩展项,需谨慎使用
# copy_extensions = copy         # 生成证书时扩展项的copy行为,可设置为none/copy/copyall
                                 # 不设置该name时默认为none
                                 # 建议简单使用时设置为none或不设置,且强烈建议不要设置为copyall
# crl_extensions    = crl_ext
default_days= 3650               # how long to certify for(默认的证书有效期)
default_crl_days= 30             # how long before next CRL(CRL的有效期)
default_md= sha256               # which message digest to use(默认摘要算法)
preserve= no                     # keep passed DN ordering(Distinguished Name顺序,一般设置为no
                                 # 设置为yes仅为了和老版本的IE兼容

# A few different ways of specifying how closely the request should
# conform to the details of the CA

policy= policy_match             # For the CA policy(证书匹配策略,此处表示引用[ policy_match ]的策略)

[ policy_match ]
countryName= match               # match 表示请求中填写的该字段信息要和CA证书中的匹配
stateOrProvinceName= optional
organizationName= optional
organizationalUnitName= optional # optional表示该字段信息可提供可不提供
commonName= supplied             # supplied表示该字段信息必须提供
emailAddress= optional

# For the `anything' policy
# At this point in time, you must list all acceptable `object'
# types
# 以下是没被引用的策略扩展,只要是没被引用的都是被忽略的
[ policy_anything ]
countryName = optional
stateOrProvinceName= optional
localityName= optional
organizationName = optional
organizationalUnitName = optional
commonName= supplied
emailAddress= optional

# 以下是添加的扩展项usr_cert的内容*/
[ usr_cert ]
basicConstraints=critical,CA:TRUE,pathlen:2         # 基本约束,CA:FALSE表示颁发的证书不能作为CA证书,即不能给其他人颁发证书
keyUsage = critical,keyCertSign,cRLSign,digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment  # 指定证书的目的,也就是限制证书的用法用途
#subjectAltName=email:copy,email:[email protected]  #这个参数很重要,现在被很多地方用来签署多域名证书,但它除了DNS,还可指定email, IP,DN等
## 除了上面两个扩展项可能会修改下,其余的扩展项别管了,如下面的
nsComment  = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

##  req相关的段
[ req ]
default_bits = 2048                             # 生成证书请求时用到的私钥的密钥长度
default_md = sha256                             # 证书请求签名时的单向加密算法
default_keyfile= privkey.pem                    # 默认新创建的私钥存放位置,
                                                # 如-new选项没指定-key时会自动创建私钥
                                                # -newkey选项也会自动创建私钥
distinguished_name  = req_distinguished_name    # 可识别的字段名(常被简称为DN)
                                                # 引用req_distinguished_name段的设置
x509_extensions = v3_ca                         # 加入到自签证书中的扩展项
#req_extensions = v3_req                        # 加入到证书请求中的扩展项
attributes  = req_attributes                    # 证书请求的属性,引用req_attributes段的设置,可以不设置它
encrypt_key = no                                # 自动生成的私钥文件要加密否?一般设置no,和-nodes选项等价
## 输入和输出私钥文件的密码,如果该私钥文件有密码,不写该设置则会提示输入
#input_password = secret
#output_password = secret
#prompt = yes | no              # 设置为no将不提示输入DN field,而是直接从配置文件中读取,需要同时设置DN默认值,否则创建证书请求时将出错
utf8 = yes
string_mask = utf8only

[ req_distinguished_name ]
## 以下项均可指定可不指定,但ca段的policy中指定为match和supplied一定要指定
## 以下选项都可以自定义,如countryName = C,commonName = CN
countryName= 国名(C)(2个字母代码)            # 国家名(C)
countryName_default = "CN"                   # 默认的国家名
countryName_min= 2                           # 填写的国家名的最小字符长度
countryName_max = 2                          # 填写的国家名的最大字符长度
stateOrProvinceName= 省/州名(S)(全名)       # 省份(S)
stateOrProvinceName_default = "SH"
localityName = 城市/地点名称(LT)              # 城市(LT)
localityName_default = "SH"
organizationName = 公司/组织名称(ON)          # 公司(ON)
organizationName_default = "Foxcall"
organizationalUnitName  = 部门/单位名称(OU)   # 部门(OU)
organizationalUnitName_default = "Foxcall"
## 以下的commonName(CN)一般必须给,如果作为CA,那么需要在ca的policy中定义CN = supplied
## CN定义的是将要申请SSL证书的域名或子域名或主机名。
## 例如要为zhonghua.com申请ssl证书则填写zhonghua.com,而不能填写www.zhonghua.com
## 要为www.zhonghua.com申请SSL则填写www.zhonghua.com
## CN必须和将要访问的网站地址一样,否则访问时就会给出警告
## 该项要填写正确,否则该请求被签名后证书中的CN与实际环境中的CN不对应,将无法提供证书服务
commonName = 域名/主机名称(CN)                # 主机名(CN)
commonName_max = 64
commonName_default = "Foxcall"
emailAddress = 电子邮件地址(E)                # Email地址,很多时候不需要该项
emailAddress_max = 40
emailAddress_default = "[email protected]"

[ req_attributes ]   # 该段是为了某些特定软件的运行需要而设定的
                     # 现在一般都不需要提供challengepassword
                     # 所以该段几乎用不上
                     # 所以不用管这段
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ v3_req ]
## Extensions to add to a certificate request
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,cRLSign  # nonRepudiation, digitalSignature, keyEncipherment
subjectKeyIdentifier=hash
[ v3_ca ]
## Extensions for a typical CA
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true
keyUsage = cRLSign, keyCertSign  # 典型的CA证书的使用方法设置,由于测试使用所以注释了
                                   # 如果真的需要申请为CA, 么该设置可以如此配置
View Code

 

 好了, 做个记录

---恢复内容开始---

 

一、介绍

 企业自用, 到证书机构签发证书的费用和时间等都可以省下.....

SSl证书的背景功用.......(省略万字,不废话)

 

 可以参考:

   SSL证书_百度百科 

   X509 证书详解 

   openssl 证书请求和自签名命令req详解 

   使用openssl创建自签名证书及部署到IIS教程 

★利用CA私钥和证书创建中间CA★ 

  关于openssl和X509 V3证书 

★OpenSSL-证书链★ 

 

 

二、创建CA根

1.创建 Root CA

创建 root 文件夹, 在root文件夹上级建立配置文件 openssl.cnf 

a.创建 root 密钥

命令:

openssl genrsa -des3 -out root/private.pem 4096

然后要输入 密码, 用以保护 私钥.

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第6张图片

 

b.创建自签名证书

命令:

openssl req -x509 -new -key root/private.pem -out root/root.crt -days 36500 -config ../openssl.cnf

输入上一步密钥的密码 , 然后填写要签名的各个项目 (直接回车使用默认信息, 输入`.`(英文句号)此项留空不填信息)

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第7张图片

 至此,自签名证书就生成好了.

 c.创建要颁发证书时要用到的文件和文件夹   (这些 都在 openssl.cnf 里配置的)

             index.txt  OpenSSL在创建自签证书时会向该文件里写下索引

             database.txt  OpenSSL会模拟数据库将一些敏感信息写在该文件里

             serial.txt  创建该文件后,请编辑在第一行写下 01

             new_certs 文件夹,openssl 自动备份签发的证书的文件夹

三、创建中间CA证书

创建 ca 文件夹, 重复上面的操作.

这里仍然需要将创建root CA用的配置文件拷贝到中间CA证书目录下,该配置文件在生成CSR文件和以后签发client文件时都要用到

1.创建私钥

openssl genrsa -des3 -out ca/private.pem 2048

输入保护密钥的密码

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第8张图片

2.创建自签名证书

openssl req -new -x509 -key ca/private.pem -out ca/cert.crt -config openssl.cnf

密钥的密码 , 填写要签名的各个项目 (直接回车使用默认信息, 输入`.`(英文句号)此项留空不填信息使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第9张图片

 "A challenge password" 不用填,

"An optional company name" 可以填一下.

 

 要注意的是, 这些字段要与root证书一样,不然不能通过:

    stateOrProvinceName  州或省名

    organizationName  组织单位名称

 

3.用 root 证书对证书请求文件签名

openssl ca -ss_cert ca/cert.crt -cert root/root.crt -keyfile root/private.pem -out ca/cacert.crt -config openssl.cnf
openssl x509 -req -in ca/cert.csr -CA root/root.crt -CAkey root/private.pem -out ca/cacert.crt -days 3650 -set_serial 03 -extfile v3.ext
openssl ca -in ca/cert.csr -cert root/root.crt -keyfile root/private.pem -out ca/cacert.crt -extensions v3_ca -notext -md sha256 -config openssl.cnf

 使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)_第10张图片

 最后把 root CA 的证书 和 中间CA证书 合并, (就是 简单的放到一个文件中就行了) 

copy ca\cacert.crt + root\root.crt ca_chain.crt

 https 握手, 服务器会先验证证书中的第一个, 无法验证信任就会验证其上一级(就是证书里面的第二个)第二个无法验证就继续验证第三个...直到root证书,如果root证书可信任, 这个证书链就是可信任的了

四、颁发证书

 颁发证书之前, 被颁发的证书需要 生成自己的私钥和证书请求文件

1.生成域名的私钥

openssl genrsa -out mydomain.key 2048

2.用此私钥生成证书请求文件 

openssl req -new -key mydomain.pem -out mydomain.csr -days 365 -config openssl.cnf

填写请求签名的信息

 Common Name 可以填写域名('xxx.com' 或'*.xxx.com'等), 就是颁发域名证书了

3.也可以用一条命令同时生成私钥和证书请求文件

openssl req -new -keyout mydomain.pem -out mydomain.csr  -config openssl.cnf

同样需要填写信息

 

3.查看证书请求内容

openssl req -in client.req -noout -text -subject

 

 

4.使用CA证书对证书请求文件签名,生成颁发的证书

openssl ca -in mydomain.csr -cert ca/cacert.pem -keyfile ca/cakey.pem -out mydomain.crt -config openssl.cnf

 

 

将私钥和证书转换成 .pfx 格式(iis等使用)

 openssl pkcs12 -export  -inkey server.key -in server.crt -out server.pfx

五、附配置

 

################################################################
# openssl example configuration file.
# This is mostly used for generation of certificate requests.
#################################################################

[default]          # The default ca section
name = root        # 自定义变量(可以放在开头也可以放在中间), 使用方式: $name , ${name}
default_ca = CA_default
name_opt = CA_default
cert_opt = CA_default

#################################################################

[ CA_default ]
dir=.                            # 自定义变量(可以放在开头也可以放在中间), 使用方式: $dir , ${dir}
                                 # 这是第一个openssl目录结构中的目录
certs=$dir                       # Where the issued certs are kept(已颁发的证书路径,即CA或自签的)
                                 # 这是第二个openssl目录结构中的目录,但非必须
crl_dir= $dir/crl                # Where the issued crl are kept(已颁发的crl存放目录)
                                 # 这是第三个openssl目录结构中的目录
database= $dir/index.txt         # database index file
#unique_subject = no             # 设置为yes则database文件中的subject列不能出现重复值
                                 # 即不能为subject相同的证书或证书请求签名
                                 # 建议设置为no,但为了保持老版本的兼容性默认是yes
new_certs_dir= $dir/new_certs    # default place for new certs(将来颁发的证书存放路径)
                                 # 这是第四个openssl目录结构中的目录
serial= $dir/serial.txt          # The current serial number(提供序列号的文件,如:创建收输入`01`)
crl= $dir/crl.pem                # The current CRL当前crl序列号)
private_key= $dir/CA/private.key # The private key(签名时需要的私钥,即CA自己的私钥)
certificate=$dir/CA/$name        # The CA certificate(CA自己的证书文件)
RANDFILE= $dir/.rand             # private random number file(提供随机数种子的文件)
x509_extensions = usr_cert       # The extentions to add to the cert(添加到证书中的扩展项)
## 以下两行是关于证书展示格式的,虽非必须项,但推荐设置。一般就如下格式不用修改
name_opt    = ca_default         # Subject Name options
cert_opt    = ca_default         # Certificate field options
## 以下是copy_extensions扩展项,需谨慎使用
# copy_extensions = copy         # 生成证书时扩展项的copy行为,可设置为none/copy/copyall
                                 # 不设置该name时默认为none
                                 # 建议简单使用时设置为none或不设置,且强烈建议不要设置为copyall
# crl_extensions    = crl_ext
default_days= 3650               # how long to certify for(默认的证书有效期)
default_crl_days= 30             # how long before next CRL(CRL的有效期)
default_md= sha256               # which message digest to use(默认摘要算法)
preserve= no                     # keep passed DN ordering(Distinguished Name顺序,一般设置为no
                                 # 设置为yes仅为了和老版本的IE兼容

# A few different ways of specifying how closely the request should
# conform to the details of the CA

policy= policy_match             # For the CA policy(证书匹配策略,此处表示引用[ policy_match ]的策略)

[ policy_match ]
countryName= match               # match 表示请求中填写的该字段信息要和CA证书中的匹配
stateOrProvinceName= optional
organizationName= optional
organizationalUnitName= optional # optional表示该字段信息可提供可不提供
commonName= supplied             # supplied表示该字段信息必须提供
emailAddress= optional

# For the `anything' policy
# At this point in time, you must list all acceptable `object'
# types
# 以下是没被引用的策略扩展,只要是没被引用的都是被忽略的
[ policy_anything ]
countryName = optional
stateOrProvinceName= optional
localityName= optional
organizationName = optional
organizationalUnitName = optional
commonName= supplied
emailAddress= optional

# 以下是添加的扩展项usr_cert的内容*/
[ usr_cert ]
basicConstraints=critical,CA:TRUE,pathlen:2         # 基本约束,CA:FALSE表示颁发的证书不能作为CA证书,即不能给其他人颁发证书
keyUsage = critical,keyCertSign,cRLSign,digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment  # 指定证书的目的,也就是限制证书的用法用途
#subjectAltName=email:copy,email:[email protected]  #这个参数很重要,现在被很多地方用来签署多域名证书,但它除了DNS,还可指定email, IP,DN等
## 除了上面两个扩展项可能会修改下,其余的扩展项别管了,如下面的
nsComment  = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

##  req相关的段
[ req ]
default_bits = 2048                             # 生成证书请求时用到的私钥的密钥长度
default_md = sha256                             # 证书请求签名时的单向加密算法
default_keyfile= privkey.pem                    # 默认新创建的私钥存放位置,
                                                # 如-new选项没指定-key时会自动创建私钥
                                                # -newkey选项也会自动创建私钥
distinguished_name  = req_distinguished_name    # 可识别的字段名(常被简称为DN)
                                                # 引用req_distinguished_name段的设置
x509_extensions = v3_ca                         # 加入到自签证书中的扩展项
#req_extensions = v3_req                        # 加入到证书请求中的扩展项
attributes  = req_attributes                    # 证书请求的属性,引用req_attributes段的设置,可以不设置它
encrypt_key = no                                # 自动生成的私钥文件要加密否?一般设置no,和-nodes选项等价
## 输入和输出私钥文件的密码,如果该私钥文件有密码,不写该设置则会提示输入
#input_password = secret
#output_password = secret
#prompt = yes | no              # 设置为no将不提示输入DN field,而是直接从配置文件中读取,需要同时设置DN默认值,否则创建证书请求时将出错
utf8 = yes
string_mask = utf8only

[ req_distinguished_name ]
## 以下项均可指定可不指定,但ca段的policy中指定为match和supplied一定要指定
## 以下选项都可以自定义,如countryName = C,commonName = CN
countryName= 国名(C)(2个字母代码)            # 国家名(C)
countryName_default = "CN"                   # 默认的国家名
countryName_min= 2                           # 填写的国家名的最小字符长度
countryName_max = 2                          # 填写的国家名的最大字符长度
stateOrProvinceName= 省/州名(S)(全名)       # 省份(S)
stateOrProvinceName_default = "SH"
localityName = 城市/地点名称(LT)              # 城市(LT)
localityName_default = "SH"
organizationName = 公司/组织名称(ON)          # 公司(ON)
organizationName_default = "Foxcall"
organizationalUnitName  = 部门/单位名称(OU)   # 部门(OU)
organizationalUnitName_default = "Foxcall"
## 以下的commonName(CN)一般必须给,如果作为CA,那么需要在ca的policy中定义CN = supplied
## CN定义的是将要申请SSL证书的域名或子域名或主机名。
## 例如要为zhonghua.com申请ssl证书则填写zhonghua.com,而不能填写www.zhonghua.com
## 要为www.zhonghua.com申请SSL则填写www.zhonghua.com
## CN必须和将要访问的网站地址一样,否则访问时就会给出警告
## 该项要填写正确,否则该请求被签名后证书中的CN与实际环境中的CN不对应,将无法提供证书服务
commonName = 域名/主机名称(CN)                # 主机名(CN)
commonName_max = 64
commonName_default = "Foxcall"
emailAddress = 电子邮件地址(E)                # Email地址,很多时候不需要该项
emailAddress_max = 40
emailAddress_default = "[email protected]"

[ req_attributes ]   # 该段是为了某些特定软件的运行需要而设定的
                     # 现在一般都不需要提供challengepassword
                     # 所以该段几乎用不上
                     # 所以不用管这段
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ v3_req ]
## Extensions to add to a certificate request
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,cRLSign  # nonRepudiation, digitalSignature, keyEncipherment
subjectKeyIdentifier=hash
[ v3_ca ]
## Extensions for a typical CA
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true
keyUsage = cRLSign, keyCertSign  # 典型的CA证书的使用方法设置,由于测试使用所以注释了
                                   # 如果真的需要申请为CA, 么该设置可以如此配置
View Code

 

 好了, 做个记录

转载于:https://www.cnblogs.com/lzpong/p/10450293.html

你可能感兴趣的:(使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤))