如何使用openssl创建https证书

  介绍

这篇文章主要介绍”如何使用openssl创建https证书”,在日常操作中,相信很多人在如何使用openssl创建https证书问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“如何使用openssl创建https证书”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

从今天开始笔者打算和大家聊一聊http2这个协议,想要说清楚http2协议就必须亲手搭建一个http2的服务,并且对比http2和http1.1的特点,从而了解http2的一些新特性。

http2服务是建立在TSL/SSL基础之上的,类似于https,所以咱们先要搞清楚如何搭建一个https服务器,搭建https服务器的话就需要https证书,证书从哪里来呢?可以去阿里云买个域名,获得免费赠送的证书,也可以去https厂商那里申请收费证书,也可以用openssl这个工具自己生成证书。

写完上面这段感觉程序员好难,要搞懂一个东西通常要追根溯源,刨根问底,越刨坑越深,然后就掉坑里了,然后再自我救赎。

说了这么多,这里还有一个前置知识就是https的原理,如果你不是很清楚或者不明白,请查看这两篇文章白话https原理和nginx如何配置https证书。

如果你已经看了前面两篇文章,或者大致了解https,那么我们正式开始今天的主题,如何用openssl这个玩意生成证书呢?

先上一张图,这张图就是用openssl生成证书的整个流程了,如何看这个图呢?

这个图有A, B, C三个部分,分别用三种颜色框选了一下(给小编加鸡腿? ? ? ?),部分是CA机构根证书的生成过程,这个过程需要先生成CA机构的私钥,再由CA机构的私钥生成CA机构证书申请文件,然后再由这两个文件生成根证书。

B部分是生成服务器私钥,然后由服务器私钥生成服务器证书申请文件。

C部分是最后一部分,也就是生成服务器的公钥证书,服务器的公钥证书需要三部分一起来生成,一个部分的CA机构的私钥,CA机构的申请证书文件,B部分的服务器证书申请文件,这三部分一起来生成服务器的公钥证书。

如何使用openssl创建https证书

根据图示,分为如下几个步骤:

1,生成服务器私钥。

<节>
 openssl  genrsa  -out  server.key  1024 
  

2,根据服务器私钥文件生成证书请求文件,这个文件中会包含申请人的一些信息,所以执行下面这行命令过程中需要用户在命令行输入一些用户信息,随便填写,一路回车即可。

<节>
 openssl  req  -new  -key  server.key  -out  server.csr 
  

如何使用openssl创建https证书

3,生成CA机构的私钥,命令和生成服务器私钥一样,只不过这是CA的私钥

<节>
 openssl  genrsa  -out  ca.key  1024 
  

4,生成CA机构自己的证书申请文件

<节>
 openssl  req  -new  -key  ca.key  -out  ca.csr 
  

5,生成自签名证书,CA机构用自己的私钥和证书申请文件生成自己签名的证书,俗称自签名证书,这里可以理解为根证书。

<节>
 openssl  x509  -req 拷贝;ca.csr  -signkey  ca.key  -out  ca.crt 
  

6,根据<强> CA机构的自签名证书 <强> ca.crt或者叫根证书生,<强> CA机构的私钥ca.key ,<强>服务器的证书申请文件server.csr 生成服务端证书。

<节>
 openssl  x509  -req  -CA  ca.crt  -CAkey  ca.key  -CAcreateserial 拷贝;server.csr  -out  server.crt 
  

上面的过程其实是模拟了各大https证书厂商生成https证书的过程,其中涉及到了根证书等等一些概念,如果你不是太明白也没有关系,我们还有B方案,我只想要证书,不想搞得太深,那么请使用如下方法,简便快捷。

只需要三步:

第一步,生成服务器私钥:

<节>
 openssl  genrsa  -out  server.key  1024 
  

第二步,根据私钥和输入的信息生成证书请求文件:

<节>
 openssl  req  -new  -key  server.key  -out  server.csr 
  

第三步:用第一步的私钥和第二步的请求文件生成证书:

<节>
 openssl  x509  -req 拷贝;server.csr  -out  server.crt  -signkey  server.key  -days  3650 

如何使用openssl创建https证书