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

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

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"选项(即禁止输出证书中的哪一部分),然后再指定某些项来使用。例如:

[[email protected] ~]# openssl x509 -in cert.pem -noout -text
[[email protected] ~]# openssl x509 -in cert.pem -noout -serial
[[email protected] ~]# openssl x509 -in cert.pem -noout -subject
[[email protected] ~]# openssl x509 -in cert.pem -noout -issuer
[[email protected] ~]# openssl x509 -in cert.pem -noout -fingerprint
[[email protected] ~]# openssl x509 -in cert.pem -noout -issuer_hash
[[email protected] ~]# 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使用的序列号文件不存在将自动创建:该文件将包含序列号值"02"并且此次签名后证书文件序列号为1。
                  :一般如果使用了"-CA"选项而序列号文件不存在将会产生错误"找不到srl文件"。
-extfile filename :指定签名时包含要添加到证书中的扩展项的文件
【CERTIFICATE EXTENSIONS】
-purpose:选项检查证书的扩展项,并决定该证书允许用于哪些方面,即证书使用目的范围。
basicConstraints:该扩展项用于决定证书是否可以当作CA证书。格式为basicConstraints=CA:true | false
                :1.如果CA的flag设置为true,那么该证书允许作为一个CA证书,即可以颁发下级证书或进行签名;
                :2.如果CA的flag设置为false,那么该证书就不能作为CA,不能为下级颁发证书或签名;
                :3.所有CA的证书中都必须设置CA的flag为true。
                :4.如果basicConstraints扩展项未设置,那么证书被认为可疑的CA,即"possible CA"。
keyUsage:该扩展项用于指定证书额外的使用限制,即也是使用目的的一种表现方式。
        :1.如果keyUsage扩展项被指定,那么该证书将又有额外的使用限制。
        :2.CA证书文件中必须至少设置keyUsage=keyCertSign。
        :3.如果设置了keyUsage扩展项,那么不论是否使用了critical,都将被限制在指定的使用目的purpose上。

例如,使用x509工具自建CA。由于x509无法建立证书请求文件,所以只能使用openssl req来生成请求文件,然后使用x509来自签署。

自签署时:

使用"-req"选项明确表示输入文件为证书请求文件,否则将默认以为是证书文件;

使用"-signkey"提供自签署时使用的私钥;

[[email protected] ssl]# openssl req -new -keyout key.pem -out req.csr      #由私钥生成请求证书

[[email protected] ssl]# openssl x509   -req -in req.csr   -signkey key.pem   -out x509.crt      #使用x509签署请求证书时,必须同时指定请求证书和私钥

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

[[email protected] ssl]# openssl x509   -req -in req.csr   -CA ca.crt   -CAkey ca.key    -out x509.crt   -CAcreateserial

原文地址:https://www.cnblogs.com/liliyang/p/9740079.html

时间: 2024-11-01 15:50:30

(14) openssl x509(签署和自签署)的相关文章

使用OpenSSL创建私有CA、签署证书

OpenSSL工具包是Linux上SSL v2/v3和TLS v1协议的实现方式之一,并建提供了常用的加密解密功能. OpenSSL主要由三部分组成: 1:libcrypto:加密库,主要用来实现加密.解密的功能库 2:libssl:实现SSL服务器端功能会话库 3:openssl命令行工具:/usr/bin/openssl 本文仅是介绍如何通过openssl命令创建私有CA,以及如何申请证书.签署证书等过程. 证书主要包含的就是拥有者自身的属性信息.公钥以及CA的签名,核心就是用户的公钥.服务

(15) openssl签署和自签署证书的多种实现方式

1.采用自定义配置文件的实现方法 1.1 自建CA 自建CA的机制:1.生成私钥:2.创建证书请求:3.使用私钥对证书请求签名. 由于测试环境,所以自建的CA只能是根CA. 所使用的配置文件如下: [default] name = root-ca /* 变量*/ default_ca = CA_default name_opt = ca_default cert_opt = ca_default [CA_default] home = . /* 变量*/ database = $home/db/

openssl签署自己的泛域名(通配符)证书

openssl自建CA默认签署的是单域名证书,因为单台服务器上有多个https域名,有的时候希望一个证书能解决所有问题,如果是同一个顶级域名,那么泛域名(通配符)证书正好适合你 不需要修改openssl.cnf,其他有的扩展最好都注释掉,不注释也不影响 只要在输入域名(CN)的时候,把www.baidu.com 改成 *.baidu.com!!这里要注意, a.b.baidu.com  要写成 *.b.baidu.com !!另外, 经过测试,泛域名可以和多CN方式同时使用,在多CN填写域名的时

利用openssl签署多域名证书

openssl自建CA默认签署的是单域名证书,因为单台服务器上有多个https域名,签署多域名证书能方便很多,今天找了很久,除了一些卖证书的网站上有scr工具能加"使用者备用名称",都没有找到openssl相关的添加方法. 后来看openssl.cnf找到一个方法,这里记录一下: !!这个方法比较笨重,如果有其他方法,欢迎留言给我,感激不尽. 主要修改在openssl.cnf 将文件中原来的 commonName                    = Common Name (eg

OpenSSL:实现创建私有CA、签署证书请求详解

一.OpenSSL:CA默认配置信息 1.证书签发机构CA:公共信任CA.私有CA 建立私有CA方式如下: 小范围测试使用openssl. 大范围维护大量证书企业使用OpenCA(对openssl进行了二次封装,更加方便使用) 2.openssl 配置文件:/etc/pki/tls/openssl.cnf [[email protected] tmp]# cat  /etc/pki/tls/openssl.cnf 该配置文件中以 "[配置段]",的形式配置相关信息 ==========

openssl ca(签署和自建CA)

用于签署证书请求.生成吊销列表CRL以及维护已颁发证书列表和这些证书状态的数据库.因为一般人无需管理crl,所以本文只介绍openssl ca关于证书管理方面的功能. 证书请求文件使用CA的私钥签署之后就是证书,签署之后将证书发给申请者就是颁发证书.在签署时,为了保证证书的完整性和一致性,还应该对签署的证书生成数字摘要,即使用单向加密算法. 由于openssl ca命令对配置文件(默认为/etc/pki/tls/openssl.cnf)的依赖性非常强,所以建议结合我的另一篇文章配置文件opens

本地私有CA的创建及证书的签署

一 创建私有CA 1.准备工作 1. 修改/etc/pki/tls/openssl.cnf中dir= ../../CA 为dir= /etc/pki/CA,否则可能会读取ca时出错 2.根据openssl.cnf中的要求在/etc/pki/CA目录下分别创建 private,certs,newcerts, crl目录和index.txt,serial文件,并且给echo 01 > serial中给serial文件中添加一个证书申请的第一个编号 2. 在CA目录下的private目录中生成一个ca

14 Linux之openssl工具创建私有CA

证书的创建依赖加密算法,请看http://yunweigou.blog.51cto.com/6299641/1637108 前言,随着网络的发展,由于使用http协议通信的双方数据是明码格式的,故容易被其他网络主机盗取或偷换数据,无法对数据的安全提供保障.为保证数据的保密性及完整性,SSL问世 SSL:Secure Sockets Layer 安全套接字层 可理解为传输层和应用层之间的半层,对数据进行加密和解密 是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保

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

原文链接: http://blog.csdn.net/allwtg/article/details/4982507 openssl命令行工具简介 - 指令x509 用法:           openssl x509 [-inform DER|PEM|NET] [-outform DER|PEM|NET]            [-keyform DER|PEM][-CAform DER|PEM] [-CAkeyform DER|PEM]            [-in filename][-o