背景
最近接到一個任務(wù):由于我們的產(chǎn)品涉及使用數(shù)字證書進(jìn)行簽名、簽章,如果需要使得簽名簽章暗具有法律效力,就必須使用權(quán)威CA中心頒發(fā)的數(shù)字證書,就需要小錢錢;但是對于測試來說,就可以適當(dāng)減少小錢錢的使用;于是,可以考慮自建證書服務(wù)器,自己頒發(fā)證書,然后就使用自建證書服務(wù)器的頒發(fā)的證書測試就好了!
為了完成這個目的,第一步就是搭建證書服務(wù)器,于是我選了臺linux服務(wù)器進(jìn)行配置。
關(guān)于centos linux服務(wù)器系統(tǒng)配置證書服務(wù)器的資料網(wǎng)上有很多,過程中也踩了很多坑。不能說網(wǎng)上資料不對,只能說對自己不適用,嘿嘿嘿嘿 。 針對這個任務(wù)的完成過程以及中間涉及的知識點(diǎn)以及注意事項(xiàng),我將行程一個系列來介紹。
本文是配置證書服務(wù)器的介紹。
一:安裝openssl工具
rpm -qa openssl
yum install -y openssl
如上圖所示,通過yum install -y openssl 安裝openssl工具。安裝好了openssl工具之后,默認(rèn)安裝目錄為:/etc/pki/目錄,
其默認(rèn)配置文件目錄為:?/etc/pki/tls/openssl.cnf。該文件主要設(shè)置了證書請求、簽名、crl相關(guān)的配置。主要相關(guān)的偽命令為ca和req。后將出一個openssl.cnf的詳細(xì)介紹。
1.1openssl.cnf文件簡介
該配置文件主要的作用如下:
1.1.1配置默認(rèn)路徑
配置默認(rèn)路徑:包括默認(rèn)的CA路徑dir、證書路徑certs、crl路徑crl_dir、根證書路徑certificate、serial文件路徑serial、私鑰路徑private_key等。生成根證書的私鑰、證書時可以根據(jù)此配置文件里的設(shè)置設(shè)定文件名,也可以根據(jù)自己的需要自行設(shè)置文件名,然后再對此配置文件進(jìn)行修改,將對應(yīng)的文件名信息改正確。
? ? ? ? 一般需要設(shè)置的就是:
1)dir???????????? = /etc/pki/CA? ? 設(shè)定這個路徑 為home路徑,所有ca相關(guān)的證書都在這個文件夾里
2)certificate???? = $dir/XXXX? 設(shè)定根證書文件路徑 ,這是自建證書服務(wù)器時需要去生成的。
3)serial????????? = $dir/serial? 這個 就建議就用serial做文件名,即需要在這個路徑下生成一個名為serial的文件,并且需要向這個文件中添加初始值?
4)private_key???? = $dir/private/XXXX? # The private key 設(shè)定根證書對應(yīng)的私鑰文件路徑
#################################################################### [ ca ] default_ca????? = CA_default??????????? # The default ca section #################################################################### [ CA_default ] dir???????????? = /etc/pki/CA?????????? # Where everything is kept certs?????????? = $dir/certs??????????? # Where the issued certs are kept crl_dir???????? = $dir/crl????????????? # Where the issued crl are kept database??????? = $dir/index.txt??????? # database index file. #unique_subject = no??????????????????? # Set to 'no' to allow creation of ??????????????????????????????????????? # several ctificates with same subject. new_certs_dir?? = $dir/newcerts???????? # default place for new certs. certificate???? = $dir/cacert.pem?????? # The CA certificate serial????????? = $dir/serial?????????? # The current serial number crlnumber?????? = $dir/crlnumber??????? # the current crl number ??????? ????????????????????????????????# must be commented out to leave a V1 CRL crl???????????? = $dir/crl.pem????????? # The current CRL private_key???? = $dir/private/cakey.pem# The private key RANDFILE??????? = $dir/private/.rand??? # private random number file |
1.1.2規(guī)定簽發(fā)的證書的用途
如規(guī)定證書中的密鑰用途:
這個證書用途的體現(xiàn)在:當(dāng)使用證書瀏覽器查看時看到的密鑰用法,如通過瀏覽器---internet選項(xiàng)---內(nèi)容---證書---詳細(xì)信息中顯示的:
證書的用途一般分為兩種:加密證書與簽名證書,如常規(guī)的用于https驗(yàn)證的就只需要加密作用就行;,本次中需要的是簽名證書,對于簽名證書來說,其用途必須包含:Digital Signature。
這個需要在配置文件中開啟,默認(rèn)是不開放注釋的狀態(tài)。
要將其開放出來:
# This is typical in keyUsage for a client certificate. keyUsage = nonRepudiation, digitalSignature, keyEncipherment |
1.1.3規(guī)定證書信息的匹配情況
具體體現(xiàn)在證書生成證書請求文件時設(shè)定的要與根證書設(shè)定的一樣,如果設(shè)定不一樣,在做證書簽名時就會報(bào)錯,提示對應(yīng)設(shè)定不匹配。
如:以下配置就要求?countryName、stateOrProvinceName、organizationName三個都是一樣的。
# A few difference way of specifying how similar the request should look # For type CA, the listed attributes must be the same, and the optional # and supplied fields are just that :-) policy????????? = policy_match # For the CA policy [ policy_match ] countryName???????????? = match stateOrProvinceName???? = match organizationName??????? = match organizationalUnitName? = optional commonName????????????? = supplied emailAddress??????????? = optional |
二:生成根證書
生成證書的步驟是:生成私鑰文件---》生成證書請求文件---》生成公鑰證書文件并進(jìn)行簽名。
生成證書的過程中會涉及多個文件,如:私鑰文件、證書請求文件、公鑰證書文件等,非常容易搞混淆,一定要區(qū)分清楚,建議就從文件名、后綴加以區(qū)分,否則就真的非常容易踩坑。如私鑰就用xxxKey.pem;證書請求文件:xxxreq.pem、公鑰證書文件:xxxCert.crt。一定要搞清楚自己的文件到底是哪種類型的!網(wǎng)上的資料很多就是,一下是這個后綴一下又是那個后綴,會搞懵逼的。
2.1生成根證書的私鑰
openssl genrsa 命令是會用來生成 RSA 私有秘鑰,不會生成公鑰,因?yàn)楣€提取自私鑰。生成私鑰時是可以指定私鑰長度和密碼保護(hù)。如果需要查看公鑰或生成公鑰,可以使用 openssl rsa 命令。
?openssl genrsa [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des]
可以通過openssl genrsa ?命令查看命令具體參數(shù)與用法:
[root@ecs-be9a CA]#openssl genrsa ?
usage: genrsa [args] [numbits]
-des encrypt the generated key with DES in cbc mode
-des3 encrypt the generated key with DES in ede cbc mode (168 bit key)
-idea encrypt the generated key with IDEA in cbc mode
-seed
encrypt PEM output with cbc seed
-aes128, -aes192, -aes256
encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
encrypt PEM output with cbc camellia
-out file output the key to 'file
-passout arg output file pass phrase source
-f4 use F4 (0x10001) for the E value
-3 use 3 for the E value
-engine e use engine e, possibly a hardware device.
-rand file:file:...
load the file (or the files in the directory) into
the random number generator
[root@ecs-be9a CA]#
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048? 生成私鑰,私鑰中含有公鑰,如果需要公鑰,需要單獨(dú)提取公鑰 。
如果在openssl genrsa 命令中指定加密算法如 -des3 ,則會提示輸入私鑰保護(hù)密碼,那么下次使用這個私鑰文件的時候就會提示輸入私鑰密碼,如命令:openssl genrsa -des3 -out test1.key 2048執(zhí)行效果如下圖所示:
2.2生成根證書的證書請求文件
2.2.1準(zhǔn)備
在生成證書請求文件之前,需要形成記錄數(shù)據(jù)的文件index.txt以及最初始的自簽名證書的序列號可serial文件:
?touch index.txt? #生成數(shù)據(jù)記錄文件index.txt
向serial中寫入證書初始序列號,這個serial文件路徑就按照openssl.cnf配置文件中的路徑生成就可以。網(wǎng)上很多是向serial中寫入01,像這樣:
但是,實(shí)際上,這個序列號最終是顯示到自簽名的根證書的序列號里的,像這樣:
并且對于x509證書來說,序列號應(yīng)該是一個32位的類似uuid的標(biāo)志證書序列號的,因此,我個人不建議直接向serial中寫01,就隨便一個32位的如:
a87a2d6dec4d07bd9095c9b2ee73b2ea
9579518878956341ccc51615197eb0f3
51b55180d6da29cdbaddf60d9430230a
5ce48cc7f764ad17aa6fe2a1ffab06d5
dd7b4730fa89a66b8edd977415a8b688
1ce7727ba8fb7be4dca36c354d1ae61f
因此,在我多次嘗試,證書簽名還是驗(yàn)證不通過證書鏈驗(yàn)證的情況下,我是這樣操作的:
?echo a87a2d6dec4d07bd9095c9b2ee73b2ea > serial
不過,目前位置,我暫時也能確定這個屬性對于我的需求是否有影響。大家需要的時候也可以再觀察觀察。
2.2.2生成根證書的證書請求文件
創(chuàng)建根證書請求文件使用openssl req命令。
該命令主要的功能有,生成證書請求文件, 查看驗(yàn)證證書請求文件,還有就是生成自簽名證書。生成證書請求需要什么:申請者需要將自己的信息及其公鑰放入證書請求中。但在實(shí)際操作過程中,所需要提供的是私鑰而非公鑰,建議使用CA的私鑰文件/etc/pki/CA/private/cakey.pem來創(chuàng)建待自簽署的證書請求文件,雖非必須,但方便管理。在生成證書請求文件時,就會根據(jù)配置文件里要求的整合素必須項(xiàng)進(jìn)行輸入設(shè)置。另外,還需要將提供的數(shù)據(jù)進(jìn)行數(shù)字簽名
(使用單向加密),保證該證書請求文件的完整性和一致性,防止他人盜取后進(jìn)行篡改。
openssl req命令參數(shù)說明:
??? -new??? :說明生成證書請求文件 ???? -x509?? :說明生成自簽名證書 ???? -key??? :指定已有的秘鑰文件生成秘鑰請求,只與生成證書請求選項(xiàng)-new配合。 ???? -newkey :-newkey是與-key互斥的,-newkey是指在生成證書請求或者自簽名證書的時候自動生成密鑰, ????????????? 然后生成的密鑰名稱由-keyout參數(shù)指定。當(dāng)指定newkey選項(xiàng)時,后面指定rsa:bits說明產(chǎn)生 ????????????? rsa密鑰,位數(shù)由bits指定。 如果沒有指定選項(xiàng)-key和-newkey,默認(rèn)自動生成秘鑰。 ???? -out??? :-out 指定生成的證書請求或者自簽名證書名稱 ???? -config :默認(rèn)參數(shù)在ubuntu上為 /etc/pki/tls/openssl.cnf, 可以使用-config指定特殊路徑的配置文件 ???? -nodes? :如果指定-newkey自動生成秘鑰,那么-nodes選項(xiàng)說明生成的秘鑰不需要加密,即不需要輸入passphase.?? ???? -batch? :指定非交互模式,直接讀取config文件配置參數(shù),或者使用默認(rèn)參數(shù)值????? |
?openssl req -new -x509 -key ?/etc/pki/CA/private/cakey.pem -out careq.pem -days 730 -config ?/etc/pki/tls/openssl.cnf? ?#使用-key指定使用的根證書的私鑰文件 ?/etc/pki/CA/private/cakey.pem,-config指定配置文件?/etc/pki/tls/openssl.cnf ; -days 730指定有效期為730天 ;-out careq.pem指定輸出文件為當(dāng)前命令執(zhí)行目錄下careq.pem
?
生成證書請求文件時,要求輸入配置文件里設(shè)定的必須的信息值。如在上文中我配置了要求countryName、stateOrProvinceName、organizationName三個是一致的,因此此時這三者是需要填寫,并且記住的。其中對于最終生成的根證書來說這些填寫的信息最終體現(xiàn)在證書的詳細(xì)信息中:
在證書詳細(xì)信息中、各參數(shù)含義如下:
C-----國家(Country Name)
S----省份(State or Province Name)
L----城市(Locality Name)
O----公司(Organization Name)
OU----部門(Organizational Unit Name)
CN----通用名(Common Name)
emailAddress----郵箱(Email Address)
通過 openssl req 命令生成證書請求文件 :
2.3生成根證書公鑰文件并進(jìn)行自簽名
要提供CA自己的證書,測試環(huán)境下CA只能自簽署,使用"openssl req -x509"、"openssl x509"和"openssl ca"都可以自簽署證書請求文件。 自簽署的證書就是自簽名證書,自簽名證書的體現(xiàn)就是:查看證書時,證書的頒發(fā)給與頒發(fā)者是一致的,如下圖所示:
openssl ca命令用法:
openssl ca [-verbose] [-config filename] [-name section] [-startdate date] [-enddate date] [-days arg] [-md arg] [-policy arg] [-keyfile arg] [-key arg] [-passin arg] [-cert file] [-selfsign] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-ss_cert file] [-preserveDN] [-noemailDN] [-batch] [-extensions section] [-extfile section] [-subj arg] [-utf8] |
【選項(xiàng)說明:】 -config filename :指定要使用的配置文件,指定后將忽略openssl.cnf中指定的關(guān)于ca的配置選項(xiàng)。 -name section??? :指定使用配置文件中的那個section。指定后將忽略openssl.cnf中的default_ca段。 -in filename???? :指定要被CA簽署的單個證書請求文件。根CA為其他證書簽署時使用。 -infiles???????? :該選項(xiàng)只能是最后一個選項(xiàng),該選項(xiàng)所接的所有參數(shù)都被認(rèn)為是要被簽署的證書請求文件,即一次性簽署多個請求文件時使用的選項(xiàng)。 -selfsign??????? :自簽署。指定-ss_cert選項(xiàng)時該選項(xiàng)被忽略。 -ss_cert filename:將被CA自簽署的單個證書文件。也就是說要重新簽署證書。 -out filename??? :證書的輸出文件,同時也會輸出到屏幕。不指定時默認(rèn)輸出到stdout。 -outdir dir_name :證書的輸出目錄。指定該選項(xiàng)時,將自動在此目錄下生成一個文件名包含16進(jìn)制serial值的".pem"證書文件。 -cert??????????? :CA自己的證書文件。 -keyfile filename:指定簽署證書請求時的私鑰文件,即CA自己的私鑰文件。 -key passwd_value:指定私鑰的加密密碼。 -passin arg????? :傳遞解密密碼 -verbose???????? :打印操作執(zhí)行時的詳細(xì)信息 -notext????????? :禁止以文本格式將證書輸出到"-out"指定的文件中 -days arg??????? :證書有效期限,從創(chuàng)建時刻開始算startdate,有效期結(jié)束點(diǎn)為enddate。 -startdate?????? :自定義證書的開始時間,和"-enddate"一起使用可以推算出證書有效期。 -enddate???????? :自定義證書的結(jié)束時間。 -md alg????????? :指定單向加密算法 -policy arg????? :該選項(xiàng)是配置文件中的section內(nèi)容,該選項(xiàng)指定了證書信息中的field部分是否需要強(qiáng)制提供還是要強(qiáng)制匹配, ???????????????? :或者可提供可不提供。詳細(xì)的見配置文件說明。 -extensions section:指定當(dāng)前創(chuàng)建的證書使用配置文件中的哪個section作為擴(kuò)展屬性。 -batch?????????? :簽署時使用批處理模式,即非交互模式。該模式下不會有兩次詢問(是否簽署、是否提交)。 -subj arg??????? :替換證書請求中的subject,格式/type0=value0/type1=value1/type2=... |
openssl x509 命令:
該X509命令是一個多目的證書效用。它可用于顯示證書信息、將證書轉(zhuǎn)換為各種形式、像“迷你 CA”一樣簽署證書請求或編輯證書信任設(shè)置。
ca命令是用于簽署證書的,所以它所需要的文件除了配置文件外就是私鑰文件和證書請求文件,而簽名后生成的文件是證書文件,因此使用"-in"指定的對象是待簽署文件,"-infiles"則是指定多個待簽署文件,"-keyfile"是指定私鑰文件,"-out"是指定輸出的證書文件。
執(zhí)行命令:
openssl req -x509 -new -key /etc/pki/CA/private/cakey.pem -in careq.pem -out caroot.crt -days 3650
進(jìn)行自簽名:
前面我們提到,在證書的配置文件中規(guī)定了證書的信息匹配問題,主要體現(xiàn)在這里,生成證書請求文件,當(dāng)輸入的信息不匹配時可能會報(bào)錯。
做完自簽名之后,我們就可以得到一個自簽名根證書了。
在完全生成了需要的根證書的私鑰文件、證書請求文件、根證書之后,我們就可以再次確認(rèn)一下配置文件?/etc/pki/tls/openssl.cnf里的私鑰文件路徑、根證書路徑是否是對的。
做完以上操作就已經(jīng)完成了根證書的設(shè)置,接下來只需要進(jìn)行需要使用的這個證書的私鑰生成、證書請求文件的生成、公鑰證書的生成、生成需要的pfx格式證書文件、抽取需要的證書鏈p7b文件,最后通過結(jié)合使用pfx格式證書以及p7b證書鏈,只要能完整的驗(yàn)證證書的完整性,證書目的是可用于簽名的就算是達(dá)到目的了。
如果是要配置https就可以參考下面的
三、配置apache的https模式(此步驟對于我的目的而言,沒啥用,作為知識點(diǎn)放著)
只是作為知識內(nèi)容放這里,方便后續(xù)需要的時候參考。
首先要安裝apache的https模式,執(zhí)行:yum install -y httpd mod_ssl
這種方式安裝的文件目錄為/var/www/
為了驗(yàn)證后續(xù)我們是否配置好了https,我們需要有一個驗(yàn)證機(jī)制。簡單驗(yàn)證就是建立一個html文件,之后只要通過https://IP/能訪問到這個html的內(nèi)容就可以了。
echo "this is CA" >> /var/www/html/index.html? 注意命令中 的空格
此時我們可以重新生成用于配置https的相關(guān)證書文件:私鑰文件、證書請求文件、公鑰證書文件;也可以直接使用我們前面已經(jīng)產(chǎn)生的根證書文件。? 配置的關(guān)鍵點(diǎn)在于:將生成的私鑰文件、以及公鑰證書文件的路徑寫入 配置文件:/etc/httpd/conf.d/ssl.conf中。
為了避免證書文件被刪除,可以將生成的私鑰文件以及公鑰證書文件拷貝一下:
將前面生成的公鑰證書文件caroot.crt復(fù)制到/root/ssl目錄下:
pwd
?cp /etc/pki/CA/caroot.crt /root/ssl/
cp /etc/pki/CA/private/cakey.pem /root/ssl/
vi /etc/httpd/conf.d/ssl.conf
再? 文件里找到 如下內(nèi)容:
# ? Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. ?If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. ?Note that a kill -HUP will prompt again. ?A new
# certificate can be generated using the genkey(1) command.
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /root/ssl/httpd.crt# ? Server Private Key:
# ? If the key is not combined with the certificate, use this
# ? directive to point at the key file. ?Keep in mind that if
# ? you've both a RSA and a DSA private key you can configure
# ? both in parallel (to also allow the use of DSA ciphers, etc.)
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /root/ssl/httpd.key
將SSLCertificateFile以及SSLCertificateKeyFile 分別指向剛剛復(fù)制過來的公鑰證書文件以及私鑰文件,修改之后如下圖所示:
至此再確認(rèn)一下防火墻設(shè)置、確認(rèn)selinux的設(shè)定,再啟動httpd服務(wù)就可以進(jìn)行驗(yàn)證了。(當(dāng)然如果要深入應(yīng)用,我個人認(rèn)為還需要再深入研究一下這個?/etc/httpd/conf.d/ssl.conf
配置文件)
systemctl status firewalld
setenforce 0
實(shí)際使用過程中,需要考慮開啟防火墻,而不是簡單粗暴的關(guān)閉防火墻,所以如果防火墻開著,需要考慮將端口號放行,具體可參考我其他的博文或者網(wǎng)上相關(guān)的資料。
systemctl start httpd
systemctl status httpd
此時,通過瀏覽器訪問:https://IP/
這樣就表示成功了!
當(dāng)然如果配置不對,那么就會這樣,啟動不起來:
四:生成簽名證書
4.1生成簽名證書私鑰文件
需要使用的證書生成私鑰文件的方法都是一樣的:
openssl genrsa -des3 -out testuser2key.pem 2048??-des3參數(shù)表示加密算法為des3 需要輸入即將生成這個私鑰文件testuser2key.pem的加密密碼,請牢記這個密碼,后續(xù)需要使用到。
現(xiàn)象如下 ,提示輸入加密密碼并確認(rèn)輸入,兩次輸入的信息必須是一致的。
4.2生成簽名證書的證書請求文件
生成需要使用的簽名證書私鑰對應(yīng)的證書請求文件:
openssl??req -new -key testuser2key.pem -out testuser2req.csr -days 365 -config /etc/pki/tls/openssl.cnf
?
-key 指定當(dāng)前使用的私鑰文件、-out 指定當(dāng)前要生成的證書請求文件的名字,如上述命令均為指向當(dāng)前目錄下的文件。當(dāng)使用的密鑰文件有加密時,就會提示輸入加密使用的密碼。之后會提示輸入這個證書請求文件的主要信息如:
Country Name (2 letter code) [CN]:CN
State or Province Name (full name) []:ChongQing
Locality Name (eg, city) [chongqing]:chongqing
Organization Name (eg, company) [MyOrganization]:MyOrganization
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:userweil
這些信息最終會在證書的詳細(xì)信息的使用者中展示,如下圖所示就是在生成證書請求文件時設(shè)置的Common Name為testuser1最終簽發(fā)的證書,Common Name就是指的頒發(fā)給
整體過程圖如下:
4.3CA簽發(fā) 簽名證書的公鑰證書文件
生成簽名證書的公鑰證書文件,在生成根證書的時候采用的是自簽名,所以是使用的根證書自己的私鑰去做簽名,如下圖所示:
而到這里需要的簽名證書的公鑰證書文件的時候就需要注意:是用的簽名證書的證書請求文件、根證書的公鑰證書文件、以及根證書的私鑰文件來進(jìn)行簽發(fā):
?openssl ca -in testuser2req.csr -cert /etc/pki/CA/caroot.crt -keyfile /etc/pki/CA/private/cakey.pem -out testuser2.crt -config /etc/pki/tls/openssl.cnf
?
-in 指定當(dāng)前使用的證書請求文件;-cert 指定當(dāng)前簽發(fā)用的根證書的公鑰證書文件,-keyfile 指向當(dāng)前使用的根證書公鑰文件對應(yīng)的根證書私鑰文件;-out 指定即將生成的公鑰證書文件名,不指定目錄的情況下均為當(dāng)前目錄。
這樣就得到了crt后綴的公鑰證書文件了。
4.4生成簽名證書的pfx格式文件
?openssl pkcs12 -export -inkey testuser2key.pem -in testuser2.crt -out testuser2.pfx
-in 使用的是簽名通過證書請求文件由CA簽發(fā)的公鑰證書文件-inkey 使用的是私鑰文件
-out 指定生成的pfx格式文件 不指定路徑為當(dāng)前目錄下
4.4.1檢測生成的證書
? ? ? ? 將生成的pfx文件testuser2.pfx、根證書文件caroot.crt通過windows客戶端安裝檢查最終結(jié)果如下:
1、安裝pfx文件:
此時安裝的這個pfx屬于個人證書自動選擇存儲區(qū)域即可:
如果安裝的是根證書,則要自行選擇,將其安裝到受信任的根證書頒發(fā)機(jī)構(gòu)中。
查看證書:
生成證書請求文件輸入的Common Name信息就是頒發(fā)給顯示的,詳細(xì)信息里的使用者信息就是全部輸入的信息:
當(dāng)對應(yīng)的根證書也安裝時就能進(jìn)行驗(yàn)證:
安裝的根證書存儲位置:受信任的根證書頒發(fā)機(jī)構(gòu)里,頒發(fā)給與頒發(fā)者信息完全一致,是一個自簽名的根證書。
證書密鑰用法含Digital Signature:
五、生成根證書的證書鏈p7b文件
鑒于我的任務(wù)還需要使用p7b文件去驗(yàn)證證書鏈,這里說的證書鏈必然是要包含到根證書信息的,因此使用的是根證書的相關(guān)文件進(jìn)行抽取證書鏈。可千萬別像我傻兮兮的抽的個人證書的,把自己坑的深。。。。
生成p7b命令語法:
openssl? crl2pkcs7? [-inform PEM|DER ] [-outform PEM|DER ] [-in filename ]
[-out filename ] [-certfile filename ] [-nocrl ]
選項(xiàng)說明: -inform PEM|DER:輸入文件的格式。DER是DER編碼的CRL對象。PEM(默認(rèn)的格式)是base64編碼的CRL對象。 -outform PEM|DER:指定文件的輸出格式,跟-inform的意思一樣。 ?-in filename:指定CRL文件,不設(shè)置此項(xiàng)則從標(biāo)準(zhǔn)輸入中獲取。 -out filename:指定輸出文件,不設(shè)置此項(xiàng)則輸入到標(biāo)準(zhǔn)輸出。 -certfile filename:指定證書文件,PEM格式的證書文件可以包含多個證書,此選項(xiàng)可以多次使用。 -nocrl:不處理crl。一般情況下,輸出文件中包含crl信息,設(shè)置此選項(xiàng)時,讀取時忽略CRL信息,生成的信息不保護(hù)CRL信息。 |
要導(dǎo)出的是根證書的證書鏈文件:
openssl crl2pkcs7 -certfile caroot.crt -outform DER -out caroot.p7b -nocrl
至此需要的簽名證書 testuser2.pfx、根證書鏈caroot.p7b均已生成,經(jīng)過驗(yàn)證我的應(yīng)用中可用。文章來源:http://www.zghlxwxcb.cn/news/detail-793531.html
寫在最后:這個過程說簡單也挺難的,很多資料都是屬于復(fù)制粘貼,有些時候還遇到各種報(bào)錯,需要更多的時間與精力去研究,并且要研究透徹的話就需要加入自己的思考,每一步為什么是這樣,怎么做才是對的,這種操作為什么不行.....各種各樣的,過程中差點(diǎn)就放棄了,因?yàn)檠芯苛撕芫镁褪遣荒苡?。還好最后告訴自己:再試一下,然后歷時一個星期+,終于搞定了?。?!.....有時候堅(jiān)持不一定有用,不一定是對的,但是想放棄的時候再堅(jiān)持一下還是有用的。文章來源地址http://www.zghlxwxcb.cn/news/detail-793531.html
到了這里,關(guān)于centos7 使用openssl 配置證書服務(wù)器并頒發(fā)證書(史上最詳細(xì)版本)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!