我是靠谱客的博主 霸气项链,最近开发中收集的这篇文章主要介绍自签发SSL证书,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一 SSL证书

  • 当网站需要启用HTTPS的时候,你就需要SSL证书了。

  • 一个证书中包含了公钥、持有者信息、证明证书内容有效的签名以及证书有效期,和其他额外信息。

  • 证书分为根证书(root Certificates),中间证书(intermediates Certificates),终端用户证书(end-user Certificates)。
    根证书 -> 中间证书 -> 终端用户证书, 它们是一个证书链的关系

  • 中间证书就是CA机构的证书,它可能又分一级CA、二级CA。。。
    其中根证书和中间证书都可以签发终端用户证书。

  • 我们实际部署的都是终端用户证书,它又分为两种。
    (1)服务器证书
    一般我们所说的证书都是服务器证书,从名字我们就可以知道,它是用来认证服务器的。
    当浏览器(客户端)通过HTTPS访问一个网站(服务器)的时候,有一个SSL握手环节(具体原理可自行搜索),这个环节服务器会将它的证书推送给客户端,客户端就去认证这个证书是否可信。
    认证过程:浏览器使用权威的CA机构的证书(这些证书操作系统都已预置),去和服务器推送过来的证书A做比对,如果比对成功,说明证书A是由权威CA机构签发的,那么此证书是受信任的。
    (具体可查看PKI(Public key certificate)规范体系)
    这种认证叫做单向认证。
    (2)客户端证书
    另外一种认证是比较少见的双向认证,原理与前面类型,只是服务器也需要去认证客户端,所以就有了客户端
    证书。
    SSL握手期间客户端先把它的证书推送给服务器,认证通过后,服务器再把它的证书推送给客户端。

二 使用openssl生成根证书以及签发服务器证书

这里使用的自签发的根证书,因为它不在客户端受信任证书列表中,因此它签发的其他证书都不受信任。


(1)创建根证书私钥root.key

openssl genrsa -out root.key 2048

(2)利用私钥,创建证书请求文件(CSR)

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

命令输完后,需要输入一些信息,需要在YOUR name 处一定要填写项目布置服务器所属域名或ip地址


(3)利用私钥和CSR,自签根证书root.pem

openssl x509 -req -in root.csr -signkey root.key -days 3650 -out root.pem

openssl生成的证书都是PEM格式的(就是-----BEGIN CERTIFICATE-----前缀的ASCII(Base64)数据)。
openssl x509 -in root.pem -text –noout查看PEM格式证书


(4)签发服务器证书
首先,按照第1、2步,生成服务器私钥server.key和CSR文件server.csr
然后利用 server.csr、root.pem、server.key,签发服务器证书server.pem

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl ca -in server.csr -cert root.pem -keyfile server.key -out server.pem

(5)导出p12格式证书
导出p12类型格式证书时候必须要密码

openssl pkcs12 -inkey root.key -cacerts -in root.pem -export -nokeys -out root.p12

最后

以上就是霸气项链为你收集整理的自签发SSL证书的全部内容,希望文章能够帮你解决自签发SSL证书所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部