Centos7下openssl生成客户端和服务端证书与CA

2018-02-01  本文已影响747人  009419b5a3fd

最近在项目中用到了双向验证在没有好的测试证书的情况下,只能自给自足通过openssl分别生成私有签名的客户端和服务端证书用作测试。

流程:

1.安装openssl

openssl官网https://www.openssl.org/source/

下载你项目需要的版本,这里以 openssl-1.0.2n.tar.gz为例。

下载后找任意目录解压:tar -zxvf   openssl-1.0.2n.tar.gz

然后进入解压后文件夹 cd openssl-1.0.2n

顺序执行:./config shared zlib

make&&make install

mv/usr/bin/openssl/usr/bin/openssl.bak mv/usr/include/openssl/usr/include/openssl.bak

ln-s /usr/local/ssl/bin/openssl/usr/bin/openssl

ln-s /usr/local/ssl/include/openssl/usr/include/openssl

echo“/usr/local/ssl/lib” >> /etc/ld.so.conf

(嫌麻烦的可以直接:yum install openssl)

安装好后进入ssl目录

cd /usr/local/ssl

把ssl目录下的openssl.cnf 拷贝到你需要生成证书的目录下,以bin目录为例

2.生成服务器端私钥(.key)

openssl genrsa -des3 -out server.key 1024

此时需要输入key的密码。这个时候因为在测试过程中如果有密码的话会每次都需要输入,所以我们会使用:openssl rsa -in server.key -out server_nopass.key转换一个没密码的key

3.生成服务器端csr文件

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

生成的csr文件交给CA签名后会形成服务端自己的证书。

执行时会填写证书相关内容如下:

Country Name (2 letter code) [GB]:【在此输入两个字符的国家名。中国的为CN 】

State or Province Name (full name) [Berkshire]:【省份名称,如北京为beijing 】

Locality Name (eg, city) [Newbury]:【城市名称,如beijing】

Organization Name (eg, company) [My Company Ltd]:【公司名称】

Organizational Unit Name (eg, section) []:【部门名称】

Common Name (eg, your name or your server’s hostname) []:【姓名,通常即证书名】

Email Address []:【电子邮箱地址】

后面会让填写2个密码直接回车跳过。

4.使用相同方法生成客户端key和csr

openssl genrsa -des3 -out client.key 1024

openssl rsa -in client.key -out client_nopass.key

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

5.自己做CA对证书进行签名

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

自己手动创建一个CA目录结构:

       mkdir ./demoCA

  mkdir demoCA/newcerts

  创建个空文件index.txt:      vi demoCA/index.txt

     创建serial后向文件中写入01:  vi demoCA/serial 

进入demoCA输入pwd查看当前目录路径,然后修改 openssl.cnf文件中“dir=”后面对应的路径。

6.用生成的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

证书生成完毕。

注:生成签名证书时候可能出现错误wrong number of fields on line 1 (looking for field 6, got 1, '' left)

原因是你的index.txt文件不为空,改为空文件即可,index.txt内不要有字符。

参考:1.http://blog.chinaunix.net/uid-20539097-id-64403.html

           2.http://blog.chinaunix.net/uid-1838361-id-66391.html

上一篇 下一篇

猜你喜欢

热点阅读