nginx如何配置https证书
第一步、客户端发送请求,服务器将证书发送给客户端,证书的本质是第三方CA的私钥加密的内容,其内容是服务器的公钥。
第二步、客户端接收到证书后,用操作系统和浏览器内置的CA公钥去匹配验证证书,如果能解密,说明请求的是目标网站,不是中间人。
第三步、用CA公钥解密证书,并将服务器公钥解密出来。到这一步,客户端安全的拿到了服务器端的公钥。
第四步、生成随机数,用服务器公钥加密随机数发送到服务器端。
第五步、服务器端用服务器私钥解密信息,得到随机数
我们仔细阅读上面的流程,我们将客户端和服务器端用到的工具分一下类:
客户端用到的如下:
1、CA机构的公钥:已经内置到系统中不需要处理
2、公钥证书:服务器端发送给客户端的,客户端会自动用CA公钥解密证书
3、服务器公钥:客户端用CA公钥解密证书获得
4、随机数生成对称秘钥:自动生成
服务器端:
1、公钥证书 需要去申请
2、服务器端私钥 需要服务端手动生成
客户端需要的工具不需要我们配置,主要是服务器端的工具,我们看到服务器端需要公钥证书和服务器端私钥,这两个东西如何来的呢?
首先我们在服务器端用ssh-keygen命令来生成公私钥,在服务器端命令行中执行,ssh-keygen会在服务器的"~/.ssh"目录中生成两个文件 id_rsa,id_rsa.pub,前者不带pub后缀的为私钥,后者带pub后缀的为公钥。
得到了服务器端的公钥和私钥后,我们需要用服务器端的公钥去申请证书,这里大家如果是去向一些收费的CA机构申请证书的话,CA机构的客服一般会想你要你的服务器公钥和你的网站信息,然后CA机构用CA机构的私钥加密你的服务器公钥得到公钥证书,然后CA机构会将公钥证书颁发给你。
经过上面两部操作我们就会得到公钥证书和服务的私钥,拿到这两个文件我们可以使用配置https协议的网站了。
这里要说明一下,我们向有些CA机构申请证书时,它不需要你提交服务器公钥,而是它会自己生成一对服务器的公私钥,然后把服务器公钥用CA私钥加密成证书,和服务器私钥一起发送给你,阿里云的免费证书就是这样操作的。