OpenSSL自签名证书制作(前篇):config文件与命令的参数解析

OpenSSL自签名证书制作(前篇):参数解析

在制作证书的时候通过openssl命令来制作证书,里面的内容需要依赖-config选项的配置文件,下面的内容是讲解config文件的参数配置,以及openssl命令各个选项的解析。

如果需要快速制作出证书完成任务,请在我的主页寻找本文的后篇,可以直接复制粘贴运行,做出证书。

-config配置文件参数讲解

基本的参数

ini 复制代码
####################################################################
[ ca ]
default_ca  = CA_default        /*The default ca section*/
####################################################################

[ CA_default ]
dir = /etc/pki/CA    /* Where everything is kept */
                     /*  #### 这是第一个openssl目录结构中的目录 */
certs = $dir/certs   /* Where the issued certs are kept(已颁发的证书路径,即CA或自签的) */
                     /* #### 这是第二个openssl目录结构中的目录,但非必须 */
crl_dir = $dir/crl   /* Where the issued crl are kept(已颁发的crl存放目录) */                         
                     /*  #### 这是第三个openssl目录结构中的目录*/
database = $dir/index.txt /* database index file */
#unique_subject = no     /* 设置为yes则database文件中的subject列不能出现重复值 */
                         /* 即不能为subject相同的证书或证书请求签名*/
                         /* 建议设置为no,但为了保持老版本的兼容性默认是yes */
new_certs_dir = $dir/newcerts /* default place for new certs(将来颁发的证书存放路径) */
                             /* #### 这是第四个openssl目录结构中的目录 */
certificate = $dir/cacert.pem  /* The A certificate(CA自己的证书文件) */
serial  = $dir/serial      /* The current serial number(提供序列号的文件)*/
crlnumber  = $dir/crlnumber   /* the current crl number(当前crl序列号) */
crl = $dir/crl.pem         /* The current CRL(当前CRL) */
private_key = $dir/private/cakey.pem  /* The private key(签名时需要的私钥,即CA自己的私钥) */
RANDFILE    = $dir/private/.rand      /* private random number file(提供随机数种子的文件) */
x509_extensions = usr_cert  /* The extentions to add to the cert(添加到证书中的扩展项) */

/* 以下两行是关于证书展示格式的,虽非必须项,但推荐设置。一般就如下格式不用修改 */
name_opt = ca_default        /* Subject Name options*/
cert_opt = ca_default        /* Certificate field options */

/* 以下是copy_extensions扩展项,需谨慎使用 */
# copy_extensions = copy  /* 生成证书时扩展项的copy行为,可设置为none/copy/copyall */
                          /* 不设置该name时默认为none */
                          /* 建议简单使用时设置为none或不设置,且强烈建议不要设置为copyall */
# crl_extensions    = crl_ext
default_days = 365   /* how long to certify for(默认的证书有效期) */
default_crl_days= 30    /* how long before next CRL(CRL的有效期) */
default_md = default   /* use public key default MD(默认摘要算法) */
preserve  = no        /* keep passed DN ordering(Distinguished Name顺序,一般设置为no */
                      /* 设置为yes仅为了和老版本的IE兼容)*/
policy = policy_match /* 证书匹配策略,此处表示引用[ policy_match ]的策略 */
/* 证书匹配策略定义了证书请求的DN字段(field)被CA签署时和CA证书的匹配规则 */
/* 对于CA证书请求,这些匹配规则必须要和父CA完全相同 */

[ policy_match ]
countryName = match     /* match表示请求中填写的该字段信息要和CA证书中的匹配 */
stateOrProvinceName = match
organizationName = match
organizationalUnitName  = optional  /* optional表示该字段信息可提供可不提供 */
commonName = supplied    /* supplied表示该字段信息必须提供 */
emailAddress = optional

/* 以下是添加的扩展项usr_cert的内容*/
[ usr_cert ]
basicConstraints=CA:FALSE   /* 基本约束,CA:FALSE表示该证书不能作为CA证书,即不能给其他人颁发证书*/
/* keyUsage = critical,keyCertSign,cRLSign  # 指定证书的目的,也就是限制证书的用法*/

Root CA 的 Key Usage 通常只有 CRL Sign 和 Certificate Sign,也就是只用来签发和吊销证书(更确切的说是只用来签发和吊销 Intermediate CA Certificates)

Root CA 的扩展字段均没有 extendedKeyUsage, subjectAltName, Certificate Authority Information Access, CRL Distribution Points, Certificate Policies 等字段,而这些字段主要出现在 Intermediate CA 和 User Certificate 中。

对自签名证书进行的扩展称为私有扩展,对于标准的由CA机构签发的证书进行扩展为标准扩展。可扩展项有很多,SAN扩展,密钥标识符,密钥用法和基本约束 等。

SAN

SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名 ,使得一个证书可以支持多个不同域名的解析。subjectAltName 属性项包含了IP地址,域名和电子邮件地址等

先来看一看 Google 是怎样使用 SAN 证书的,下面是 Youtube 网站的证书信息:

这里可以看到这张证书的Common Name 字段是*.google.com,那么为什么这张证书却能够被 www.youtube.com 这个域名所使用呢。原因就是这是一张带有 SAN 扩展的证书,下面是这张证书的 SAN 扩展信息:

这里可以看到,这张证书的 Subject Alternative Name 段中列了一大串的域名,因此这张证书能够被多个域名所使用。对于 Google 这种域名数量较多的公司来说,使用这种类型的证书能够极大的简化网站证书的管理。

在CA证书里,一张证书被多个域名拥有,则要在使用者Subject子项 里放入一个主域名 ,然后在SAN 扩展中放入其他的域名 ,且在SAN扩展中第一项DNS Name使用者Subject子项的主域名

配置SAN ,在req中进行配置,如下:

ini 复制代码
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

这段配置中最重要的是在最后导入名为alt_names 的配置段,因此我们还需要添加一个名为alt_names的配置段:

ini 复制代码
[ alt_names ]
DNS.1 = www.my_server.in
DNS.2 = www.test.com

配置多域名和多IP如下:

ini 复制代码
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = www.my_server.in
DNS.2 = [www.test.com](http://www.test.com)
IP.1 = 192.168.1.1
IP.2 = 192.168.69.14

使用者密钥标识符和CA密钥标识符

CA密钥标识符 也叫授权密钥标识符Authority Key Identifier,表示的是该证书由哪个CA机构发放,还有中间证书的地址 ,CA机构通过中间证书来签发服务器CA证书。使用者密钥标识符 Subject Key Identifier,则是用来标识服务器实体

这两个字段主要是在多证书的场景提供一种快速确定所需要公钥的标记 。Authority Key Identifier唯一标记了该证书签发私钥对应的公钥 ,而Subject Key Identifier则是唯一标记了当前证书中的公钥 。举个例子,一个设备当中可能有好多个证书,但是每一个app可能只需要对应证书中的公钥,那么就可以将这一串公钥标记 内置在app中,证书也不需要完整解析,先去看看对应Key Identifier字段是不是匹配即可。通常计算方式为计算公钥的SHA1值

ini 复制代码
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer

公钥用途

下图为Google的一张v3X509格式证书的某一小段: Key Usage/Extended Key Usage:确定证书中公钥的用途。以前一个为主,extended字段作为补充。例子中的证书主要就是用来做TLS通讯中的数字签名功能。

基本约束(basicConstraints)

基本约束扩展用来标识这个CA证书可不可以签发证书,没错就是由证书来签发其他服务器实体证书 ,而不是通过CA机构签发。因为如果所有的服务器实体证书都由CA机构来签发,那么CA机构的工作量非常大,受信任的CA机构并不多,所以CA机构采取授权给二级CA机构的方式来签发和管理证书申请,也就是说,有授权的二级CA机构也可以为服务器实体签发证书 。受信任的一级CA机构有根证书可以签发二级CA机构证书,也就是中间证书 ,然后二级CA机构可以签发服务器实体证书。基本约束的默认值是false,标识该证书只能用于身份验证,不能签发其他服务器实体证书。还有一个属性Path Length Constraint标识该证书可以签发多少层级的证书。

ini 复制代码
[ v3_req ]
basicConstraints = CA:FALSE

证书策略

下图为Google的一张v3X509格式证书的某一小段: Certificate Policies:以OID格式体现,主要是表现申请证书时的缘由和预期的用途 。图中2.23.140.1.2.2和1.3.6.1.4.1.11129.2.5.3是典型的OID格式,每个点隔开一个属性层级,可以通过 www.oid-info.com/ 进行Object的查询,如2.23.140.1.2.2表示为organization-validated

CT Precertificate SCTs:证书透明度(Certificate Transparency); 这个是标准中没有提到的一个比较新的拓展。CT主要搭配了CA服务器上公开的Log,将记录CA的行为日志 ,而每一个与当前证书相关的日志将被计入此字段,并被CA进行签名。校验阶段可以根据Log ID和timestamp查找日志中的对应操作(对比签名方便查找,类似前文的公钥标记),对证书进行审计以确定当前证书的合法性。该字段的提出主要就是防止CA被入侵者利用后获取大量非法签发证书,而透明性的日志保证了证书的签发是到受到严格监控的。

CRL分发点

我们现在看到上面那张图中间的那一个没有讲解过的字段CRL。

证书的有效期似乎已经能够防止回退之内的攻击了,但是万一在有效期内发生了对应私钥的泄漏事件,该怎么取消掉证书的有效性呢?这时候就需要crl出场了。

CRL,Certificate Revocation List,证书吊销列表,是TLS/SSL协议的一部分,CRL是一个黑名单文件,里面存放了所有CA机构签发的已被吊销的证书,包括每一张证书被吊销被吊销的原因,如果浏览器在校验服务器身份时发现其证书的序列号在CRLs(Certificate Revocation Lists)黑名单中,则表示该证书是已经被吊销了的。

CRL分发点是互联网上的一个地址 ,证书中的扩展项中有CRL分发点,浏览器可以根据扩展项中的CRL分发点来校验该证书是否被吊销,通过该分发点下载全部CRL文件,然后校验出被吊销的证书。

CRL文件下载后的解析在此不做赘述,可以从参考资料当中查阅。 CRL需要依赖服务器的CRL文件和本地的CRL文件,更新可能不及时。还有OCSP的方式。

OCSP

OCSP(Online Certificate Status Protocol),即在线证书状态协议。同样是用来做服务器身份校验,由CA机构管理,使用数字签名技术保护,浏览器可以从中获得证书的吊销状态和吊销原因,方式是由身份校验方浏览器发送OCSP请求,等待响应来完成证书状态获取。当然OCSP的格式同样要遵照标准rfc6960。这里就不细解析OCSP格式了,可以参考标准文档。

当然OCSP协议也有request和response(其实csr就是请求,申请下来的证书就是答复)

一个二级CA签发时的配置如下:

ini 复制代码
[user_ext]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth,serverAuth
authorityInfoAccess=OCSP;URI:http://ocsp.facttrust.com/,caIssuers;URI:http://facttrust.com/certs/FactTrustRSAICA1.der
crlDistributionPoints = URI:http://crl.facttrust.com/FactTrustRSAICA1.crl
certificatePolicies = @pol
[pol]
policyIdentifier = 2.23.140.1.2.1 # DV certificate
CPS.1 = "https://www.facttrust.com/CPS"
END
)

这里面包括了OCSP和CRL两个字段的配置说明

通配符证书

通配符证书广泛用于保护一个独特的完全限定性域名下的多个子域名。这种证书的好处是,它不仅使管理证书变得简单,而且还能帮助你降低管理费用。它能够随时保护你当前和将来的子域名。

  1. 通配符证书能够使你的证书管理变得十分简单,因为一个证书对保护当前和将来所有的子域名完全是足够的。这反过来也能减低你的管理费用,因为你不需要经常购买新的SSL证书。

  2. 通配符证书与正常的SSL证书并没有什么差别,只不过前者支持在完全限定性域名上添加一个通配符字符 "*"作为前缀,这就使得它能够保护多个服务。使用通配符证书并不会涉及任何特定服务,而是它们总是会将一个通配符字符作为前缀加入到域名中。

  3. 选用证书时,建议首选通配符证书,因为相比一个单一用途的证书,它更加灵活,而且还能被应用到多个服务。此外,你也能够进行如添加或替换等的更改,而不用更新或购买一个新的证书。

比如当你为一个域名exmpl.com购买了一个通配符证书时,那么这个证书对www.exmpl.com,xyz.exmpl.com和其他子域名也是有效的。同时,需注意,通配符证书只针对*.exmpl.com有效。

通配符证书与SAN不同, SAN用于利用一个单个的证书保护多个域名。

比如,一个企业如果使用了两个域名,一个abc.exmpl.net作为内部域名,一个abc.exmpl.com作为外部域名,那么他们便只需要一个SAN证书就可以为这两个完全限定性域名的统一通讯提供安全保护了。而如果企业采用一个通配符证书,那么它将需要两个通配符证书,因为.net和.com 是两个不同的域名。

此外,SAN证书不与通配符证书兼容。如果你购买了一个SAN证书,那么在购买证书时,你的所有子域名就必须在证书中登记为一个独特的域名条目。因此,每当你决定添加或移动一个域名时,你就必须更新或在每台主机服务器上重新部署证书。

如果企业使用了一个公有域名和一个私有域名来分离内部和外部名称空间,那么SAN证书是他们最好的办法。而对于那些只使用了一个公有域名的企业来说,通配符证书将是最好的选择。

openssl命令参数解析

ca和x509命令都可以制作,选项类似,下面列出ca的。

openssl ca [-verbose] [-config filename] [-name section] [-gencrl] [-revoke file][-crl_reason reason] [-crl_hold instruction] [-crl_compromise time] [-crl_CA_compromise time ] [ -subj subj] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [-enddate date][-days arg] [-md arg] [-policy arg] [-keyfile arg] [-keyform arg] [-key arg] [-passin arg] [-cert file][-selfsign] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] [-preserveDN] [-batch] [-msie_hack] [-extensions section][-utf8] [-create_serial] [-multivalue-rdn] [-sigopt] [-noemailDN][ -crlsec] [-extfile file] [-updatedb] [ -engine id ]

CA选项操作

-config filename:指定配置文件,此配置文件中包含了证书存放路径、私钥和生成证书控制等信息。如果默认安装openssl,配置文件在/usr/local/ssl/路径下。我们可以先用apps目录下的CA.sh或者CA.pl脚本来建立环境:sh CA.sh -newca,输入后回车就会生成一个demonCA的目录。

-name section:替换配置文件指定的default_ca所表示的内容。

-in file:输入的文件,被用于CA中心签名的证书请求文件路径。

-ss_cert file:指定需要由CA签发的自签名证书路径。

-spkac file:被用于CA签名的文件,里面包含一个Netscape格式的证书公钥值、挑战、附加的域值。

-infiles:处理多个证书请求文件,此选项必须放在最后,此选项后的多个输入都被当作是证书请求文件。

-out file:签名后的证书文件名,不设置的话是默认输出;证书的细节也会给写进去。

-outdir dir:设置证书的输出路径。写出的证书名就是该证书的系列号,后缀是.pem。

-cert file:指定CA文件。

-keyfile arg:指定签名请求文件的私钥文件。

-keyform arg:证书私钥文件的格式,pem以及der。

-key arg:指定私钥解密口令。在有的系统上(Unix),可以用ps看到你输入的指令,所以这个参数要小心点用。

-selfsign:是表明颁发者的密钥(由B<-keyfile)给定)来签名证书请求文件。证书请求文件被不同的密钥所签名则忽略掉。如果B<-spkac>, B<-ss_cert> or B<-gencrl>给定了值,则B<-selfsign>将会被忽略。

-passin arg:指定私钥口令来源。

-verbose:打印附加信息值。

-notext:在证书文件中,不输出文本格式的证书信息。

-startdate date:设置证书生效起始时间,采用UTCTime格式:YYMMDDHHMMSSZ。

-enddate date:设置证书失效时间,采用UTCTime格式:YYMMDDHHMMSSZ。

-days arg:设置证书有效期,arg为天数。

-md arg:摘要算法:md5、sha1 或 mdc2。这个选项应用于CRLs。

-policy arg:指定CA策略,arg为配置文件中的策略段。

-msie_hack:这是一个很古老的选项来使B支持很老的IE证书等级控制"certenr3"。它用UniversalStrings来表明所有事情。目前很少使用。

-preserveDN:证书中的DN顺序由配置文件来决定,如果设置此选项,则证书中DN的顺序与请求文件一致。

-noemailDN:如果在请求文件中的DN存在的话,证书的DN可以包含EMAIL域。无论怎样是一个很少的政策来设置证书中的邮件信息值。当这个选项设置后,EMAIL域将从证书申请者的信息中移除,然后设置到额外信息中。目前很少使用。

-batch:设置为批处理的模式,在这个模式中,没有问题会被问,所有的证书请求文件会被自动的颁发。

-extensions section:当一个证书被颁发了,配置文件中的这个字段两会添加到证书中。如果没有如果没有扩展信息字段被提出,则将会创建一个V1格式的证书。如果额外信息字段被提出(即使为空),则创建一个V3格式的证书。可以查看wL<x509v3_config(5)|x509v3_config(5)>手册来了解详细的额外信息字段格式。

-extfile file:附加的证书扩展项信息值。

-engine id:指定硬件引擎。

-subj subj:证书拥有者的信息值,取代证书请求文件中的申请者的信息值。格式必须为/CN=cn/O=test/OU=t/cn=forxy,忽略空格已经\后的字符。

-utf8:表明任何输入都必须是utf8编码,默认为ASCII编码。这就意味着用户的终端输入和配置文件都必须是有效的UTF8字符串。

-multivalue-rdn:当采用-subj参数时,支持多值RDN,比如:DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe。如果-multivalue-rdn没有被使用,UID的值为123456+CN=John Doe。

-create_serial:是否创建证书序列号。

-sigopt:签名选项值。

CRL操作

-gencrl:这个选项根据信息的索引文件来生成CRL文件。

-crldays days:设置下次CRL发布时间,days为下次发布时间距现在的天数。即设置的是CRL中的nextUpdate域的值。

-crlhours hours:设置下次CRL发布时间,hours为下次发布时间距现在的小时数。

-revoke file:要撤销证书,file文件中包含了证书。

-crl_reason reason:设置CRLv2撤销原因,原因可以为:unspecified、keyCompromise、CACompromise、affiliationChanged、superseded、cessationOfOperation、certificateHold和removeFromCRL。这些原因区分大小写。匹配CRL中的原因有可能会造成程序迟钝。实际上,removeFromCRL不是特别的有效,因为它仅仅只能用于delta CRLs。

  • crl_hold instruction:当crl撤销原因为certificateHold时(证书挂起),采用此项来指定用户行为。instruction的值可以是:holdInstructionNone、holdInstructionCallIssuer和holdInstructionReject。比如用选项:-crl_hold holdInstructionReject时,指明用户必须拒绝挂起的证书。

-crl_compromise time:当crl撤销原因为keyCompromise时(密钥泄露),设置密钥泄露时间time。Time 采用通用时间格式:YYYYMMDDHHMMSSZ。

-crl_CA_compromise time:当crl撤销原因为CACompromise时(CA被破坏,设置其时间,格式同-crl_compromise time。

-crlexts section:指定CRL扩展项。section为配置文件中的段,如果不提供crl扩展项段,则生成第一版本的crl,如果提供,则生成第二版本的crl。

配置文件选项

对ca命令来说,配置文件中的字段包含选项如下:如果B<-name>命令行选项被使用,则字段名字被使用。否则配置文件中的字段必须在B<default_ca>选项中。除B<default_ca>之外,在CA字段中还有其它选项需要读取目录:

RANDFILE

Preserve

msie_hack

例外的是B选项,它有可能是个bug并且有可能在将来会被释放。

很多配置文件中的选项时命令行选项。即配置文件中的选项被使用,就是使用命令行命令。一个选项将被作为命令来描述,它们必须在配置文件或命令行中被提出使用。

B<oid_file>:这个指定的文件包含了附加的B。文件行由数字型的、用空格隔开的对象标识符表单、用空格隔开的短名字以及长名字组成。

B<oid_section>:它指定了一个字段,该字段配置文件中包含的额外的对象标识符。每一行由对象标识符的短名字和数字表单组成。在这个选项中,短名字和长名字都是一样的值。

B<new_certs_dir>:和B<-outdir>命令行选项一样。指定新的证书目录用于放置新地证书。

B:和B<-cert>命令行选项一样。给出包含CA证书的目录。

B<private_key>:和B<-keyfile>命令行选项一样。给出包含CA私钥文件的目录。

B:读取和写入随机数种子信息的文件,或者是一个EGD接口。

B<default_days>:和B<-days>命令行选项一样。证书的有效期天数。

B<default_startdate>:和B<-startdate>命令行选项一样。证书有效期的开始时间。如果没有被设置,则默认的是当前时间。

B<default_enddate>:和B<-enddate> 命令行选项一样。不是这个选项就是B<default_days>(命令行也一样)必须设置。

B<default_crl_hours default_crl_days>:和B<-crlhours> 和 the B<-crldays>命令行选项一样。它们仅仅当命令行没有使用时才能够使用。为了产生一个CRL,至少其中的一个必须被设置值。

B<default_md>:和B<-md> 命令行选项一样。消息摘要算法。

B:文本数据库文件的位置。这个文件必须被提出即使它为空。

B<unique_subject>:如果给出的值是B,有效的证书实体在数据库中有唯一的申请者信息值。如果给出的值为B,多个有效的证书实体有可能有相同的申请者信息值。默认值是B,为了和老的版本(pre 0.9.8)相兼容。无论怎样,为了让制造一个CA证书变得容易,推荐用的值是B,特别是与B<-selfsign>命令行一起使用的时候。

B:一个文本信息,包含了下一个即将使用的十六进制的证书序列号。这个文件必须被提出并且要包含一个有效的序列号。

B:一个文本信息,包含了下一个即将使用的十六进制的CRL数值。如果这个文件存在,CRL中的数值将会被替代。如果这个文件被提出,则必须包含一个有效的CRL数值。

B<x509_extensions>:和B<-extensions> 命令行选项一样。

B<crl_extensions>:和B<-crlexts> 命令行选项一样。

B: 和B<-preserveDN> 命令行选项一样。

B<email_in_dn>:和B<-noemailDN> 命令行选项一样。如果你想EMAIL域从证书DN信息中移除,就简单的设置为'no'。如果没有被提出,则默认的是允许EMAIL域存在证书DN中。

B<msie_hack>:和B<-msie_hack>命令行选项一样。

B:和B<- policy >命令行选项一样。

B<name_opt>, B<cert_opt>:当询问用户是否签名时,这两个选项决定证书细节显示的格式。B命令中支持所有的选项,所以B<name_opt>和B<cert_opt>可以在这里使用,把B<no_signame> 和 B<no_sigdump>永久的设置除外,并不能够显示(这是因为证书签名值不能够被显示,因为在这点证书已经被签名了)。

B<copy_extensions>:决定证书请求文件中的额外信息怎么被处理。如果设置为B或这个选项没有被提出,则忽视掉和不复制到证书中。如果设置为B,则请求文件中提出的任何额外信息(证书中已经有的除外)将被复制到证书中。如果设置为B,则所有的额外信息全部复制到证书中:如果证书的额外信息值存在,则删除掉它。在使用这个命令之前,先看看警告。

POLICY格式:

POLICY字段由一些列相似证书的DN域的变量组成。如果它的值是"match",则域值必须在证书中匹配相同的域值。如果它的值为"supplied",则它必须被提出。如果它的值为"optional",有可能会被提出。在policy字段中任何域不被提及则默默地删除掉,除非B<-preserveDN>选项被提出,但是这就会被当做一个故意的行为。

SPACK格式:

输入的B<-spkac>命令行选项是一个NetScape格式已经签名了的公钥和一个挑战。它通常是来源于B标记,并在HTML表单中创建一个新的私钥。可以用B命令来创建SPKACS。

这个文件必须包含变量SPKACS来设置SPKAC的值,也可以作为一个名字对来组成DN的一个部件。如果米需要包含同样地组件两次,可以在这之前添加一个数字或一个"."。

Tips

这一章当中我们讲解了config文件中的参数细节,以及openssl命令中的各种选项,其实真正常用的选项并没有这么多,在后篇中我们将展示实际的操作流程,需要快速完成工作的朋友可以直接复制后篇中的命令和文件内容,直接制作即可。

相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
小时前端2 天前
HTTPS 页面加载 HTTP 脚本被拦?同源代理来救场
前端·https
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全