zoukankan      html  css  js  c++  java
  • https nginx openssl 自签名

    公私钥:公钥可以唯一解密私钥加密过的数据,反之亦然。以下用P指代公钥,V指代私钥。
    SSL过程:需要两对公私钥(P1,V1),(P2,V2),假设通信双方是A和B,B是服务器,A要确认和它通信的是B:
    A->B: hello
    B->A: 用V2加密过的P1(即用户证书,A就用P2解密出P1)
    A->B: ok
    B->A: 用V1加密的一段信息
    A->B: 用P1加密一个自动生成的K(用之前的P1解密成功这段信息则认为B是可信的了)
    B->A: 用K加密的数据(之后两对密钥功能结束,由K来加解密数据)
    这里,P2就是第3方的CA证书,由于非对称加密很慢,所以公私钥只是用来保证K的传送安全,之后通信是用K的对称加密算法来保证。

    为什么通过以上过程A就能够确定肯定是B,而不是某个C在假装B了呢?因为这个过程中,B用V1加密过一段信息发给A,A也成功解开了。我们开头谈到公钥(P1)只可以唯一解密私钥(V1)加密过的信息,这样A就可以完全相信B是拥有V1的,而V1是严格保密,只被服务提供公司拥有,所以保证了通信的服务方正确性。

    这里(P2,V2)就是certificate authority (CA)用来给客户签名用的公私钥。
    (P1,V1)是客户自己的公私钥,提交给CA,CA所做的事情就是用(P2,V2)来给客户的(P1,V1)签名,简单吧?
    V2是CA公司要保密的,而P2就是公用CA证书。用V2加密过(签名过)的P1,称为用户证书,一般被安装在服务器端。

    openssl生成自签名证书

     

    方法一:

    生成私钥

    openssl genrsa -out server.key 1024

    用私钥生成自签名的cer证书格式文件
    openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj "/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=domain1/CN=domain2/CN=domain3"

    方法二:

    生成私钥

    openssl genrsa -out server.key 1024

    根据私钥生成证书申请

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

    用私钥对证书申请进行签名生成证书

    openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

     方法三:

    openssl req -new -x509 -keyout server.key -out server.crt -config openssl.cnf

    以上生成得到的server.crt证书,格式都是pem的。

     
     
  • 相关阅读:
    行内元素知识点
    WPF可视化控件打印
    C#模拟网站用户登录
    不同版本的浏览器代理编码
    WPF弹出对话确认框
    MSDN中HttpWebRequest/HttpWebResponse用法
    C#Http编程
    WPF ICommand 用法
    详述.NET里class和struct的异同
    WPF页面切换及弹窗
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/5434875.html
Copyright © 2011-2022 走看看