linux下使用openssl生成 csr crt CA证书

本文主要借鉴和引用了下面2个地址的内容,然后在自己的机器上进行了测试和执行,并做了如下记录。

ref:

http://blog.chinaunix.net/uid-26760055-id-3128132.html

http://www.111cn.net/sys/linux/61591.htm

创建测试目录

mkdir /tmp/create_key/ca

cd /tmp/create_key/

证书文件生成:

一.服务器端

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

openssl genrsa -des3 -out server.key 1024

运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果不要口令,则去除口令:openssl rsa -in server.key -out
server.key

2.生成服务器端    证书签名请求文件(csr文件);

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

生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其 提示一步一步输入要求的个人信息即可(如:Country,province,city,company等).

二.客户端

1.生成客户端     私钥(key文件);

openssl genrsa -des3 -out client.key 1024

2.生成客户端
   证书签名请求文件(csr文件);

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

cd  /tmp/create_key/ca

三.生成CA证书文件

#server.csr与client.csr文件必须有CA的签名才可形成证书.

1.首先生成CA的key文件:

openssl genrsa -des3 -out ca.key 1024

2.生成CA自签名证书:

openssl req -new -x509 -key ca.key -out ca.crt

可以加证书过期时间选项 "-days 365".

四.利用CA证书进行签名

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

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

这两条执行的时候因为没有指定openssl.cnf
会报错,不过没关系,我们用默认的 /etc/pki/tls/openssl.cnf 就可以。

不过用默认的时候需要先执行下面两行:

touch
/etc/pki/CA/index.txt

echo
00 > /etc/pki/CA/serial

下面有错误案例分析

#############################################################

根据server.csr 通过CA的ca.crt
  ca.key  生成server.crt文件

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

Using configuration from /etc/pki/tls/openssl.cnf

Enter pass phrase for ca.key:

/etc/pki/CA/index.txt: No such file or directory

unable to open ‘/etc/pki/CA/index.txt‘

140423531685704:error:02001002:system library:fopen:No such file or directory:bss_file.c:355:fopen(‘/etc/pki/CA/index.txt‘,‘r‘)

140423531685704:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:357:

[[email protected] ca]# touch /etc/pki/CA/index.txt             #创建index文件,因为不存在

[[email protected] ca]# openssl ca -in ../server.csr -out ../server.crt -cert ca.crt -keyfile ca.key

Using configuration from /etc/pki/tls/openssl.cnf

Enter pass phrase for ca.key:

/etc/pki/CA/serial: No such file or directory

error while loading serial number

139949960836936:error:02001002:system library:fopen:No such file or directory:bss_file.c:355:fopen(‘/etc/pki/CA/serial‘,‘r‘)

139949960836936:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:357:

[[email protected] ca]# echo 00 > /etc/pki/CA/serial                 #创建serial号文件

[[email protected] ca]# openssl ca -in ../server.csr -out ../server.crt -cert ca.crt -keyfile ca.key

Using configuration from /etc/pki/tls/openssl.cnf

Enter pass phrase for ca.key:

Check that the request matches the signature

Signature ok

The organizationName field needed to be the same in the

CA certificate (homelink-ca) and the request (homelink)

#此处报错是因为创建CA的ca.crt 时候 和创建server的server.csr时候

#Organization Name (eg, company) [Default Company Ltd]:homelink-ca  和

#Organization Name (eg, company) [Default Company Ltd]:homelink

#配置的不再一个域,所以不行,下面重建ca.crt

[[email protected] ca]# openssl req -new -x509 -key ca.key -out ca.crt

Enter pass phrase for ca.key:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.‘, the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:bj

Locality Name (eg, city) [Default City]:bj

Organization Name (eg, company) [Default Company Ltd]:homelink

Organizational Unit Name (eg, section) []:homelink-lft

Common Name (eg, your name or your server‘s hostname) []:lft

Email Address []:

[[email protected] ca]# ls -lrt

total 8

-rw-r--r-- 1 root root 963 May 22 14:39 ca.key

-rw-r--r-- 1 root root 944 May 22 16:16 ca.crt

#重新创建ca.crt后,重新执行,生成成功

[[email protected] ca]# openssl ca -in ../server.csr -out ../server.crt -cert ca.crt -keyfile ca.key

Using configuration from /etc/pki/tls/openssl.cnf

Enter pass phrase for ca.key:

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 0 (0x0)

Validity

Not Before: May 22 08:16:25 2015 GMT

Not After : May 21 08:16:25 2016 GMT

Subject:

countryName = CN

stateOrProvinceName = bj

organizationName = homelink

organizationalUnitName = homelink-lft

commonName = lft

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

00:2C:34:0A:73:5C:1A:E6:39:48:28:6F:8F:02:F6:BC:58:6F:25:55

X509v3 Authority Key Identifier:

keyid:83:70:9D:4E:3F:39:01:3E:7A:CE:B9:2B:0E:1A:FB:00:2A:C3:11:D9

Certificate is to be certified until May 21 08:16:25 2016 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

[[email protected] ca]# ls -lrt

total 8

-rw-r--r-- 1 root root 963 May 22 14:39 ca.key

-rw-r--r-- 1 root root 944 May 22 16:16 ca.crt

[[email protected] ca]# ls -lrt ..

total 28

-rw-r--r-- 1 root root 963 May 22 13:51 server.key

-rw-r--r-- 1 root root 672 May 22 13:52 server.csr

-rw-r--r-- 1 root root 963 May 22 14:36 client.key

-rw-r--r-- 1 root root 672 May 22 14:37 client.csr

drwxr-xr-x 2 root root 4096 May 22 14:40 ca

-rw-r--r-- 1 root root 238 May 22 15:07 readme.txt

-rw-r--r-- 1 root root 3036 May 22 16:16 server.crt

#然后生成客户端的client.crt 文件

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

时间: 2024-10-10 05:12:29

linux下使用openssl生成 csr crt CA证书的相关文章

【转】linux下使用openssl生成 csr crt CA证书

创建测试目录 mkdir /tmp/create_key/ca cd /tmp/create_key/ 证书文件生成: 一. 服务器端 1. 生成服务器端 私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令,如果不要口令,则去除口令: mv server.key serv

Linux下使用openssl生成证书

利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 证书文件的生成步骤: 一.服务器端1.生成服务器端的私钥(key文件); openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都

linux下ftp服务各种模式和ca证书认证的搭建

Red hat 下vsftpd的搭建                            作者  浩浩哥来了 首先/etc/init.d/vsftpd   restart 查看在当前版本是不是存在vsftpd服务 如果路径无法补全,这需要手动安装. Yum install vsftpd* -y /etc/init.d/vsftpd  restart 将服务启动起来 Ifconfig 查看当前主机的ip地址 在windows中输入ftp://red hat 中的ip地址 匿名用户登录 Cd /v

linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改

原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开源的实现加解密和证书的专业系统.在centos下可以利用yum安装. 2.openssl的配置文件是openssl.cnf,我们一般就是用默认配置就可以.如果证书有特殊要求的话,可以修改配置适应需求.这样必须把相关的文件放到配置文件指定的目录下面. 3.首先需要利用openssl生成根证书,以后的服

windows下使用openssl生成证书

一:下载 使用的是0.9.8 1:openssl下载,http://www.openssl.org/source/ 2:安装vs2010,并安装 3:下载perl,http://www.activestate.com/ActivePerl,并安装. 二:安装openssl 1:解压到系统盘C:\openssl-0.9.8v 2.配置WIN32环境 打开CMD命令行,进入C:\openssl-0.9.8v目录,执行命令 perl Configure VC-WIN32 注意区分大小写 3.进入VC

Linux下动态库生成和使用

Linux下动态库生成和使用 一.动态库的基本概念 1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的.库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成. 2.动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name).别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成.真名是

Linux下PHP自动生成文章预览图,html转换成各种格式图片、PDF-----转自phpboy的文章

原文地址:http://www.phpboy.net/linux/575.html 用WordPress建立博客站点,选择了一套可以显示文章缩略图的模板,几经折腾将原有模板改得面目全非,最后还是直接上线吧,不想折腾了. 站点上线没几天,在公司做项目时,对图片做了一个放大的JS,自己博客也加上点击缩略图查看原图的功能,然后迅速的加了. 过了几天,突发奇想,想做文章预览图,即点击缩略图查看文章预览图,也就是你们现在首页和文章列表页看到的那个功能. 不费话了,不知道什么时候又要折腾... Linux下

Linux下静态库生成和使用

Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. 2.标准系统库可在目录/usr/lib与/lib中找到.比如,在类Unix系统中C语言的数序库一般存储为文件/usr/lib/libm.a.该库中函数的原型声明在头文件/usr/include/math.h中. 3.C标准库本身存储为/usr/lib/libc.a,它包含ANS1/ISO标准指定的函

Linux下如何批量生成IP地址段?

Linux下如何批量生成IP地址段? for num in `echo 192.168.2.{1..254}`;do echo $num >> ip_list;done 说明:定义一个名为num的变量,变量内容为echo 192.168.2.{1..254},然后输出到ip_list这个文件下面 生成文件的截图