zoukankan      html  css  js  c++  java
  • openssl生成证书

    大家都可以生成公钥、私钥对,无法确认公钥对到底是谁的。 如果能够确定公钥到底是谁的,就不会有这个问题了。例如,如果收到“黑客”冒充“服务器”发过来的公钥,经过某种检查,如果能够发现这个公钥不是“服务器”的就好了。

    为了解决这个问题,数字证书出现了,它可以解决我们上面的问题。先大概看下什么是数字证书,一个证书包含下面的具体内容:

    • 证书的发布机构
    • 证书的有效期
    • 公钥
    • 证书所有者(Subject)
    • 签名所使用的算法
    • 指纹以及指纹算法

    证书的内容的详细解释会在后面详细解释,这里先只需要搞清楚一点,数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。

    1.安装openssl 之后在/usr/lib/ssl目录下(ubuntu系统,用whereis查下ssl目录即可)下找到openssl.cnf,拷贝到工作目录下。

    2.工作目录下新建demoCA文件夹,文件夹中新建文件index.txt和serial,再创建一个newcerts的文件夹。在serial里面添加字符01。

    mkdir demoCA

    cd demoCA

    touch ./{serial, index.txt}

    vi serial 添加01 :wq

    生成证书过程:(注意以下过程都在工作目录下进行,即/home/qing/ca,截图为当时自己试验时出现差错,最后还要把生成的文件移到工作目录下)

    1.生成服务器端私钥(key文件)

    openssl genrsa -des3 -out server.key 1024

    此时输入的密码用于每次读取私钥文件的口令,可以去除但是不推荐(openssl rsa -in server.key -out server.key)

    2.生成CSR文件(Certificate Signing Request),csr文件经过ca签名才能够生成证书

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

    3.对客户端进行相同操作生成key以及csr文件

    openssl genrsa -des3 -out client.key 1024

    openssl req -new -key client.key -out client.csr -config openssl.cnf

    4.自己做CA

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

    5.用自己生成的ca证书为server.csr和client.csr 签名

    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

    openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

  • 相关阅读:
    开源协议
    开发新技能
    UML 思维导图 思维脑图 xmind
    小方法
    Android Service
    JS 下载图片
    quartz任务执行完之后再执行下一轮任务
    easyui 下边有滚动条问题
    微信支付证书 系统找不到指定的文件
    Swiper 动态加载数据没有变化问题
  • 原文地址:https://www.cnblogs.com/wzjwffg/p/9882876.html
Copyright © 2011-2022 走看看