8.openssl req
数字证书申请和生成工具。也可以为根CA自行签署证书。
该命令中很多值、属性、格式或默认值都在config文件openssl.cnf中指定。
[root@xuexi ~]# man req NAME req - PKCS# certificate request and certificate generating utility. SYNOPSIS 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] DESCRIPTION The req command primarily creates and processes certificate requests format. It can additionally create self signed certificates for use as root CAs for example.
-in filename:指定证书请求的输入文件filename,即该文件是用于签名的证书请求文件。当指定创建证书请求选项-new或-newkey时该选项失效,因为创建证书请求不需要请求文件
-out filename:证书请求或自签名证书的输出文件,不指定时默认stdout
-text:以文本行书打印证书请求
-noout:不输出关于部分信息,关于noout的用法,请参看http://www.cnblogs.com/f-ck-need-u/p/6090833.html中关于-noout的示例,他们的用法是一样的
-verify:验证请求中的签名
【证书请求有关项:】
-subject:打印请求信息主题(如果指定了x509则打印证书信息主题)
-subj args:替换或自己指定证书请求时需要输入的信息,并输出修改后的请求信息。args的格式为“/type0=value0/type1=value1/type2=...”,如果有空格也将被计入值,如果不想填写这些信息,value部分使用点“.”即可保留空白,但是如果直接敲回车键将是使用配置文件中的默认值。其中其中可识别名称(man req中指定的)有:C是Country、ST是state、L是localcity、O是Organization、OU是Organization Unit、CN是common name、emailAddress是email
-new:创建一个证书请求,会交互式让你输入一些信息,这些交互选项以及交互选项信息的长度值以及其他一些扩展属性在配置文件(其中主配置文件为openssl.cnf,还有些辅助配置文件)中指定了默认值。
如果没有指定-key选项,则会自动生成一个RSA私钥,该私钥的生成配置也在openssl.cnf中指定了。
【证书请求及自签署证书有关项:】
-newkey args:创建一个新的证书请求,并创建私钥,类似于-new选项。args的格式是rsa:numbit(其他加密算法请查看man),其中numbit是rsa密钥的长度,如果numbit省略了(即-newkey rsa),则长度更具openssl.cnf中default_bits指定的值作为默认长度,默认该值为2048
-key filename:指定私钥的输入文件,证书请求签名时需要
-keyout filename:指定新创建的私钥存放位置,若没有指定该选项,则使用openssl.cnf中的default_keyfile指定的值,默认该值为privkey.pem
-nodes:默认新创建私钥会被加密,指定该选项后创建的私钥将不被加密
-pubkey:输出公钥
-[dgst]:指定对请求进行签名时的单向加密算法,如-md5/-sha1/-sha512等,如果不指定这使用openssl.cnf中default_md指定的值,默认该值为sha1
-x509:指定该选项将输出一个自签名数字证书,而不是创建证书请求。一般用于测试或者根CA创建自签名证书。
-days n:指定自签名证书的有效期限,默认30天,需要和-x509一起使用。注意是自签名证书期限,而非请求的证书期限,openssl.cnf中的default_days指定了请求证书的有效期限,默认365天。
-set_serial n:指定生成自签名证书时的证书序列号,该序列号将写入openssl.cnf中serial指定的文件中,这样就不需要手动向该序列号文件写入值了。支持数值和16进制值(0x开头),虽然也支持负数,但不建议。
【配置文件项和杂项:】
-config filename:指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用openssl.cnf中的req段落的值
-batch:非交互模式,直接从openssl.cnf中读取证书请求所需字段信息。但若不指定-key仍会询问key
-verbose:显示操作执行的详细信息
openssl.cnf中关于req段落的配置格式
input_password和output_password:密码的输入和输出文件,与命令行的-passin和-passout选项对应,默认未指定。
default_bits:证书申请时生成的RSA密钥长度,不写时默认是512,命令行的-new选项会用到它,-newkey可能会用到也可能会忽略该选项。
default_keyfile:默认的私钥输出文件,与命令行的-keyout选项对应。
encrypt_key:当设置为no时,创建新私钥时不会加密该私钥。设置为no时与命令行的-nodes等价。还有等价的兼容性写法:encry_rsa_key。
default_md:指定对证书请求进行签名时的单向加密算法,默认为md5,与命令行的-[dgst]对应。
prompt:当指定为no时,则不提示输入证书请求的字段信息,而是直接从openssl.cnf中读取。请小心设置该选项,经个人测试,尽管设置了DN的所有默认值以及其他一些默认值,创建证书请求时还是出错。所以建议将此设置注释掉或者设置为yes。
distinguished_name:(DN)是一个扩展属性段落,用于指定证书请求时可被识别的字段名称。
以下是openssl.cnf中默认的配置文件格式及值:更多关于配置项请看:http://www.cnblogs.com/f-ck-need-u/p/6091027.html
[ req ] default_bits = default_md = sha1 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca # The extentions to add to the self signed cert string_mask = utf8only [ req_distinguished_name ] countryName = Country Name ( letter code) countryName_default = XX countryName_min = countryName_max = stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) localityName_default = Default City .organizationName = Organization Name (eg, company) .organizationName_default = Default Company Ltd organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, your name or your server\'s hostname) commonName_max = emailAddress = Email Address emailAddress_max =
8.openssl req的更多相关文章
- openssl req(生成证书请求和自建CA)
伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉openss ...
- openssl req 证书请求及自签名证书
介绍 openssl req 用于生成证书请求,以让第三方权威机构CA来签发,生成我们需要的证书.req 命令也可以调用x509命令,以进行格式转换及显示证书文件中的text,modulus等信息.如 ...
- Openssl req命令
一.简介 req指令用来创建和处理PKCS#10格式的证书 二.语法 openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [ ...
- (11) openssl req(生成请求证书、私钥和自建CA)
伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA. 由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉opens ...
- openssl req(生成证书请求和自建CA)(转)
openssl req(生成证书请求和自建CA) 伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中 ...
- (转)openssl 命令: openssl req 命令详解
openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书.本文就主要记录一下open ...
- openssl 证书请求和自签名命令req详解
1.密钥.证书请求.证书概要说明 在证书申请签发过程中,客户端涉及到密钥.证书请求.证书这几个概念,初学者可能会搞不清楚三者的关系,网上有的根据后缀名来区分三者,更让人一头雾水.我们以申请证书的流程说 ...
- OpenSSL命令---req
用途: 本指令用来创建和处理PKCS#10格式的证书.它还能够建立自签名证书,做Root CA. 用法: openssl req [-inform PEM|DER] [-outform PEM|DER ...
- openssl 证书请求和签名命令req基本分析
一 基本概念: OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls o ...
随机推荐
- 解决Dropbox无法连接的问题
同步共享服务Dropbox从6月18日开始再次遭到封锁,原因是DNS污染.Dropbox上次在2010年5月曾遭到IP封锁和网址关键字过 滤,2012年5月除文件外链功能外其它功能可正常访问:2014 ...
- class中new与未new的区别 类对象占用空间--转载
转载自http://blog.sina.com.cn/shuiwuhendeboke 颗颗的博客 (1)作用域不同 不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了 ...
- Junit4参数化测试实现程序与用例数据分离
http://touchfu.iteye.com/blog/732930 现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作 ...
- [FFmpeg] ffmpeg 常用命令
1. 视频转换 比如一个avi文件,想转为mp4,或者一个mp4想转为ts. ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts ...
- PHP面向对象编程——深入理解方法重载与方法覆盖(多态)
什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对 ...
- 72. Generate Parentheses && Valid Parentheses
Generate Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...
- linux mutext spinlock 性能分析
http://www.parallellabs.com/2010/01/31/pthreads-programming-spin-lock-vs-mutex-performance-analysis/ ...
- 使用jenkins 插件自动部署项目至tomcat
前面使用maven.ant编译项目就不说,只说一下使用jenkins的插件自动部署项目 1.首先jenkins安装插件Deploy to container Plugin ,下载地址为:https:/ ...
- Linux 任务计划
一.配置cron实现自动化 使用cron实现任务自动化可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的. 1./etc/crontab文件实现自动化 cron守护 ...
- .NET牛人应该知道些什么
任何一个使用.NET的人 1.描述线程与进程的区别? 线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代 码和 ...