SSL证书签发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSL证书签发相关的知识,希望对你有一定的参考价值。

参考技术A

HTTPS = HTTP + TLS/SSL

SSL:Secure Sockers Layer,安全套接层
TLS:标准化之后的SSL

提供隐私和数据两个通信实体之前的完整性
由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)

SSL的核心在于提供安全可信的通讯
实际应用中,通常有单向认证和双向认证两种实现方式

1 客户端:发送客户端SSL版本信息等
2 服务端:返回SSL版本信息等及服务器公钥
3 客户端:校验证书是否合法
验证证书是否过期、CA是否可靠等
4 客户端:发送对称加密方案给服务端
5 服务端:选择加密方式
6 服务端:将加密方案 明文 发送给客户端
7 客户端:产生随机码,生成对称加密密钥,使用服务端公钥加密,发送服务端
8 服务端:使用私钥解密,获得对称加密密钥
9 握手结束,对称加密,安全通信

1 客户端:发送客户端SSL版本信息等
2 服务端:返回SSL版本信息等及服务器公钥
3 客户端:校验证书是否合法
4 客户端: 将自己的证书和公钥发送至服务端
5 服务端: 校验客户端证书,获得客户端公钥
6 客户端:发送对接加密方案给服务端
7 服务端:选择加密方式
8 服务端:将加密方案 使用客户端公钥加密后 发送给客户端
9 客户端:使用私钥解密,获得加密方式,产生随机码,生成对称加密密钥,使用服务端公钥加密后,发送给服务端
10 服务端:使用私钥解密,获得对称加密密钥
11 握手结束,对称加密,安全通信

SSL核心的概念:ca、私钥、公钥、证书

私钥默认格式为pkcs1,一个简化的私钥生成命令:
openssl genrsa -out private.pem 3072
java对私钥格式有 要求 ,需要转换为pkcs8格式,转换命令:
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt -out private-pkcs8.pem

认证中心,第三方认证提供方,为证书提供可靠性认证
开发过程中一般使用自签发证书进行测试,再使用正式签发的证书
CA在使用时,主要是使用ca证书,ca证书由ca key签发而来

要素: CA私钥、CA CSR、签发证书

中间根据提示输入 Country Name 、 State or Province Name 等等

组成:CA根证书、签发客户端证书

使用 OpenSSL 创建客户端证书时,请注意
创建私钥时,请将长度指定为 4096
创建证书时,对于 -extensions 参数,指定 usr_cert

生成私钥
openssl genrsa -out product.key 3072
生成证书签发请求
openssl req -new -key product.key -out product.csr
将证书签发请求发送至CA,签发证书,这一步一般无法感知,大概的意思就是执行下面的签发命令
openssl ca -in product.csr -out product.crt -days 365
上面这一条还是隐藏了很多细节,再看下面的
签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in product.csr -out product.crt
这个 product.crt 就是正式可以使用的证书了

TLS单向认证和双向认证的区别

以上是关于SSL证书签发的主要内容,如果未能解决你的问题,请参考以下文章

自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

如何添加自签名SSL证书 自签名SSL证书存风险

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

MAC申请自签名的ssl证书

使用自签SSL证书会有啥后果

添加自签发的 SSL 证书为受信任的根证书