openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


主要用于输出证书信息,也能够签署证书请求文件、自签署、转换证书格式等。

openssl x509工具不会使用openssl配置文件中的设定,而是完全需要自行设定或者使用该伪命令的默认值,它就像是一个完整的小型的CA工具箱

openssl x509 [-in filename] [-out filename] [-serial] [-hash] [-subject_hash] [-issuer_hash] [-subject] [-issuer] 
[-nameopt option] [-email] [-startdate] [-enddate] [-purpose] [-dates] [-modulus] [-pubkey] [-fingerprint] [-noout]
[-days arg] [-set_serial n] [-signkey filename] [-x509toreq] [-req] [-CA filename] [-CAkey filename] [-CAcreateserial]
[-CAserial filename] [-text] [-md2|-md5|-sha1|-mdc2] [-extfile filename] [-extensions section]

选项非常多,所以分段解释。

【输入输出选项:】
-in filename :指定证书输入文件,若同时指定了"-req"选项,则表示输入文件为证书请求文件。
-out filename :指定输出文件
-md2|-md5|-sha1|-mdc2:指定单向加密的算法。
【信息输出选项:】
-text:以text格式输出证书内容,即以最全格式输出,
:包括public key,signature algorithms,issuer和subject names,serial number以及any trust settings.
-certopt option:自定义要输出的项
-noout :禁止输出证书请求文件中的编码部分
-pubkey :输出证书中的公钥
-modulus :输出证书中公钥模块部分
-serial :输出证书的序列号
-subject :输出证书中的subject
-issuer :输出证书中的issuer,即颁发者的subject
-subject_hash :输出证书中subject的hash码
-issuer_hash :输出证书中issuer(即颁发者的subject)的hash码
-hash :等价于"-subject_hash",但此项是为了向后兼容才提供的选项
-email :输出证书中的email地址,如果有email的话
-startdate :输出证书有效期的起始日期
-enddate :输出证书有效期的终止日期
-dates :输出证书有效期,等价于"startdate+enddate"
-fingerprint :输出指纹摘要信息

输出证书某些信息的时候,可以配合"-noout"选项,然后再指定某些项来使用。例如:

[root@xuexi ~]# openssl x509 -in cert.pem -noout -text
[root@xuexi ~]# openssl x509 -in cert.pem -noout -serial
[root@xuexi ~]# openssl x509 -in cert.pem -noout -subject
[root@xuexi ~]# openssl x509 -in cert.pem -noout -issuer
[root@xuexi ~]# openssl x509 -in cert.pem -noout -fingerprint
[root@xuexi ~]# openssl x509 -in cert.pem -noout -issuer_hash
[root@xuexi ~]# openssl x509 -in cert.pem -noout -startdate -enddate
【签署选项:】
*****************************************************************************************
* 伪命令x509可以像openssl ca一样对证书或请求执行签名动作。注意,openssl x509 *
* 不读取配置文件,所有的一切配置都由x509自行提供,所以openssl x509像是一个"mini CA" *
*****************************************************************************************
-signkey filename:该选项用于提供自签署时的私钥文件,自签署的输入文件"-in file"的file可以是证书请求文件,也可以是已签署过的证书。-days arg:指定证书有效期限,默认30天。
-x509toreq:将已签署的证书转换回证书请求文件。需要使用"-signkey"选项来传递需要的私钥。
-req:x509工具默认以证书文件做为inputfile(-in file),指定该选项将使得input file的file为证书请求文件。
-set_serial n:指定证书序列号。该选项可以和"-singkey"或"-CA"选项一起使用。
:如果和"-CA"一起使用,则"-CAserial"或"-CAcreateserial"选项指定的serial值将失效。
:序列号可以使用数值或16进制值(0x开头)。也接受负值,但是不建议。
-CA filename :指定签署时所使用的CA证书。该选项一般和"-req"选项一起使用,用于为证书请求文件签署。
-CAkey filename :设置CA签署时使用的私钥文件。如果该选项没有指定,将假定CA私钥已经存在于CA自签名的证书文件中。
-CAserial filename:设置CA使用的序列号文件。当使用"-CA"选项来签名时,它将会使用某个文件中指定的序列号来唯一标识此次签名后的证书文件。
:这个序列号文件的内容仅只有一行,这一行的值为16进制的数字。当某个序列号被使用后,该文件中的序列号将自动增加。
:默认序列号文件以CA证书文件基名加".srl"为后缀命名。如CA证书为"mycert.pem",则默认寻找的序列号文件为"mycert.srl"
-CAcreateserial :当使用该选项时,如果CA使用的序列号文件不存在将自动创建:该文件将包含序列号值""并且此次签名后证书文件序列号为1。
:一般如果使用了"-CA"选项而序列号文件不存在将会产生错误"找不到srl文件"。
-extfile filename :指定签名时包含要添加到证书中的扩展项的文件。
【CERTIFICATE EXTENSIONS】
-purpose:选项检查证书的扩展项并决定该证书允许用于哪些方面,即证书使用目的范围。
basicConstraints:该扩展项用于决定证书是否可以当作CA证书。格式为basicConstraints=CA:true | false
:.如果CA的flag设置为true,那么该证书允许作为一个CA证书,即可以颁发下级证书或进行签名;
:.如果CA的flag设置为false,那么该证书就不能作为CA,不能为下级颁发证书或签名;
:.所有CA的证书中都必须设置CA的flag为true。
:.如果basicConstraints扩展项未设置,那么证书被认为可疑的CA,即"possible CA"。
keyUsage:该扩展项用于指定证书额外的使用限制,即也是使用目的的一种表现方式。
:.如果keyUsage扩展项被指定,那么该证书将又有额外的使用限制。
:.CA证书文件中必须至少设置keyUsage=keyCertSign。
:.如果设置了keyUsage扩展项,那么不论是否使用了critical,都将被限制在指定的使用目的purpose上。

例如,使用x509工具自建CA。由于x509无法建立证书请求文件,所以只能使用openssl req来生成请求文件,然后使用x509来自签署。自签署时,使用"-req"选项明确表示输入文件为证书请求文件,否则将默认以为是证书文件,再使用"-signkey"提供自签署时使用的私钥。

[root@xuexi ssl]# openssl req -new -keyout key.pem -out req.csr

[root@xuexi ssl]# openssl x509 -req -in req.csr -signkey key.pem -out x509.crt

x509也可以用来签署他人的证书请求,即为他人颁发证书。注意,为他人颁发证书时,确保serial文件存在,建议使用自动创建的选项"-CAcreateserial"。

[root@xuexi ssl]# openssl x509 -req -in req.csr -CA ca.crt -CAkey ca.key -out x509.crt -CAcreateserial

10.openssl x509的更多相关文章

  1. openssl - X509证书操作函数

    原文链接: http://blog.csdn.net/zqt520/article/details/26965797 现有的证书大都采用X.509规范,主要同以下信息组成:版本号.证书序列号.有效期. ...

  2. OpenSSL X509 Funtion

    OpenSSL X509 Funtion 来源:https://blog.csdn.net/wanjie518/article/details/6570141 现有的证书大都采用X509规范, 主要同 ...

  3. Openssl x509命令

    一.简介 x509指令是一个功能很丰富的证书处理工具.可以用来显示证书的内容,转换其格式,给CSR签名等 二.语法 openssl x509 [-inform DER|PEM|NET] [-outfo ...

  4. openssl x509(签署和自签署)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 主要用于输出证书信息,也能够签署证书请求文件.自签署.转换证书格式等. op ...

  5. (14) openssl x509(签署和自签署)

    主要用于输出证书信息,也能够签署证书请求文件.自签署.转换证书格式等. openssl x509工具不会使用openssl配置文件中的设定,而是完全需要自行设定或者使用该伪命令的默认值,它就像是一个完 ...

  6. (10) openssl dhparam(密钥交换)

    openssl dhparam用于生成和管理dh文件.dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥. 但注意,它不是加密算法,所以不提 ...

  7. [原创]KVM虚拟化实践记录

    一.KVM简介KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel V ...

  8. openssl命令行工具简介 - 指令x509

    原文链接: http://blog.csdn.net/allwtg/article/details/4982507 openssl命令行工具简介 - 指令x509 用法:           open ...

  9. openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?

    今天尝试在mac机上搭建docker registry私有仓库时,杯具的发现最新的registry出于安全考虑,强制使用ssl认证,于是又详细了解linux/mac上openssl的使用方法,接触了一 ...

随机推荐

  1. 【python】15个最受欢迎的Python开源框架

    Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台: ...

  2. MyBatis入门学习教程-MyBatis缓存

    一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了 package me.gacl.test; 2 import me.gacl.domain.User; import ...

  3. bzoj3051: [wc2013]平面图

    Description Input Output 扫描线求出平面图的对偶图然后求最小生成树,用并查集按秩合并,以便查询两点间路径最大权 #include<stdio.h> #include ...

  4. WeX5 - AJAX跨域调用相关知识-CORS和JSONP

    http://docs.wex5.com/ajax-cross-domain/ 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容 ...

  5. JQuery获取元素本身HTML

    $('<p>').append($(this).clone()).html() 原理:创建一个匿名对象,克隆本身,追加到匿名对象中,再获取匿名对象的HTML

  6. OAF_开发系列10_实现OAF动态LOV设定

    20150712 Created By BaoXinjian

  7. 通过单元测试理解spring容器以及dubbo+zookeeper单元测试异常处理

    一.先说一个结论:单元测试与主项目的spring容器是隔离的,也就是说,单元测试无法访问主项目spring容器,需要自己加载spring容器. 接下来是代码实例,WEB主项目出于运行状态,单元测试中可 ...

  8. redis中setbit的用法

    原文地址:http://www.zhihu.com/question/27672245 在redis中,存储的字符串都是以二级制的进行存在的.举例:设置一个 key-value ,键的名字叫“andy ...

  9. C语言atan2()函数:求y/x的反正切值

    头文件:#include <math.h> atan2() 函数用于求 y / x 的反正切值.其原型为:    double atan2(double y, double x); [参数 ...

  10. CACTI表结构和数据被动获取

    cacti我们也用了很久了,但是它的表结构一直都没有去关心过,得空抽了半个晚上的时间,把它的库表结构大概看了下,某些字段的含义跟大家分享下:cacti的数据都是存放在rrdtool中的,数据库存放的其 ...