位置: IT常识 - 正文

Linux下OpenSSL客户端中使用req命令来生成证书的教程(openssh centos)

编辑:rootadmin
这篇文章主要介绍了Linux下OpenSSL客户端中使用req命令来生成证书的教程,详细讲解了自动生成密钥和生成自签名证书的方法,需要的朋友可以参考下... 16-04-22

推荐整理分享Linux下OpenSSL客户端中使用req命令来生成证书的教程(openssh centos),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:openssh linux,openssl client,openssl安装教程linux,openssl 客户端,openssl 客户端,openssh客户端,openssh客户端,openssh客户端,内容如对您有帮助,希望把文章链接给更多的朋友!

openssl req 用于生成证书请求,以让第三方权威机构CA来签发,生成我们需要的证书。req 命令也可以调用x509命令,以进行格式转换及显示证书文件中的text,modulus等信息。如果你还没有密钥对,req命令可以一统帮你生成密钥对和证书请求,也可以指定是否对私钥文件进行加密。

1、密钥、证书请求、证书概要说明

在证书申请签发过程中,客户端涉及到密钥、证书请求、证书这几个概念,初学者可能会搞不清楚三者的关系,网上有的根据后缀名来区分三者,更让人一头雾水。我们以申请证书的流程说明三者的关系。客户端(相对于CA)在申请证书的时候,大体上有三个步骤:

第一步:生成客户端的密钥,即客户端的公私钥对,且要保证私钥只有客户端自己拥有。第二步:以客户端的密钥和客户端自身的信息(国家、机构、域名、邮箱等)为输入,生成证书请求文件。其中客户端的公钥和客户端信息是明文保存在证书请求文件中的,而客户端私钥的作用是对客户端公钥及客户端信息做签名,自身是不包含在证书请求中的。然后把证书请求文件发送给CA机构。第三步:CA机构接收到客户端的证书请求文件后,首先校验其签名,然后审核客户端的信息,最后CA机构使用自己的私钥为证书请求文件签名,生成证书文件,下发给客户端。此证书就是客户端的身份证,来表明用户的身份。至此客户端申请证书流程结束,其中涉及到证书签发机构CA,CA是被绝对信任的机构。如果把客户端证书比作用户身份证,那么CA就是颁发身份证的机构,我们以https为例说明证书的用处。

为了数据传输安全,越来越多的网站启用https。在https握手阶段,服务器首先把自己的证书发送给用户(浏览器),浏览器查看证书中的发证机构,然后在机器内置的证书中(在PC或者手机上,内置了世界上著名的CA机构的证书)查找对应CA证书,然后使用内置的证书公钥校验服务器的证书真伪。如果校验失败,浏览器会提示服务器证书有问题,询问用户是否继续。

例如12306网站,它使用的自签名的证书,所以浏览器会提示证书有问题,在12306的网站上有提示下载安装根证书,其用户就是把自己的根证书安装到用户机器的内置证书中,这样浏览器就不会报证书错误。但是注意,除非特别相信某个机构,否则不要在机器上随便导入证书,很危险。

2、req指令说明

上一节我们看到了申请证书流程,生成密钥对我们已经知道,那么如何生成证书请求呢,req指令就该上场了,我们可以查看req的man手册,如下:

openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id]发现其参数多而复杂,还有许多没有用到过的参数。但是在实际应用中我们使用到的参数很有限,我们根据req的基本功能来学习。

req的基本功能主要有两个:生成证书请求和生成自签名证书。其他还有一些校验、查看请求文件等功能,示例会简单说明下。参数说明如下

[new/x509]

当使用-new选取的时候,说明是要生成证书请求,当使用x509选项的时候,说明是要生成自签名证书。

[key/newkey/keyout]

key和newkey是互斥的,key是指定已有的密钥文件,而newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,然后生成的密钥名称有keyout参数指定。

当指定newkey选项时,后面指定rsa:bits说明产生rsa密钥,位数由bits指定。指定dsa:file说明产生dsa密钥,file是指生成dsa密钥的参数文件(由dsaparam生成)

[in/out/inform/outform/keyform]

in选项指定证书请求文件,当查看证书请求内容或者生成自签名证书的时候使用

out选项指定证书请求或者自签名证书文件名,或者公钥文件名(当使用pubkey选项时用到),以及其他一些输出信息。

inform、outform、keyform分别指定了in、out、key选项指定的文件格式,默认是PEM格式。

[config]

参数文件,默认是/etc/ssl/openssl.cnf(ubuntu12.04),根据系统不同位置不同。该文件包含生成req时的参数,当在命令行没有指定时,则采用该文件中的默认值。

除上述主要参数外,还有许多其他的参数,不在一一叙述,有兴趣的读者可以查看req的man手册

3、req指令使用实例

(1)使用已有私钥生成证书请求

Linux下OpenSSL客户端中使用req命令来生成证书的教程(openssh centos)

使用原有的RSA密钥生成证书请求文件,输入主体相关信息:

代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pem

You are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:AUState or Province Name (full name) [Some-State]:BJLocality Name (eg, city) []:BJOrganization Name (eg, company) [Internet Widgits Pty Ltd]:BJOrganizational Unit Name (eg, section) []:BJCommon Name (e.g. server FQDN or YOUR name) []:BJEmail Address []:BJPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:12345An optional company name []:BJ......使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息从配置文件读取:

代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -batch

使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息由命令行subj指定:

代码如下:openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -subj /C=AU/ST=Some-State/O=Internet

使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息由命令行subj指定,且输出公钥:

代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -subj /C=AU/ST=Some-State/O=Internet -pubkey

可以看到公钥和请求信息:

代码如下:$ cat client.pem

-----BEGIN PUBLIC KEY-----MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL6e+hk0TAsYlPk5XB1tLCtCO8wQ7JMMYQ9SMy4Q1liPg4TdgSkdfbLB2UXmzzMCp+ZBDk9txwtewqv7PVcvY0MCAwEAAQ==-----END PUBLIC KEY----------BEGIN CERTIFICATE REQUEST-----MIIBGDCBwwIBADA1MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTERMA8GA1UECgwISW50ZXJuZXQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAvp76GTRMCxiU+TlcHW0sK0I7zBDskwxhD1IzLhDWWI+DhN2BKR19ssHZRebPMwKn5kEOT23HC17Cq/s9Vy9jQwIDAQABoCkwJwYJKoZIhvcNAQkOMRowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0BAQUFAANBAFBiB0fTUwTSoFeQdTWIr3KXzDHPbgLy1/nlJ71dYLfGGrR61RKmrXgpf76akURtF+gEXwLMfPO6FQlaIOYEe/c=-----END CERTIFICATE REQUEST-----

(2)自动生成密钥,生成证书请求文件

自动生成1024位RSA密钥,并生成证书请求文件:

代码如下:$ openssl req -new -newkey rsa:1024 -out client.pem -keyout RSA.pem -batch

Generating a 1024 bit RSA private key.......................................++++++...............................++++++writing new private key to 'RSA.pem'Enter PEM pass phrase:Verifying-Enter PEM pass phrase:......自动生成1024位RSA密钥,并生成证书请求文件,指定-nodes文件,密钥文件不加密:

代码如下:$ openssl req -new -newkey rsa:1024 -out client.pem -keyout RSA.pem -batch -nodes

Generating a 1024 bit RSA private key..++++++.........................++++++writing new private key to 'RSA.pem'......自动生成1024位DSA密钥参数:

代码如下:$ openssl dsaparam -out DSA.param 1024

Generating DSA parameters, 1024 bit long primeThis could take some time...+.+..+.+++++++++++++++++++++++++++++++++++++++++++++++++++*................+...........+......+.+.............+.+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++*自动生成1024位DSA密钥,并生成证书请求文件,指定-nodes文件,密钥文件不加密:

代码如下:$ openssl req -new -newkey dsa:DSA.param -out client.pem -keyout DSA.pem -batch -nodes

Generating a 1024 bit DSA private keywriting new private key to 'DSA.pem'......

(3)生成自签名证书

生成自签名证书,与req参数一样,只需要把req修改为x509即可:

代码如下:$ openssl req -x509 -newkey rsa:1024 -out client.cer -keyout RSA.pem -batch -nodes

Generating a 1024 bit RSA private key.........++++++..++++++writing new private key to 'RSA.pem'......查看证书文件:

代码如下:$ openssl x509 -in client.cer -noout -text

Certificate: Data: Version: 3 (0x2) ..... Signature Algorithm: sha1WithRSAEncryption 5b:d7:f5:fd:18:3a:a9:22:2a:d9:f1:fc:00:3a:cf:23:ff:d1: 82:e5:2d:3f:7e:97:a8:38:32:e6:88:7a:ce:9f:31:cc:ea:60: 06:d1:96:bb:c8:42:ec:ef:26:73:4e:3b:2d:fa:0f:16:c2:25: 30:1b:a5:ca:35:bd:9b:dd:4b:41:d4:8b:95:3a:d4:7c:aa:8d: 0d:2d:e7:f3:95:33:d2:4a:5a:7f:a2:5d:cc:48:60:9f:ca:2d: 77:d9:ed:e9:09:f3:a1:18:96:1d:91:c6:1c:2b:7a:c1:d6:5d: 81:87:25:0d:32:6a:55:d2:89:95:c5:32:44:cc:9d:e7:68:6f: d8:80

(4)查看证书请求内容

生成证书请求:

代码如下:$ openssl req -new -newkey rsa:1024 -out client.req -keyout RSA.pem -batch -nodes

Generating a 1024 bit RSA private key...............................................................++++++......................++++++writing new private key to 'RSA.pem'......查看证书请求内容,subject指定输出主体:

代码如下:$ openssl req -in client.req -noout -text -subject

Certificate Request: Data: Version: 0 (0x0) Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (1024 bit) Modulus: ... Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment Signature Algorithm: sha1WithRSAEncryption... subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd

(5)校验证书请求文件

指定verify指令,校验证书请求文件,其操作时提取请求文件中的公钥来验证签名信息:

代码如下:$ openssl req -verify -in client.req -noout

verify OK

4、生成证书步骤小结

Step 1. Create key (password protected)

代码如下:openssl genrsa -out prvtkey.pem 1024/2038 (with out password protected) 代码如下:openssl genrsa -des3 -out prvtkey.pem 1024/2048 (password protected)

这个命令会生成一个1024/2048位的密钥。Step 2. Create certification request

代码如下:openssl req -new -key prvtkey.pem -out cert.csropenssl req -new -nodes -key prvtkey.pem -out cert.csr

这个命令将会生成一个证书请求,当然,用到了前面生成的密钥prvtkey.pem文件这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。Step 3: Send certificate request to Certification Authority (CA)如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:

代码如下:openssl req -new -x509 -key prvtkey.pem -out cacert.pem -days 1095

这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem

本文链接地址:https://www.jiuchutong.com/zhishi/276707.html 转载请保留说明!

上一篇:MAC iTunes操作技巧汇总(不仅仅是表面而已)(macos itunes)

下一篇:怎么获得Win1021h1激活码 最新21h1系统密钥推荐(怎么获得win10纯净版)

  • 微博运营:怎样定义你的微博(微博怎么运营赚钱)

    微博运营:怎样定义你的微博(微博怎么运营赚钱)

  • 小米10和华为nova8的区别有哪些(小米10和华为nova7哪个好)

    小米10和华为nova8的区别有哪些(小米10和华为nova7哪个好)

  • 钉钉直播老师可以看到学生分屏吗(钉钉直播老师可以看到我吗)

    钉钉直播老师可以看到学生分屏吗(钉钉直播老师可以看到我吗)

  • 爱奇艺怎么调儿童模式(爱奇艺画面怎么设置)

    爱奇艺怎么调儿童模式(爱奇艺画面怎么设置)

  • 电表5(20)a是什么意思(电表5(20)A是什么意思?)

    电表5(20)a是什么意思(电表5(20)A是什么意思?)

  • 闲鱼能货到付款吗(闲鱼货到付款 要是假的东西 怎么办)

    闲鱼能货到付款吗(闲鱼货到付款 要是假的东西 怎么办)

  • 钉钉通话记录在哪(钉钉的通话记录可以回放吗)

    钉钉通话记录在哪(钉钉的通话记录可以回放吗)

  • 平板打不开屏幕怎么回事(平板打不开屏幕一直转圈)

    平板打不开屏幕怎么回事(平板打不开屏幕一直转圈)

  • vivos6为什么耗电这么快(vivos6手机耗电太快是什么原因)

    vivos6为什么耗电这么快(vivos6手机耗电太快是什么原因)

  • 微信相册打不开怎么回事(微信相册打不开是黑的)

    微信相册打不开怎么回事(微信相册打不开是黑的)

  • 为什么iphone11没有查找我的iphone(为什么iphone11没有口罩解锁)

    为什么iphone11没有查找我的iphone(为什么iphone11没有口罩解锁)

  • 小红书会员可以只开一个月吗(小红书会员可以干嘛)

    小红书会员可以只开一个月吗(小红书会员可以干嘛)

  • 抖音取消点赞会降低播放量吗(抖音取消点赞会怎样)

    抖音取消点赞会降低播放量吗(抖音取消点赞会怎样)

  • 拼多多自动退款怎么回事(拼多多自动退款是真的吗)

    拼多多自动退款怎么回事(拼多多自动退款是真的吗)

  • 抖音加好友有限制吗(抖音加好友有限制时间吗)

    抖音加好友有限制吗(抖音加好友有限制时间吗)

  • 笔记本电脑没有声音是什么问题(笔记本电脑没有wifi)

    笔记本电脑没有声音是什么问题(笔记本电脑没有wifi)

  • 联想电脑bios恢复出厂设置在哪里(联想电脑bios恢复出厂设置没反应)

    联想电脑bios恢复出厂设置在哪里(联想电脑bios恢复出厂设置没反应)

  • 华为nova5pro分屏手势在哪里(华为nova5pro分屏怎么调大小)

    华为nova5pro分屏手势在哪里(华为nova5pro分屏怎么调大小)

  • 不让微信号显示手机号的方法(怎么能让微信号不显示)

    不让微信号显示手机号的方法(怎么能让微信号不显示)

  • ad是哪个公司的软件(ad是哪个公司的简称)

    ad是哪个公司的软件(ad是哪个公司的简称)

  • 华为手机如何卸载系统应用(华为手机如何卸载华为视频)

    华为手机如何卸载系统应用(华为手机如何卸载华为视频)

  • 华为手机怎么拷贝照片(华为手机怎么拷照片到电脑)

    华为手机怎么拷贝照片(华为手机怎么拷照片到电脑)

  • 苹果手机的云相册在哪(苹果手机的云相册怎么能看到照片)

    苹果手机的云相册在哪(苹果手机的云相册怎么能看到照片)

  • 拼多多怎么给客服备注(拼多多怎么给客服打分)

    拼多多怎么给客服备注(拼多多怎么给客服打分)

  • 小米8飞行模式在哪(小米飞行模式在哪里设置)

    小米8飞行模式在哪(小米飞行模式在哪里设置)

  • 西数红盘和蓝盘的区别(西数红盘蓝盘绿盘)

    西数红盘和蓝盘的区别(西数红盘蓝盘绿盘)

  • 腾讯电脑管家浏览器保护(腾讯电脑管家浏览器保护在哪)

    腾讯电脑管家浏览器保护(腾讯电脑管家浏览器保护在哪)

  • 个人所得税 补觉
  • 进口原料免税
  • 银行转账记录能保存多久
  • 福利费用属于工资吗
  • 贷款利息是否能降低
  • 怎么把预付账款转到管理费用
  • 小微企业增值税减免账务处理
  • 小企业计提坏账准备的会计分录怎么写
  • 航空货运单可以由谁来填写
  • 承包费收入如何交增值税
  • 出口退税申报流程视频
  • 其他公司归还货款会计分录
  • 融资租赁的固定资产由承租方进行核算,体现了( )原则
  • 营改增账务处理实例
  • 企业利息收入要交所得税吗
  • 补计提以前年度增值税
  • 银行贷款利息可以减免吗
  • 金税盘服务费可以当月抵扣吗
  • 记账错误是什么意思
  • 什么企业需要纳税申报
  • 2021年个人社保代扣失败
  • 4s店修车送保养
  • 在windows7提供了一种什么技术
  • 跨年的所得税怎么冲
  • 如何防范税务风险
  • 我国税收法律制度不采用的税率是
  • 怎么计提企业所得税在哪里知道计提多少
  • php源码怎么上传到服务器
  • windows为什么从7开始
  • 对公账户转库存现金对方科目怎么填
  • backup是什么文件夹怎么能打开
  • vue编写网页
  • php入门课程
  • 野生动物huan
  • upload靶场搭建
  • 受托代销商品会计分录受托方
  • 企业所得税股息红利所得来源地
  • 无法按时交纳税怎么办
  • nvidia-smi failed to initialize
  • php有哪些
  • php fopen函数的用法
  • 增值税抵扣要求一一对应
  • 审图费谁出
  • 支出和收入怎么算呀
  • 帝国cms移动端
  • 帝国cms首页调用显示标题图片代码
  • linux mysql 安装与操作
  • 怎么理解财务会计这个岗位
  • 兼职人员的个税怎么计算
  • 小额转账汇款服务最多转账多少钱
  • 什么叫日常业务
  • 小规模减免税款会计分录
  • 发票作废该如何操作
  • 接受捐赠的材料计入什么科目
  • 税控系统设备可以全额抵扣吗
  • 长期待摊费用的最新账务处理
  • 个税多缴了纳税人怎么办
  • 进项发票认证多了留抵多久
  • 购买柴油预付卡怎么入账
  • 加油票怎么做会计分录
  • mysql分区分表原理
  • sqlserver数据库和mysql区别
  • mysql5.7版本的服务的名字是
  • centos7.9命令
  • linux配置mysql数据库远程连接失败的解决方法
  • mysql数据库主键怎么设置
  • win8系统安装office2010
  • 503 service unavailable错误说明
  • xp启动时间长
  • win8系统关机在哪
  • linux错误提示
  • 批处理for命令详解
  • cocos2dx4.0教程
  • javascript 数组
  • 由浅入深易,由深入浅难
  • vue中的vuex
  • js 函数写法
  • 云南定额发票真伪查询平台
  • 土地交易的印花税
  • 云南医保可以网上买药吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设