自签发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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值