openssl生成证书 - CSDN博客

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

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

  • 证书的发布机构
  • 证书的有效期
  • 公钥
  • 证书所有者(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

猜你喜欢

转载自www.cnblogs.com/wzjwffg/p/9882876.html
今日推荐