使用openssl自签名证书生成的证书签名请求是否应显示扩展属性?

使用openssl自签名证书生成的证书签名请求是否应显示扩展属性?,openssl,x509,Openssl,X509,我有一个自签名证书,它显示了列出的基本约束,但是由它生成的签名请求没有显示这些属性,例如[v3_req]。如何使其可见?我正在使用openssl生成证书 情景: 我使用以下方法创建自签名证书: openssl req-x509-nodes-days 365-newkey rsa:2048-keyout privateKey.key-out certificate.crt-config openssl.conf 当我检查证书时,它会显示所需的扩展: openssl x509-in certific

我有一个自签名证书,它显示了列出的基本约束,但是由它生成的签名请求没有显示这些属性,例如[v3_req]。如何使其可见?我正在使用openssl生成证书

情景:

我使用以下方法创建自签名证书: openssl req-x509-nodes-days 365-newkey rsa:2048-keyout privateKey.key-out certificate.crt-config openssl.conf

当我检查证书时,它会显示所需的扩展: openssl x509-in certificate.crt-text-noout

现在,我从中创建了一个CSR opensslx509-x509toreq-in certificate.crt-out CSR.CSR-signkey privateKey.key

当我使用以下工具检查CSR时: openssl req-text-noout-verify-in CSR.CSR

它没有显示所需的扩展

我的openssl.conf文件

#
#OpenSSL示例配置文件。
#这主要用于生成证书请求。
#
#如果HOME不在,此定义将停止以下行阻塞
#定义。
首页=。
RANDFILE=$ENV::HOME/.rnd
#额外对象标识符信息:
#oid_文件=$ENV::HOME/.oid
oid\u段=新的\u oid
#要将此配置文件与的“-extfile”选项一起使用
#“openssl x509”实用程序,在此处命名包含
#要使用的X.509v3扩展:
#扩展=
#(或者,使用仅具有
#X.509v3扩展在其主[=默认]部分。)
[新修订]
#我们可以在这里添加新的OID供“ca”和“req”使用。
#添加一个简单的OID,如下所示:
#testoid1=1.2.3.4
#或者像这样使用配置文件替换:
#testoid2=${testoid1}.5.6
####################################################################
[ca]
default_ca=ca_default#默认ca节
####################################################################
[CA_默认值]
迪尔=/德莫卡#所有东西都放在那里
certs=$dir/certs#保存已颁发证书的位置
crl_dir=$dir/crl#保存已发布crl的位置
database=$dir/index.txt#数据库索引文件。
new_certs_dir=$dir/newcerts#新证书的默认位置。
证书=$dir/cacert.pem#CA证书
serial=$dir/serial#当前序列号
crl=$dir/crl.pem#当前crl
私钥=$dir/private/cakey.pem#私钥
RANDFILE=$dir/private/.rand#private随机数文件
x509_extensions=usr_cert#要添加到证书的扩展
#要添加到CRL的扩展。注意:Netscape communicator在V2 CRL上阻塞
#因此,默认情况下,这被注释掉,留下一个V1 CRL。
#crl\U扩展=crl\U扩展
默认天数=365#认证时间为多长
默认值_crl_天=30#距离下一个crl有多长时间
默认的_md=md5#使用哪个md。
保留=否#保留已通过的DN排序
#指定请求的相似程度的几种不同方法
#对于CA类型,列出的属性必须相同,并且是可选的
#并且提供的字段仅为:-)
策略=策略匹配
#对于CA策略
[政策匹配]
countryName=匹配
stateOrProvinceName=匹配
organizationName=匹配
organizationalUnitName=可选
commonName=已提供
emailAddress=可选
#为了“任何事情”的政策
#此时,您必须列出所有可接受的“对象”
#类型。
[policy_anything]
countryName=可选
stateOrProvinceName=可选
LocationName=可选
organizationName=可选
organizationalUnitName=可选
commonName=已提供
emailAddress=可选
####################################################################
[请求]
默认_位=1024
默认_keyfile=privkey.pem
可分辨名称=请求可分辨名称
属性=请求属性
x509_extensions=v3_ca#要添加到自签名证书的扩展
#私钥密码(如果不存在)将提示输入
#输入密码=密码
#输出密码=机密
#这将为允许的字符串类型设置掩码。有几种选择。
#默认值:可打印字符串、T61字符串、BMPString。
#pkix:可打印字符串,BMPString。
#仅限UTF8:仅限UTF8字符串。
#nombstr:可打印字符串,T61字符串(无BMPString或UTF8string)。
#掩码:XXXX一个文字掩码值。
#警告:当前版本的Netscape在BMPString或UTF8string上崩溃
#因此,请谨慎使用此选项!
字符串\u掩码=nombstr
req_extensions=v3_req#要添加到证书请求的扩展
[请求可分辨名称]
countryName=国家名称(两个字母代码)
countryName\u默认值=AU
countryName_min=2
countryName_max=2
州或省名称=州或省名称(全名)
stateOrProvinceName\u默认值=某些状态
localityName=地点名称(例如,城市)
0.organizationName=组织名称(例如,公司)
0.organizationName\u默认值=互联网Widgits私人有限公司
#我们可以这样做,但通常不需要:-)
#1.组织名称=第二个组织名称(例如,公司)
#1.organizationName\u默认值=万维网私人有限公司
organizationalUnitName=组织单位名称(例如,部门)
#organizationalUnitName\u默认值=
commonName=通用名(例如,您的名字)
commonName_max=64
emailAddress=电子邮件地址
emailAddress_max=40
#SET-ex3=集合分机编号3
[请求属性]
challengePassword=质询密码
challengePassword_min=4
challengePassword_max=20
unstructuredName=可选的公司名称
[usr_证书]
#这些扩展是在“ca”签署请求时添加的。
#这违反了PKIX准则,但有些CA会这样做,有些软件会这样做
#需要这样做以避免将最终用户证书解释为CA。
基本约束=CA:错误
#下面是nsCertType用法的一些示例。如果省略了
#该证书可用于除对象签名之外的任何*操作。
#这对于SSL服务器来说是正常的。
#nsCertType=服务器
#对于对象签名证书,将使用该证书。
#nsCertType=objsign
#对于正常的客户端使用,这是典型的
#nsCe
[req]
prompt = no
distinguished_name  = req_dn
req_extensions      = req_exts 

[req_dn]
commonName          = my_name
#emailAddress       = 
#countryName            = 
#organizationName       = 
#organizationalUnitName     = 
#localityName           = 
#stateOrProvinceName        = 

[req_exts]
basicConstraints = CA:false
keyUsage = dataEncipherment, keyEncipherment, digitalSignature, nonRepudiation 
extendedKeyUsage = emailProtection
subjectAltName=critical, email:my_address1, email:my_address2
openssl req -new -key privkey.pem -config test.cnf -out test.csr