OpenSSL证书生成

利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.下面以C/S模式说明证书文件的生成步骤:

证书文件生成:
一.服务器端
    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及csr文件;
    openssl genrsa -des3 -out client.key 1024
    openssl req -new -key client.key -out client.csr

三.生成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证书进行签名
    用生成的CA证书为server.csr,client.csr文件签名,利用openssl中附带的CA.pl文件(在安装目录中openssl/apps目录下),
    1.ca.pl -newca, 在提示输入已有的证书文件时,输入上面已生成的ca.crt证书文件;                            
    2.生成服务端证书文件       
      Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
    3.生成客户端证书文件      
      Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
必须保证openssl.cnf在当前目录下,这个文件可以在apps目录中找到.
 
操作完毕,server.key,server.crt;client.key,client.crt;ca.key,ca.crt将在项目中被用到.

----------------------------------------------------
证书文件生成

也许很多人和本人一样深有体会,使用OpenSSL库写一个加密通讯过程,代码很容易就写出来了,可是整个工作却花了了好几 天。除将程序编译成功外(没有可以使用的证书文件,编译成功了,它并不能跑起来,并不表示它能正常使用,所以......),还需生成必要的证书和私钥文 件使双方能够成功验证对方。
找了n多的资料,很多是说的很模糊,看了n多的英文资料,还是没有办法(不知道是不是外国朋友都比较厉害,不用说明得 太清?),无意间找到yawl(yawl@nsfocus.com)写的文章,难得的汉字(呵呵)。里面有生成证书部分,说到生成了 Certificate Signing Request (CSR)文件后,就有点不太清楚了。后面生成自签字证书在很多地方都可以找到的,签名这部 分,yawl说mod_ssl有比较好的脚本,但是笔者一时找不到,就自己用openssl的ca命令来完成了,也不是很麻烦。 

说说本 人的操作环境:无盘工作站(有权限问题使用起来不太方便),操作目录是openssl/bin(没办法改不了环境变量,如果你可以改的话,就不用在这个目 录下工作了),为了方便本人把apps下的openssl.cnf也复制到了这个目录下来。文件名都是以本人使用的来说了:

1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.

3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做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

现在我们所需的全部文件便生成了.

另:
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key
.crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了)
---------------------------------------------------
合并证书文件(crt)和私钥文件(key):

#cat client.crt client.key > client.pem

#cat server.crt server.key > server.pem


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: OpenSSL是一个开源的加密工具集,可以用于生成证书和密钥。使用OpenSSL一键生成证书,可以简化证书生成过程,提高效率。 首先,确保已经在计算机上安装了OpenSSL工具集。打开命令行界面,在命令行中输入以下命令即可生成证书: 1. 生成私钥:openssl genrsa -out private.key 2048 这条命令将生成一个2048位的RSA私钥,并将其保存到private.key文件中。 2. 生成证书请求:openssl req -new -key private.key -out request.csr 这条命令将使用上一步生成的私钥,生成一个证书请求文件request.csr。 3. 生成自签名证书openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt 这条命令将使用证书请求文件request.csr和私钥private.key,生成一个有效期为365天的自签名证书certificate.crt。 通过上述三个步骤,就可以使用OpenSSL一键生成证书了。私钥用于加密和解密数据,证书请求用于向证书颁发机构申请证书,自签名证书则可以用于测试环境、内部使用等场景。 值得注意的是,自签名证书在公共互联网环境下可能无法被广泛信任,如果需要在生产环境中使用,建议向受信任的证书颁发机构申请真实有效的证书。 ### 回答2: openssl是一个开源的加密工具包,可以用于生成、颁发和管理证书。下面是使用openssl一键生成证书的步骤: 1. 首先,需要在计算机上安装openssl工具包。可以从openssl的官方网站或其他可信的资源获取,并按照指示进行安装。 2. 打开命令行界面,进入openssl的安装目录。 3. 使用以下命令来生成私钥文件和证书请求文件: openssl req -newkey rsa:2048 -nodes -keyout private.key -out request.csr 解释: -newkey rsa:2048:生成RSA私钥,长度为2048位。 -nodes:私钥不加密。 -keyout private.key:指定私钥文件名为private.key。 -out request.csr:指定证书请求文件名为request.csr。 4. 执行上述命令后,会提示输入一些信息,如国家/地区代码、组织名称、通用名称等。根据实际需求,依次输入这些信息。 5. 生成私钥文件和证书请求文件后,可以将证书请求文件(request.csr)发送给证书颁发机构(CA)进行签名。CA会验证请求并颁发相应的证书。 通过上述简单步骤,就可以使用openssl一键生成证书。但需要注意的是,生成证书请求文件需要由CA签名后才能得到有效的证书
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值