使用OpenSsl自己CA根证书,二级根证书和颁发证书
2019-02 from--https://www.bbsmax.com/A/GBJrvaZBJ0/

一、介绍

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

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 密钥

命令:

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

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

b.创建自签名证书

命令:

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

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

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

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

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

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

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

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

三、创建中间CA证书

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

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

1.创建私钥

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

输入保护密钥的密码

2.创建自签名证书

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

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

“A challenge password” 不用填,

“An optional company name” 可以填一下.

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

stateOrProvinceName  州或省名

organizationName  组织单位名称

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

  1. 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

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

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

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

四、颁发证书

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

1.生成域名的私钥

  1. openssl genrsa -out mydomain.key

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

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

填写请求签名的信息

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

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

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

同样需要填写信息

3.查看证书请求内容

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

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

  1. 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

五、附配置

  1. ################################################################
  2. # openssl example configuration file.
  3. # This is mostly used for generation of certificate requests.
  4. #################################################################
  5. [default] # The default ca section
  6. name = root # 自定义变量(可以放在开头也可以放在中间), 使用方式: $name , ${name}
  7. default_ca = CA_default
  8. name_opt = CA_default
  9. cert_opt = CA_default
  10. #################################################################
  11. [ CA_default ]
  12. dir=. # 自定义变量(可以放在开头也可以放在中间), 使用方式: $dir , ${dir}
  13. # 这是第一个openssl目录结构中的目录
  14. certs=$dir # Where the issued certs are kept(已颁发的证书路径,即CA或自签的)
  15. # 这是第二个openssl目录结构中的目录,但非必须
  16. crl_dir= $dir/crl # Where the issued crl are kept(已颁发的crl存放目录)
  17. # 这是第三个openssl目录结构中的目录
  18. database= $dir/index.txt # database index file
  19. #unique_subject = no # 设置为yes则database文件中的subject列不能出现重复值
  20. # 即不能为subject相同的证书或证书请求签名
  21. # 建议设置为no,但为了保持老版本的兼容性默认是yes
  22. new_certs_dir= $dir/new_certs # default place for new certs(将来颁发的证书存放路径)
  23. # 这是第四个openssl目录结构中的目录
  24. serial= $dir/serial.txt # The current serial number(提供序列号的文件,如:创建收输入`01`)
  25. crl= $dir/crl.pem # The current CRL当前crl序列号)
  26. private_key= $dir/CA/private.key # The private key(签名时需要的私钥,即CA自己的私钥)
  27. certificate=$dir/CA/$name # The CA certificate(CA自己的证书文件)
  28. RANDFILE= $dir/.rand # private random number file(提供随机数种子的文件)
  29. x509_extensions = usr_cert # The extentions to add to the cert(添加到证书中的扩展项)
  30. ## 以下两行是关于证书展示格式的,虽非必须项,但推荐设置。一般就如下格式不用修改
  31. name_opt = ca_default # Subject Name options
  32. cert_opt = ca_default # Certificate field options
  33. ## 以下是copy_extensions扩展项,需谨慎使用
  34. # copy_extensions = copy # 生成证书时扩展项的copy行为,可设置为none/copy/copyall
  35. # 不设置该name时默认为none
  36. # 建议简单使用时设置为none或不设置,且强烈建议不要设置为copyall
  37. # crl_extensions = crl_ext
  38. default_days= 3650 # how long to certify for(默认的证书有效期)
  39. default_crl_days= 30 # how long before next CRL(CRL的有效期)
  40. default_md= sha256 # which message digest to use(默认摘要算法)
  41. preserve= no # keep passed DN ordering(Distinguished Name顺序,一般设置为no
  42. # 设置为yes仅为了和老版本的IE兼容
  43. # A few different ways of specifying how closely the request should
  44. # conform to the details of the CA
  45. policy= policy_match # For the CA policy(证书匹配策略,此处表示引用[ policy_match ]的策略)
  46. [ policy_match ]
  47. countryName= match # match 表示请求中填写的该字段信息要和CA证书中的匹配
  48. stateOrProvinceName= optional
  49. organizationName= optional
  50. organizationalUnitName= optional # optional表示该字段信息可提供可不提供
  51. commonName= supplied # supplied表示该字段信息必须提供
  52. emailAddress= optional
  53. # For the `anything’ policy
  54. # At this point in time, you must list all acceptable `object’
  55. # types
  56. # 以下是没被引用的策略扩展,只要是没被引用的都是被忽略的
  57. [ policy_anything ]
  58. countryName = optional
  59. stateOrProvinceName= optional
  60. localityName= optional
  61. organizationName = optional
  62. organizationalUnitName = optional
  63. commonName= supplied
  64. emailAddress= optional
  65. # 以下是添加的扩展项usr_cert的内容*/
  66. [ usr_cert ]
  67. basicConstraints=critical,CA:TRUE,pathlen:2 # 基本约束,CA:FALSE表示颁发的证书不能作为CA证书,即不能给其他人颁发证书
  68. keyUsage = critical,keyCertSign,cRLSign,digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment # 指定证书的目的,也就是限制证书的用法用途
  69. #subjectAltName=email:copy,email:my@other.address #这个参数很重要,现在被很多地方用来签署多域名证书,但它除了DNS,还可指定email, IP,DN等
  70. ## 除了上面两个扩展项可能会修改下,其余的扩展项别管了,如下面的
  71. nsComment = “OpenSSL Generated Certificate”
  72. subjectKeyIdentifier=hash
  73. authorityKeyIdentifier=keyid,issuer
  74. ## req相关的段
  75. [ req ]
  76. default_bits = 2048 # 生成证书请求时用到的私钥的密钥长度
  77. default_md = sha256 # 证书请求签名时的单向加密算法
  78. default_keyfile= privkey.pem # 默认新创建的私钥存放位置,
  79. # 如-new选项没指定-key时会自动创建私钥
  80. # -newkey选项也会自动创建私钥
  81. distinguished_name = req_distinguished_name # 可识别的字段名(常被简称为DN)
  82. # 引用req_distinguished_name段的设置
  83. x509_extensions = v3_ca # 加入到自签证书中的扩展项
  84. #req_extensions = v3_req # 加入到证书请求中的扩展项
  85. attributes = req_attributes # 证书请求的属性,引用req_attributes段的设置,可以不设置它
  86. encrypt_key = no # 自动生成的私钥文件要加密否?一般设置no,和-nodes选项等价
  87. ## 输入和输出私钥文件的密码,如果该私钥文件有密码,不写该设置则会提示输入
  88. #input_password = secret
  89. #output_password = secret
  90. #prompt = yes | no # 设置为no将不提示输入DN field,而是直接从配置文件中读取,需要同时设置DN默认值,否则创建证书请求时将出错
  91. utf8 = yes
  92. string_mask = utf8only
  93. [ req_distinguished_name ]
  94. ## 以下项均可指定可不指定,但ca段的policy中指定为match和supplied一定要指定
  95. ## 以下选项都可以自定义,如countryName = C,commonName = CN
  96. countryName= 国名(C)(2个字母代码) # 国家名(C)
  97. countryName_default = “CN” # 默认的国家名
  98. countryName_min= 2 # 填写的国家名的最小字符长度
  99. countryName_max = 2    # 填写的国家名的最大字符长度
  100. stateOrProvinceName= 省/州名(S)(全名) # 省份(S)
  101. stateOrProvinceName_default = “SH”
  102. localityName = 城市/地点名称(LT) # 城市(LT)
  103. localityName_default = “SH”
  104. organizationName = 公司/组织名称(ON) # 公司(ON)
  105. organizationName_default = “Foxcall”
  106. organizationalUnitName = 部门/单位名称(OU)   # 部门(OU)
  107. organizationalUnitName_default = “Foxcall”
  108. ## 以下的commonName(CN)一般必须给,如果作为CA,那么需要在ca的policy中定义CN = supplied
  109. ## CN定义的是将要申请SSL证书的域名或子域名或主机名。
  110. ## 例如要为com申请ssl证书则填写zhonghua.com,而不能填写www.zhonghua.com
  111. ## 要为zhonghua.com申请SSL则填写www.zhonghua.com
  112. ## CN必须和将要访问的网站地址一样,否则访问时就会给出警告
  113. ## 该项要填写正确,否则该请求被签名后证书中的CN与实际环境中的CN不对应,将无法提供证书服务
  114. commonName = 域名/主机名称(CN) # 主机名(CN)
  115. commonName_max = 64
  116. commonName_default = “Foxcall”
  117. emailAddress = 电子邮件地址(E) # Email地址,很多时候不需要该项
  118. emailAddress_max = 40
  119. emailAddress_default = “foxcall@foxcallcrm.com”
  120. [ req_attributes ] # 该段是为了某些特定软件的运行需要而设定的
  121. # 现在一般都不需要提供challengepassword
  122. # 所以该段几乎用不上
  123. # 所以不用管这段
  124. challengePassword = A challenge password
  125. challengePassword_min = 4
  126. challengePassword_max = 20
  127. unstructuredName = An optional company name
  128. [ v3_req ]
  129. ## Extensions to add to a certificate request
  130. basicConstraints = critical,CA:true
  131. keyUsage = critical,keyCertSign,cRLSign # nonRepudiation, digitalSignature, keyEncipherment
  132. subjectKeyIdentifier=hash
  133. [ v3_ca ]
  134. ## Extensions for a typical CA
  135. subjectKeyIdentifier=hash
  136. authorityKeyIdentifier=keyid:always,issuer
  137. basicConstraints = CA:true
  138. keyUsage = cRLSign, keyCertSign # 典型的CA证书的使用方法设置,由于测试使用所以注释了
  139. # 如果真的需要申请为CA, 么该设置可以如此配置

好了, 做个记录

—恢复内容开始—

一、介绍

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

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

可以参考:

SSL证书_百度百科

X509 证书详解

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

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

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

关于openssl和X509 V3证书

OpenSSL-证书链

二、创建CA根

1.创建 Root CA

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

a.创建 root 密钥

命令:

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

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

b.创建自签名证书

命令:

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

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

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

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

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

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

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

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

三、创建中间CA证书

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

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

1.创建私钥

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

输入保护密钥的密码

2.创建自签名证书

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

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

“A challenge password” 不用填,

“An optional company name” 可以填一下.

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

stateOrProvinceName  州或省名

organizationName  组织单位名称

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

  1. 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

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

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

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

四、颁发证书

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

1.生成域名的私钥

  1. openssl genrsa -out mydomain.key

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

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

填写请求签名的信息

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

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

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

同样需要填写信息

3.查看证书请求内容

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

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

  1. 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

五、附配置

  1. ################################################################
  2. # openssl example configuration file.
  3. # This is mostly used for generation of certificate requests.
  4. #################################################################
  5. [default] # The default ca section
  6. name = root # 自定义变量(可以放在开头也可以放在中间), 使用方式: $name , ${name}
  7. default_ca = CA_default
  8. name_opt = CA_default
  9. cert_opt = CA_default
  10. #################################################################
  11. [ CA_default ]
  12. dir=. # 自定义变量(可以放在开头也可以放在中间), 使用方式: $dir , ${dir}
  13. # 这是第一个openssl目录结构中的目录
  14. certs=$dir # Where the issued certs are kept(已颁发的证书路径,即CA或自签的)
  15. # 这是第二个openssl目录结构中的目录,但非必须
  16. crl_dir= $dir/crl # Where the issued crl are kept(已颁发的crl存放目录)
  17. # 这是第三个openssl目录结构中的目录
  18. database= $dir/index.txt # database index file
  19. #unique_subject = no # 设置为yes则database文件中的subject列不能出现重复值
  20. # 即不能为subject相同的证书或证书请求签名
  21. # 建议设置为no,但为了保持老版本的兼容性默认是yes
  22. new_certs_dir= $dir/new_certs # default place for new certs(将来颁发的证书存放路径)
  23. # 这是第四个openssl目录结构中的目录
  24. serial= $dir/serial.txt # The current serial number(提供序列号的文件,如:创建收输入`01`)
  25. crl= $dir/crl.pem # The current CRL当前crl序列号)
  26. private_key= $dir/CA/private.key # The private key(签名时需要的私钥,即CA自己的私钥)
  27. certificate=$dir/CA/$name # The CA certificate(CA自己的证书文件)
  28. RANDFILE= $dir/.rand # private random number file(提供随机数种子的文件)
  29. x509_extensions = usr_cert # The extentions to add to the cert(添加到证书中的扩展项)
  30. ## 以下两行是关于证书展示格式的,虽非必须项,但推荐设置。一般就如下格式不用修改
  31. name_opt = ca_default # Subject Name options
  32. cert_opt = ca_default # Certificate field options
  33. ## 以下是copy_extensions扩展项,需谨慎使用
  34. # copy_extensions = copy # 生成证书时扩展项的copy行为,可设置为none/copy/copyall
  35. # 不设置该name时默认为none
  36. # 建议简单使用时设置为none或不设置,且强烈建议不要设置为copyall
  37. # crl_extensions = crl_ext
  38. default_days= 3650 # how long to certify for(默认的证书有效期)
  39. default_crl_days= 30 # how long before next CRL(CRL的有效期)
  40. default_md= sha256 # which message digest to use(默认摘要算法)
  41. preserve= no # keep passed DN ordering(Distinguished Name顺序,一般设置为no
  42. # 设置为yes仅为了和老版本的IE兼容
  43. # A few different ways of specifying how closely the request should
  44. # conform to the details of the CA
  45. policy= policy_match # For the CA policy(证书匹配策略,此处表示引用[ policy_match ]的策略)
  46. [ policy_match ]
  47. countryName= match # match 表示请求中填写的该字段信息要和CA证书中的匹配
  48. stateOrProvinceName= optional
  49. organizationName= optional
  50. organizationalUnitName= optional # optional表示该字段信息可提供可不提供
  51. commonName= supplied # supplied表示该字段信息必须提供
  52. emailAddress= optional
  53. # For the `anything’ policy
  54. # At this point in time, you must list all acceptable `object’
  55. # types
  56. # 以下是没被引用的策略扩展,只要是没被引用的都是被忽略的
  57. [ policy_anything ]
  58. countryName = optional
  59. stateOrProvinceName= optional
  60. localityName= optional
  61. organizationName = optional
  62. organizationalUnitName = optional
  63. commonName= supplied
  64. emailAddress= optional
  65. # 以下是添加的扩展项usr_cert的内容*/
  66. [ usr_cert ]
  67. basicConstraints=critical,CA:TRUE,pathlen:2 # 基本约束,CA:FALSE表示颁发的证书不能作为CA证书,即不能给其他人颁发证书
  68. keyUsage = critical,keyCertSign,cRLSign,digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment # 指定证书的目的,也就是限制证书的用法用途
  69. #subjectAltName=email:copy,email:my@other.address #这个参数很重要,现在被很多地方用来签署多域名证书,但它除了DNS,还可指定email, IP,DN等
  70. ## 除了上面两个扩展项可能会修改下,其余的扩展项别管了,如下面的
  71. nsComment = “OpenSSL Generated Certificate”
  72. subjectKeyIdentifier=hash
  73. authorityKeyIdentifier=keyid,issuer
  74. ## req相关的段
  75. [ req ]
  76. default_bits = 2048 # 生成证书请求时用到的私钥的密钥长度
  77. default_md = sha256 # 证书请求签名时的单向加密算法
  78. default_keyfile= privkey.pem # 默认新创建的私钥存放位置,
  79. # 如-new选项没指定-key时会自动创建私钥
  80. # -newkey选项也会自动创建私钥
  81. distinguished_name = req_distinguished_name # 可识别的字段名(常被简称为DN)
  82. # 引用req_distinguished_name段的设置
  83. x509_extensions = v3_ca # 加入到自签证书中的扩展项
  84. #req_extensions = v3_req # 加入到证书请求中的扩展项
  85. attributes = req_attributes # 证书请求的属性,引用req_attributes段的设置,可以不设置它
  86. encrypt_key = no # 自动生成的私钥文件要加密否?一般设置no,和-nodes选项等价
  87. ## 输入和输出私钥文件的密码,如果该私钥文件有密码,不写该设置则会提示输入
  88. #input_password = secret
  89. #output_password = secret
  90. #prompt = yes | no # 设置为no将不提示输入DN field,而是直接从配置文件中读取,需要同时设置DN默认值,否则创建证书请求时将出错
  91. utf8 = yes
  92. string_mask = utf8only
  93. [ req_distinguished_name ]
  94. ## 以下项均可指定可不指定,但ca段的policy中指定为match和supplied一定要指定
  95. ## 以下选项都可以自定义,如countryName = C,commonName = CN
  96. countryName= 国名(C)(2个字母代码) # 国家名(C)
  97. countryName_default = “CN” # 默认的国家名
  98. countryName_min= 2 # 填写的国家名的最小字符长度
  99. countryName_max = 2    # 填写的国家名的最大字符长度
  100. stateOrProvinceName= 省/州名(S)(全名) # 省份(S)
  101. stateOrProvinceName_default = “SH”
  102. localityName = 城市/地点名称(LT) # 城市(LT)
  103. localityName_default = “SH”
  104. organizationName = 公司/组织名称(ON) # 公司(ON)
  105. organizationName_default = “Foxcall”
  106. organizationalUnitName = 部门/单位名称(OU)   # 部门(OU)
  107. organizationalUnitName_default = “Foxcall”
  108. ## 以下的commonName(CN)一般必须给,如果作为CA,那么需要在ca的policy中定义CN = supplied
  109. ## CN定义的是将要申请SSL证书的域名或子域名或主机名。
  110. ## 例如要为com申请ssl证书则填写zhonghua.com,而不能填写www.zhonghua.com
  111. ## 要为zhonghua.com申请SSL则填写www.zhonghua.com
  112. ## CN必须和将要访问的网站地址一样,否则访问时就会给出警告
  113. ## 该项要填写正确,否则该请求被签名后证书中的CN与实际环境中的CN不对应,将无法提供证书服务
  114. commonName = 域名/主机名称(CN) # 主机名(CN)
  115. commonName_max = 64
  116. commonName_default = “Foxcall”
  117. emailAddress = 电子邮件地址(E) # Email地址,很多时候不需要该项
  118. emailAddress_max = 40
  119. emailAddress_default = “foxcall@foxcallcrm.com”
  120. [ req_attributes ] # 该段是为了某些特定软件的运行需要而设定的
  121. # 现在一般都不需要提供challengepassword
  122. # 所以该段几乎用不上
  123. # 所以不用管这段
  124. challengePassword = A challenge password
  125. challengePassword_min = 4
  126. challengePassword_max = 20
  127. unstructuredName = An optional company name
  128. [ v3_req ]
  129. ## Extensions to add to a certificate request
  130. basicConstraints = critical,CA:true
  131. keyUsage = critical,keyCertSign,cRLSign # nonRepudiation, digitalSignature, keyEncipherment
  132. subjectKeyIdentifier=hash
  133. [ v3_ca ]
  134. ## Extensions for a typical CA
  135. subjectKeyIdentifier=hash
  136. authorityKeyIdentifier=keyid:always,issuer
  137. basicConstraints = CA:true
  138. keyUsage = cRLSign, keyCertSign # 典型的CA证书的使用方法设置,由于测试使用所以注释了
  139. # 如果真的需要申请为CA, 么该设置可以如此配置

好了, 做个记录

使用OpenSsl自己CA根证书,二级根证书和颁发证书(亲测步骤)的更多相关文章

  1. Nginx配置SSL证书部署HTTPS网站(颁发证书)

一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 …

  1. 6使用openssl生成CA签署的证书个人实验笔记

准备:客户端centos6.10  服务端Centos7.6 实验:客户端生成证书请求,服务端颁发证书,最后吊销其中一个证书 1.先在服务端上的/etc/pki/CA/目录生成rsa的私钥: 2.在服 …

  1. 0以上版本,服务端生成证书,客户端获取、更新证书方式(整理中)

创建重发令牌 如果非主控主机已在主服务器上注册但其基于主机ID的证书不再有效,则可以重新颁发基于主机ID的证书.例如,证书在过期,被撤销或丢失时无效. 重发令牌是一种可用于重新颁发证书的令牌.它是一种 …

  1. nginx反向代理cas-server之2:生成证书,centOS下使用openssl生成CA证书(根证书、server证书、client证书)

前些天搭好了cas系统,这几天一致再搞nginx和cas的反向代理,一直不成功,但是走http还是测试通过的,最终确定是ssl认证证书这一块的问题,原本我在cas服务端里的tomcat已经配置了证书, …

  1. 基于 OpenSSL 的 CA 建立及证书签发 【转】

建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建立 CA ,需要在文件系统中建立相应的目录结构.相关的配置内容一般位于 /usr/ssl/openssl.cnf 内,详情可参见 c …

  1. 基于 OpenSSL 的 CA 建立及证书签发

http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/ 建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建 …

  1. 使用openssl模拟CA和CA证书的签发

使用openssl模拟CA和CA证书的签发     当使用ssl/tls进行加密通信时,必须要有数字证书.若通信只限制在局域网内,可以不向第三方机构申请签发证书,可以通过openssl模拟CA(Cer …

  1. 使用openssl搭建CA并颁发服务器证书

本来整理了一份执行脚本,但是没有找到附件功能.只好直接贴当时自己看过的链接了. 文章标题:Openssl Certificate Authority 转载链接:https://jamielinux.c …

  1. OpenSSL – 利用OpenSSL自签证书和CA颁发证书

秘钥操作 这个命令会生成一个1024/2048位的密钥,包含私钥和公钥. openssl genrsa -out private.key 1024/2038                     ( …

 

上一篇
下一篇