利用OpenSSL 自签CA证书制作链式SSL证书

这篇具有很好参考价值的文章主要介绍了利用OpenSSL 自签CA证书制作链式SSL证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文描述的是利用自签CA制作链式证书的步骤,主要是制作中间证书的关键步骤。

目前CA证书基本均为链式证书,其主要目的是利用中间证书的特性,既可以保护根证书的密钥安全性,又可以方便进行吊销操作。

0x00 制作根证书密钥(root.key):

openssl genrsa -aes256 -out root.key 4096

参数含义:

genrsa:  生成RSA密钥

4096: 指定密钥长度

命令执行后会要求输入密码,切记此密码为root.key专有。eg.若没有aes256选项则可以免密码。

0x01 制作根证书|自签CA(root.crt):

此步骤有两种方式 一种是按部就班的生成证书申请文件csr,利用csr继续生成crt格式证书;另一种方式直接生成crt,省去csr。

生成csr方式:

openssl req -new -key root.key -out root.csr

输入完成后需要输入0x00中的密码 和xxxx信息:

Enter pass phrase for root.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:LDW
Organizational Unit Name (eg, section) []:LDW STD
Common Name (eg, your name or your server's hostname) []:LDW self sign CA

重点:Common Name此项目输入的是本证书的标志,除此之外的C L O OU项目一定要记得自己输入的什么,另外C L O OU CN大小写敏感。

之后就会得到证书申请文件(root.csr)。之后利用csr获得根证书(root.crt):

openssl x509 -req -days 3650 -sha256 -extfile root.ext -extensions v3_ca -in root.csr -signkey root.key -out root.crt

参数含义:

days: 证书有效期

in: 上一步生成的csr文件 -signkey/-key 0x00生成的密钥 out:生成证书

关键参数:

0.1.1 -extfile root.ext 此参数指定了含有 0.1.2配置的配置文件位置

0.1.2 -extensions v3_ca 此参数指定了一个在extfile配置文件里的[v3-ca]配置:

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true

此参数可省略,如果要制作链式证书我劝你最好加上。

直接生成root.crt方式:

openssl req -new -x509 -days 3650 -sha256 -extensions v3_ca -key root.key -out root.crt -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW sign CA"

0x02 制作中间证书:

首先生成中间证书密钥(middle.key)

openssl genrsa -out middle.key 4096

关键步骤:

生成一个如下内容ext文件

[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

命名为ca_intermediate.ext 

之后生成中间证书请求文件(middle.csr)

openssl req -new -key middle.key -out middle.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW middle CA"

利用middle.csr和ca_intermediate.ext生成中间证书:

openssl x509 -req -extfile ca_intermediate.ext -extensions v3_intermediate_ca -days 1800 -sha256 -CA root.crt -CAkey root.key -CAcreateserial -CAserial serial -in middle.csr -out middle.crt

之后可以使用openssl verify命令验证:

openssl verify -CAfile root.crt middle.crt 

正确应该输出:

middle.crt: OK

此时证明我们的中间证书已经可以链到我们的根证书上了,之后需要验证middle.crt的一个关键配置项:

openssl x509 -noout -text -in middle.crt

在输出的文本中找到这一句:

X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0

没有的,请从生成中间证书开始重做,此项必须为TRUE

此时中间证书才是生成完毕。

0x03 利用中间证书生成服务端证书

先生成服务端证书密钥(server.key):

openssl genrsa -out server.key 2048

生成请求文件(server.csr):

openssl req -new -key server.key -out server.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=*.useye.cn"

为了适应现代浏览器SSL证书标准还需生成一个ext文件:

[ v3_server ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.useye.cn
DNS.2 = *.52sexy.net

命名为server.ext。其中DNS.X后面跟的域名为你自己想要生成的域名。

利用中间证书生成服务端证书(server.crt):

openssl x509 -req -extfile server.ext -extensions v3_server -days 365 -sha256 -CA middle.crt -CAkey middle.key -CAserial serial -in server.csr -out server.crt

之后我们需要做一个验证,首先需要生成一个根证书与中间证书的一个复合证书:

cat middle.crt root.crt > middle-chain.crt

之后用复合证书验证服务端证书:

openssl verify -CAfile middle-chain.crt server.crt

只有如下输出才是正确的:

server.crt: OK

此时我们的链式证书最终生成完成。

PS:

将root.crt导入windows可信根证书区域,middle.crt导入可信中间证书区域,即可验证server.crt有效性:

自签证书 证书链,ssl

Chrome浏览器访问

自签证书 证书链,ssl文章来源地址https://www.toymoban.com/news/detail-677808.html

到了这里,关于利用OpenSSL 自签CA证书制作链式SSL证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSL/TLS 介绍以及如何利用openssl生成证书

    SSL:Secure Socket Layer 安全套接字层。 TLS:Transport layer Security 传输层安全性,是一种加密协议。 到2020年,SSL以及TLS1.0,TLS1.1已被弃用 Authentication:通信双方可以确认双方的身份,不被黑客拦截信息伪造身份。 Confidentiality:通信的内容经过加密,更加安全,不被授权的用户无法识别

    2024年02月04日
    浏览(40)
  • 通过openssl实现自签国密双证书详细教程

    openssl 1.1.1+ 版本增加了对SM2 的支持,所以我们就能直接使用这些版本的opsnssl 生成 SM2的公私钥对 BggqgRzPVQGCLQ==是椭圆曲线的关键参数,对应secp256k1标识,用secp256k1生成私钥每次私钥是不同的,但EC PARAMETERS都是相同的。 生成的是非压缩格式的公钥。 输入国家、城市、公司名称

    2024年02月04日
    浏览(39)
  • CentOS7自签SSL证书并配置nginx

    一、生成SSL证书 1、安装依赖包       yum install -y openssl openssl-devel 2、生成私钥,会让你输入一个 4~2048 位的密码,你需要暂时记住这个密码       openssl genrsa -des3 -out server.key 2048 输入两遍相同的密码 3、生成CSR(Certificate Signing Request 证书签名请求 ) 输入以下命令:       op

    2024年02月12日
    浏览(37)
  • openssl SM2(ECC)自签服务端和客户端证书

    参考文章:https://www.golinuxcloud.com/openssl-generate-ecc-certificate/#5_Create_CA_certificate_with_ECC_Key (228条消息) openssl 制作SM2多级证书链_酷ying的博客-CSDN博客_openssl sm2 sm3 csr 1、在当前目录创建存储证书文件夹,配置openssl.cnf所需要的文件,将openssl.cnf文件放到当前目录(编译openssl源码包会

    2024年02月11日
    浏览(34)
  • 不重启Docker能添加自签SSL证书镜像仓库吗?

    在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker。 那么,不重启Docker能添加自签SSL证书镜像仓库吗? 可以 ,在文中会找到答案。 实现思路来自Docker官网(

    2024年02月12日
    浏览(24)
  • OpenSSL生成CA证书

    根证书:生成服务端证书,客户端证书的基础。自签名。 服务端证书:由根证书签发。配置在服务器上。 客户端证书:由根证书签发。配置在浏览器、移动APP等客户端上。 单向认证(Client鉴权Server) 1、Client发送连接请求 2、Server端将Server证书发送给Client 3、Client使用CA根证

    2024年02月06日
    浏览(33)
  • openssl创建CA证书教程

    总示意图: 第一步: 创建一个秘钥,这个便是CA证书的根本,之后所有的东西都来自这个秘钥 第二步: 是通过秘钥加密机构信息形成公钥 执行命令过程如下图所示: 参数名称 参数值 Country Name 国家代码,比如中国就是CN State or Province Name 省名称 Locality Name 城市名称 Organiz

    2024年02月07日
    浏览(35)
  • openssl 生成自签名证书以及CA证书链

    执行命令后,会提示你输入一些内容,请按照提示输入,每一项输入的内容需要自己记住 其中root.ext手动创建,内容如下: 中间证书的制作过程与根证书类似,这里直接将命令贴上。 这里涉及到一个ca_intermediate.ext,和root.ext类似,需要手动创建,内容如下 输出结果应该如下所

    2024年02月09日
    浏览(38)
  • SSL中的CA证书

    目录 一、CA概述 二、数据加密 三、身份认证         SSL如何保证网络通信的安全和数据的完整性呢?就是采用了两种手段: 身份认证 和 数据加密 。身份认证就需要用到CA证书。         CA是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。

    2024年04月12日
    浏览(29)
  • SSH、OpenSSH、SSL、OpenSSL及CA

    SSH (Secure Shell) 的缩写,意为“安全外壳协议”,是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议 OpenSSH是 SSH协议 的免费开源实现 SSL(Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密 OpenSSL是 SSL协议的免费

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包