openssl——自签名根证书、签名客户端和服务器证书

openssl——自签名根证书、签名客户端和服务器证书,第1张

openssl genrsa -out root.key 2048

也可以是pem文件,也可为了区分这是私钥而改用key后缀名,内容如下:

查看详细解析:包含两个大素数和两个指数和一个系数

openssl rsa -in root.key -text

可通过命令提取公钥:

openssl rsa -pubout -in root.key

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

-keyform PEM:证书有pem和der格式之分,前者文本,多用于java和windows服务器,后者二进制

CSR是Certificate Signing Request的英文缩写,即证书请求文件

openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root.key -CAcreateserial -days 365

-CAcreateserial ,创建证书序列号,使用此选项,当CA序列号文件不存在时将被创建:它将包含序列号“02”,正在签名的证书将具有1作为其序列号。通常如果指定了-CA选项并且序列号文件不存在,则会出现错误。

-days 据说3650天有时候会意外导致证书验证失败,没遇到过

此处可有pem、crt、cer多种输出格式,其实内容都一样,来试一下:

每次生成的证书都不一样,但是未发现不同后缀名下的证书格式不同。

我的理解:

pem是最基本的编码格式,der也相同。

CRT文件是由第三方证书颁发机构(例如VeriSign或DigiCert)提供和生成的安全文件,ASCII编码格式。

cer是crt的微软形式。

为了统一,全使用cer格式。

可选择将证书和私钥导入密钥库,通常用p12和jks( Java Key Store)格式:

openssl pkcs12 -export -in root-cert.cer -inkey root.key -out root.p12 -name "lab"

需要加密保护, -name 设置别名

然后可选择使用keytool将p12转为jks格式,此处就不做转换了。

步骤基本相同

步骤基本相同

openssl genrsa -out server-key.key 2048

openssl req -new -out server-req.csr -key server-key.key -keyform PEM

openssl x509 -req -in server-req.csr -out server-cert.cer -CA F:\CERT\mycert\ test\openssl\win\root\root-cert.cer -CAkey F:\CERT\mycert\test\openssl\win\root\root.key -CAcreateserial -days 360

openssl pkcs12 -export -in server-cert.cer -inkey server-key.key -out server. p12 -name "lab-server"

运行环境要包含完整证书链。需要将证书链放到系统可信目录下。

为证书绑定ip,只能通过config文件,

文件如下【可将常用参数写入,生成请求文件时直接enter即可】:

使用配置文件时在生成请求文件和签发证书时的参数不同:

生成请求文件:

openssl req -new -out server-req1.csr -key server-key.key -keyform PEM -extensions v3_req -config openssl. cnf

签发证书:

openssl x509 -req -in server-req1.csr -out server-cert1.cer -CA F:\CERT\mycert\test\openssl\win\root\root- cert.cer -CAkey F:\CERT\mycert\test\openssl\win\root\root.key -CAcreateserial -days 360 -extensions v3_req -extfile openssl.cnf

默认证书链长度为2,使用中间ca签发时,中间ca的生成需要在配置文件中加修改长度参数:

[ v3_ca ]

basicConstraints = CA:true,pathlen:3

Note:

参考:

OpenSSL主配置文件openssl.cnf

利用OpenSSL创建证书链并应用于IIS7

openssl系列文章: http://www.cnblogs.com/f-ck-need-u/p/7048359.html

数字签名是一种用于信息 真实性 完整性 校验的手段,一套数字签名包含签名和验证两种运算。下面是一套简单的数字签名示意图。

数字签名使用 非对称加密 技术。每个人都有一对钥匙,私钥只有本人知道,公钥公开,私钥签名,公钥验签。

在进行信息传递时,信息发送者用私钥生成签名并将公钥一起发送给信息接收者,接收者使用公钥验签。上述过程中信息完整性得到校验,但发送者的身份是否合法无法得知(因为任何人都可以声称自己是合法的),因此引入了 身份认证机构

身份认证机构是 信息接收者 能信任的机构,所有的公钥必须向该机构进行注册。注册后身份认证机构给发送者颁发一 数字证书 。对文件签名后,发送者把此数字证书连同文件及签名一起发给信息接收者,接收者向身份认证机构求证是否真地是用发送者密钥签发的文件。

数字证书是一种电子档案,用来证明公钥拥有者的身份。此档案包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对该文件的数字签名。

证书的本质就是对公钥加数字签名,认证机构用自己的私钥对需要认证的人(或组织机构)的公钥进行数字签名并生成证书。

我们需要了解以下几种类型的证书

自签证书

用户可以自己生成数字证书,不过没有任何可信赖的人签名,它主要用于小范围测试,这种自签名证书通常不会被广泛信任,使用时可能会遇到电脑软件的安全警告。

根证书

根证书获得广泛认可,通常已预先安装在各种软体(包括操作系统、浏览器、电邮软件等),作为信任链的起点,来自于公认可靠的政府机关、证书颁发机构公司、非营利组织等,与各大软件商透过严谨的核认程序才在不同的软件广泛部署。由于部署程序复杂费时,需要行政人员的授权及机构法人身份的核认,一张根证书有效期可能长达二十年以上。在某些企业,也可能会在内部电脑自行安装企业自签的根证书,以支援内部网的企业级软件;但是这些证书可能未被广泛认可,只在企业内部适用。

中介证书

认证机构的一个重要任务就是为客户签发证书,虽然广泛认可的认证机构都已拥有根证书,相对应的私钥可用以签署其他证书,但因为密钥管理和行政考虑,一般会先行签发中介证书,才为客户作数位签署。中介证书的有效期会较根证书为短,并可能对不同类别的客户有不同的中介证书作分工。

TLS服务器证书

网站在互联网上提供服务时,域名就是服务器证书上主体,相关机构名称则写在组织或单位一栏上。证书和私钥会安装在服务器。客户端的软件(如浏览器)会执行认证路径验证算(Certification path validation algorithm)以确保安全,如果未能肯定加密通道是否安全(例如证书上的主体名称不对应网站域名、伺服器使用了自签证书、或加密算法不够强),可能会警告用户。

TLS客户端证书

客户端证书包含电子邮件地址或个人姓名,而不是主机名。客户端证书比较不常见,因为考虑到技术门槛及成本因素,通常都是由服务提供者验证客户身份,而不是依赖第三方认证机构。通常,需要使用到客户端证书的服务都是内部网的企业级软件,他们会设立自己的内部根证书,由企业的技术人员在企业内部的电脑安装相关客户端证书以便使用。在公开的互联网,大多数网站都是使用登入密码和Cookie来验证用户,而不是客户端证书。

根证书(自签证书)、中介证书和终端实体(TLS服务器/客户端)证书的形成如下信任链

证书一般遵从X.509格式规范

证书可以二进制或 Base64 形式储存,常见的文件扩展名有.cer、.crt、.der和.pem。如果把证书和私钥一起储存,则可以使用PKCS#12(.p12)格式。

我们在写对外 API 时,针对信息传递的安全考虑,做如下设计

我们使用 SHA256withRSA 进行签名,下面是一个Java简单例子

你的概念理解得有点错误。

根证书是指根CA证书,是信任的源头。根证书是自签发证书,就是自己签发自己,要不为何叫做根?

CA证书包括根CA证书、二级CA证书、三级。。。

CA证书不参与通信,只有服务器证书和用户证书等参与通信过程的建立。

不是证书之间建立通信,而是通过通信协议在通信的建立过程中使用到了证书,如SSL协议,具体如何建立通信过程,请参见SSL的握手协议。

服务器证书和用户证书,即使不是一个CA签发的,也可以使用证书达到互相通信的目的。只需要进行配置做到相互信任对方的CA证书即可。

你还需要进一步理清概念。。。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/458120.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-03
下一篇2023-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存