openssl證書(shū)申請(qǐng).doc_第1頁(yè)
openssl證書(shū)申請(qǐng).doc_第2頁(yè)
openssl證書(shū)申請(qǐng).doc_第3頁(yè)
openssl證書(shū)申請(qǐng).doc_第4頁(yè)
openssl證書(shū)申請(qǐng).doc_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1. 根證書(shū)的申請(qǐng)準(zhǔn)備根證書(shū)準(zhǔn)備一些空目錄和文件,作用如下: certs/ 保存頒發(fā)的所有證書(shū)的副本 index.txt 跟蹤已頒發(fā)的證書(shū),初始為空 f openssl和根證書(shū)的配置文件 private/ CA證書(shū)的私鑰 serial 最后一次頒發(fā)的證書(shū)的序列號(hào),初始值01,也可以是00等其它值 f內(nèi)容如下,我一氣兒弄了10年的有效期: ca default_ca = FwolfCA FwolfCA dir = /big2/tools/cacertificate = $dir/cacert.pemdatabase = $dir/index.txtnew_certs_dir = $dir/certsprivate_key = $dir/private/cakey.pemserial = $dir/serialdefault_crl_days= 7default_days = 3650default_md = sha1policy = FwolfCA_policyx509_extensions = certificate_extensions FwolfCA_policy commonName = suppliedstateOrProvinceName = suppliedstateOrProvinceName = suppliedcountryName = suppliedemailAddress = suppliedorganizationName= suppliedorganizationalUnitName = optional certificate_extensions basicConstraints= CA:false# 下面是根證書(shū)的配置信息 req default_bits = 4096default_keyfile = /big2/tools/ca/private/cakey.pemdefault_md = sha1prompt = nodistinguished_name = root_ca_distinguished_namex509_extensions = root_ca_extensions root_ca_distinguished_name commonName = Fwolf CAstateOrProvinceName = The Earth# countryName只能是兩位字母countryName = CNemailAddress = one_mail_of_#organizationName = Root Certification AuthorityorganizationName = Fwolf CA Root root_ca_extensions basicConstraints = CA:true然后生成根證書(shū):$ openssl req -x509 -newkey rsa:4096 -out cacert.pem -outform PEM -days 3650 -config f會(huì)提示輸入密碼以及確認(rèn)密碼。生成好以后可以驗(yàn)證一下(說(shuō)是驗(yàn)證,其實(shí)就是看看內(nèi)容):$ openssl x509 -in cacert.pem -text -noout給自己頒發(fā)證書(shū)$ openssl req -newkey rsa:4096 -keyout .key.pem -keyform PEM -out .req.pem -outform PEM -sha1按提示輸入兩次密碼,然后輸入幾項(xiàng)證書(shū)信息,注意其中organizationName必須輸入,并且Common Name要和域名一致,比如:Common Name (eg, YOUR name) :*.就生成了私鑰key文件和請(qǐng)求req文件,然后把req文件提交給CA根證書(shū)簽署(蓋章):$ openssl ca -in .req.pem -config f輸入根證書(shū)的密碼,就會(huì)在certs/目錄下生成.pem證書(shū)文件,文件名以serial中的序號(hào)開(kāi)頭,信息會(huì)存儲(chǔ)在index.txt中。這樣生成的證書(shū),在apache中配置需要兩條語(yǔ)句,分別指定證書(shū)和私鑰:SSLEngine OnSSLCertificateFile /big2/tools/ca/certs/.cert.pemSSLCertificateKeyFile /big2/tools/ca/certs/.key.pem其實(shí)這兩個(gè)文件是可以合并為一個(gè)文件的:$ cat .key.pem .cert.pem .pem然后在配置apache的時(shí)候就只需要一句了:SSLEngine OnSSLCertificateFile /big2/tools/ca/certs/.pem其它去掉證書(shū)的口令現(xiàn)在證書(shū)基本上就可以使用了,再返回來(lái)說(shuō)一個(gè)問(wèn)題,就是在啟動(dòng)apache的時(shí)候會(huì)提示輸入私鑰的口令,要想去掉這個(gè)(一般都不會(huì)喜歡這樣的),就要求在生成私鑰的時(shí)候不要設(shè)置口令:$ openssl req -newkey rsa:4096 -keyout .key.pem -keyform PEM -out .req.pem -outform PEM -sha1 -nodes生成根證書(shū)的時(shí)候還是建議帶上個(gè)口令,提高安全性。index.txt另外,如果要清空index.txt的話,一定要清空到字節(jié)0,里面有一個(gè)字節(jié)都會(huì)導(dǎo)致openssl ca錯(cuò)誤:wrong number of fields on line 1 (looking for field 6, got 1, left)證書(shū)吊銷(xiāo)$ openssl ca -revoke .cert.pem# 生成CRL列表 $ openssl ca -gencrl -out exampleca.crl # 查看CRL列表信息 $ openssl crl -in exampleca.crl -text -noout # 驗(yàn)證CRL列表簽名信息 $ openssl crl -in exampleca.crl -noout -CAfile cacert.pem 可以看到CRL的版本號(hào)為1,這是OpenSSL默認(rèn)的,除非crl_extensions被指定在配置文件ca一節(jié)中。 上傳到MT主機(jī)上應(yīng)用首先在Server Certificates 中Add New Certificate,填上Add New Certificate(自己起),然后選下面的Private key私鑰文件和Certificate證書(shū)文件上傳,就存到服務(wù)器上了。然后返回證書(shū)列表,選中新上傳證書(shū)前面的復(fù)選框,點(diǎn)上面的鏈接Make default for Web sites設(shè)置為網(wǎng)站默認(rèn)證書(shū),也可以通過(guò)Secure control panel將其設(shè)置為控制面板所使用的證書(shū)。還沒(méi)完,證書(shū)還得加到ip上才能生效,Server IP Addresses 中修改ip地址屬性,在SSL Certificate中選擇剛才上傳的證書(shū),保存,就立刻生效了。基于ssl/https協(xié)議的特性,一個(gè)ip上只能使用一個(gè)證書(shū),所以合租用戶(hù)是無(wú)法自己上傳或者選擇其它證書(shū)的,不過(guò)我現(xiàn)在使用的證書(shū)是簽給“*”的,也就是所有域名都可以使用,“好看”一點(diǎn)。讓我不理解的是,如果在訪問(wèn)一個(gè)域名時(shí)同意了這個(gè)證書(shū),在訪問(wèn)另外一個(gè)域名的時(shí)候還得再同意一遍,也就是證書(shū)和域名是要配套使用的,和我原先的想法不太一致。4.密鑰和證書(shū)管理 密鑰和證書(shū)管理是PKI的一個(gè)重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標(biāo)準(zhǔn)。 首先,OpenSSL實(shí)現(xiàn)了ASN.1的證書(shū)和密鑰相關(guān)標(biāo)準(zhǔn),提供了對(duì)證書(shū)、公鑰、私鑰、證書(shū)請(qǐng)求以及CRL等數(shù)據(jù)對(duì)象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產(chǎn)生各種公開(kāi)密鑰對(duì)和對(duì)稱(chēng)密鑰的方法、函數(shù)和應(yīng)用程序,同時(shí)提供了對(duì)公鑰和私鑰的DER編解碼功能。并實(shí)現(xiàn)了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標(biāo)準(zhǔn)中提供了對(duì)私鑰的加密保護(hù)功能,使得密鑰可以安全地進(jìn)行存儲(chǔ)和分發(fā)。 在此基礎(chǔ)上,OpenSSL實(shí)現(xiàn)了對(duì)證書(shū)的X.509標(biāo)準(zhǔn)編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。并提供了一種文本數(shù)據(jù)庫(kù),支持證書(shū)的管理功能,包括證書(shū)密鑰產(chǎn)生、請(qǐng)求產(chǎn)生、證書(shū)簽發(fā)、吊銷(xiāo)和驗(yàn)證等功能。 事實(shí)上,OpenSSL提供的CA應(yīng)用程序就是一個(gè)小型的證書(shū)管理中心(CA),實(shí)現(xiàn)了證書(shū)簽發(fā)的整個(gè)流程和證書(shū)管理的大部分機(jī)制。 下面說(shuō)說(shuō)俺在實(shí)際應(yīng)用中證書(shū)的生成。1.初始化CA:OPENSSL req -x509 -config此處寫(xiě)配置文件的路徑和名稱(chēng) -extensions此處為配置文件的根證書(shū)擴(kuò)展配置 -newkey rsa:此處為編碼大小 -keyout此處為輸出密鑰的文件名稱(chēng) -out此處為輸出根證書(shū)名稱(chēng) -passout pass:此處為根證書(shū)密碼 -days 此處為有效期,為天數(shù)。當(dāng)執(zhí)行完此命令,便生成了根證書(shū)的私鑰和根證書(shū)。2.建立服務(wù)器證書(shū):建立請(qǐng)求:OPENSSL req-new -newkey rsa:此處為編碼大小 -keyout 輸出密鑰 -out 輸出請(qǐng)求 -config 配置文件 -days 有效期 -nodes(輸出密鑰和請(qǐng)求為同一文件)建立newcert:OPENSSL ca -config 配置文件 -policy 配置文件中的段 -days 有效期 -outnewcert.pem文件 -passin pass:CA密鑰 -batch -extensions 配置文件中的段 -infiles 請(qǐng)求文件建立PKCS12格式證書(shū):RANDFILE=random文件路徑 OPENSSL pkcs12 -export -in newcert.pem路徑 -inkey 請(qǐng)求的密鑰文件 -certfileCA證書(shū)文件 -canameCA名稱(chēng) -out 輸出的pfx文件 -clcerts -name commonname -passout pass:RANDFILE=random文件路徑 OPENSSL pkcs12 -in pfx文件 -out 輸出的pem證書(shū)文件 -passin pass: -passout pass:建立DER格式證書(shū):OPENSSL x509 -in 以上建立的pem證書(shū)文件 -out der證書(shū)文件 -inform PEM -outform DER3.建立用戶(hù)證書(shū):建立請(qǐng)求:OPENSSL req-new -newkey rsa:此處為密鑰大小 -keyout 輸出用戶(hù)私鑰文件 -out 輸出用戶(hù)請(qǐng)求 -config配置文件 -days 有效期(天)-nodes 建立證書(shū):OPENSSL ca-config 配置文件 -in 請(qǐng)求文件 -out /dev/null -notext -days 有效期 -passin pass:CA密碼 -batch -extensions 配置文件中的段建立der格式證書(shū):OPENSSL -x509 -in 用戶(hù)證書(shū)(上一步生成的證書(shū),在配置文件中指定了) -out 輸出der證書(shū) -inform PEM -outform DER 建立pfx格式證書(shū):RANDFILE=random文件路徑 OPENSSL pkcs12 -export -in 用戶(hù)證書(shū) -inkey 用戶(hù)密鑰 -certfileCApem證書(shū)文件 -canameCA組織名稱(chēng) -out 輸出pfx文件 -name commonname -passout pass:以上為我在應(yīng)用中使用到的命令,提供出來(lái)供大家參考。服務(wù)器證書(shū)與用戶(hù)證書(shū)為平級(jí)關(guān)系,只是配置文件不同,配置證書(shū)的配置文件在網(wǎng)上很多,這里就不贅述。openssl 的一些參數(shù):openssl dhparam -inform DER|PEM -outform DER|PEM -in filename -out filename -dsaparam -noout -text -C -2 -5 -rand file(s) numbits -inform DER|PEM 指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來(lái)的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過(guò)編碼的東西。 -outform DER|PEM 和上一個(gè)差不多,不同的是指定輸出格式 -in filename 要分析的文件名稱(chēng)。 -out filename 要輸出的文件名。 -dsaparam 如果本option被set, 那么無(wú)論輸入還是輸入都會(huì)當(dāng)做DSA的參數(shù)。它們?cè)俦晦D(zhuǎn)化成DH的參數(shù)格式。這樣子產(chǎn)生DH參數(shù)和DH key都會(huì)塊很多。會(huì)使SSL握手的時(shí)間縮短。當(dāng)然時(shí)間是以安全性做犧牲的,所以如果這樣子最好每次使用不同的參數(shù),以免給人K破你的key. -2, -5 使用哪個(gè)版本的DH參數(shù)產(chǎn)生器。版本2是缺省的。如果這倆個(gè)option有一個(gè)被set, 那么將忽略輸入文件。 -rand file(s) 產(chǎn)生key的時(shí)候用過(guò)seed的文件,可以把多個(gè)文件用冒號(hào)分開(kāi)一起做seed. numbits 指明產(chǎn)生的參數(shù)的長(zhǎng)度。必須是本指令的最后一個(gè)參數(shù)。如果沒(méi)有指明,則產(chǎn)生512bit長(zhǎng)的參數(shù)。 -noout 不打印參數(shù)編碼的版本信息。 -text 將DH參數(shù)以可讀方式打印出來(lái)。 -C 將參數(shù)轉(zhuǎn)換成C代碼方式。這樣可以用get_dhnumbits()函數(shù)調(diào)用這些參數(shù)。 openssl還有倆個(gè)指令, dh, gendh, 現(xiàn)在都過(guò)時(shí)了,全部功能由dhparam實(shí)現(xiàn)。 現(xiàn)在dh, gendh這倆個(gè)指令還保留,但在將來(lái)可能會(huì)用做其他用途。本文將介紹如何利用Tomcat的HTTPS功能,和一個(gè)自己創(chuàng)建的CA,來(lái)構(gòu)建WEB服務(wù)器證書(shū)和個(gè)人數(shù)字證書(shū),最終建成一個(gè)HTTPS雙向認(rèn)證環(huán)境(可以用于測(cè)試目的)。本文構(gòu)建HTTPS雙向認(rèn)證的業(yè)務(wù)流程大致如下:1. 創(chuàng)建WEB服務(wù)器公鑰密鑰,并生成服務(wù)器證書(shū)請(qǐng)求。2. 利用自建的CA,根據(jù)服務(wù)器證書(shū)請(qǐng)求為服務(wù)器簽發(fā)服務(wù)器證書(shū)。然后把服務(wù)器證書(shū)導(dǎo)回WEB服務(wù)器中。3. 利用openssl生成客戶(hù)端(IE)使用的個(gè)人數(shù)字證書(shū),也由同樣的CA簽發(fā)個(gè)人證書(shū)。4. 將個(gè)人數(shù)字證書(shū)(PKCS12格式,包含密鑰)導(dǎo)入到瀏覽器(IE/Firefox)后,就可以進(jìn)行HTTPS測(cè)試了。一. 選擇HTTPS WEB服務(wù)器這里我們選擇了Tomcat。當(dāng)然還有其它方法,如Apache+Tomcat,讓Apache配置成HTTPS模式,而Tomcat只做HTTP業(yè)務(wù)處理,這樣有利于提高性能,但本文只建造一個(gè)簡(jiǎn)單的HTTPS測(cè)試環(huán)境,只用Tomcat自帶的HTTPS功能。(當(dāng)然,我以后會(huì)考慮研究一下Apache+Tomcat模式,到時(shí)再和大家一起分享經(jīng)驗(yàn))二. 創(chuàng)建一個(gè)自己的CA創(chuàng)建一個(gè)自己的CA來(lái)模擬HTTPS構(gòu)建環(huán)境(利用CA簽發(fā)證書(shū)),不僅有利于了解PKI概念,而且有利于了解真正應(yīng)用的業(yè)務(wù)流程。關(guān)于如何創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試用CA我已在本博客發(fā)文,題目為利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA,請(qǐng)參考/jasonhwang/archive/2008/04/26/2329589.aspx 這里就不再重述了。另外,如果你真的覺(jué)得建一個(gè)CA比較麻煩,且只使用幾個(gè)個(gè)人數(shù)字證書(shū)的話,當(dāng)然也可以不建CA,下面章節(jié)也會(huì)提到不用CA如何構(gòu)建雙向認(rèn)證。三. 創(chuàng)建服務(wù)器公鑰密鑰及頒發(fā)服務(wù)器證書(shū)實(shí)際上有兩種方法生成服務(wù)器證書(shū),一種是用JDK帶的keytool,另一種是用openssl命令生成pkcs12格式的證書(shū)。個(gè)人更喜歡第二種,因?yàn)橛胦penssl生成的pkcs12格式服務(wù)器證書(shū)可以導(dǎo)出明文的服務(wù)器密鑰,便于用wireshark(ethereal的新名字)查看HTTPS里被加密過(guò)的HTTP消息。keytool生成的keystore也有辦法導(dǎo)出密鑰,但還要編程去弄,太麻煩了。方法一,用keytool創(chuàng)建服務(wù)器公鑰密鑰并用CA簽發(fā)服務(wù)器證書(shū):keytool是JDK自帶的工具程序,確保keytool已在PATH路徑里(或在以下命令里指明keytool的全路徑,如$JAVA_HOME/bin/keytool)。1. 用keytool生成服務(wù)器公鑰密鑰:在TOMCAT的conf目錄里執(zhí)行以下命令(假設(shè)conf目錄路徑為$TOMCAT_HOME/conf/):keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -genkey -keyalg RSA -dname CN=servername, OU=servers, O=ABCom注:其中DN(證書(shū)的唯一取別名)里的CN最好是服務(wù)器的域名地址或IP地址(因?yàn)闉g覽器在發(fā)現(xiàn)服務(wù)器證書(shū)的CN與訪問(wèn)服務(wù)器的域名或IP不符時(shí),會(huì)報(bào)一個(gè)警告,不過(guò)這個(gè)問(wèn)題不大)。2. 生成服務(wù)器證書(shū)請(qǐng)求,并讓測(cè)試CA簽發(fā)服務(wù)器證書(shū)實(shí)際上本步驟也可以省略,唯一不好的結(jié)果是用戶(hù)在開(kāi)始訪問(wèn)服務(wù)器HTTPS服務(wù)時(shí),會(huì)跳一個(gè)窗口警告用戶(hù),用戶(hù)可以在該窗口里看到服務(wù)器證書(shū)是一個(gè)自簽名的證書(shū)(用服務(wù)器私鑰自己給自己簽發(fā)的證書(shū),keytool生成公鑰密鑰時(shí)自動(dòng)生成這種證書(shū))。但只要用戶(hù)選擇“信任該證書(shū)”,也照樣可以與服務(wù)器建立HTTPS連接。但正規(guī)的HTTPS服務(wù)器,還是應(yīng)該申請(qǐng)一個(gè)服務(wù)器證書(shū)比較好。2.1 生成服務(wù)器證書(shū)請(qǐng)求:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -certreq -file serverreq.pem以下命令可以查看一下證書(shū)請(qǐng)求的內(nèi)容:openssl req -in serverreq.pem -text -noout2.2 用測(cè)試CA簽署服務(wù)器證書(shū):把serverreq.pem拷貝到CA的某目錄下,我們就可以按照利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA里的“CA的日常操作”的“1. 根據(jù)證書(shū)申請(qǐng)請(qǐng)求簽發(fā)證書(shū)”章節(jié)進(jìn)行證書(shū)簽發(fā)了:openssl ca -in serverreq.pem -out servercert.pem -config $HOME/testca/conf/testca.conf執(zhí)行過(guò)程中需要輸入CA私鑰的保護(hù)密碼。2.3 把服務(wù)器證書(shū)導(dǎo)回到服務(wù)器的keystore里:前面命令里生成的servercert.pem即為服務(wù)器證書(shū)。從CA處把該文件及CA的證書(shū)($HOME/testca/cacert.pem)拿來(lái),一起放到Tomcat的conf目錄里。另外導(dǎo)入前,還有一個(gè)工作需要做,需要手工編輯servercert.pem證書(shū)文件,把-BEGIN CERTIFICATE-該行前的所有內(nèi)容都刪掉,因?yàn)閗eytool不認(rèn)得這些說(shuō)明性的內(nèi)容。導(dǎo)入前也可以執(zhí)行命令查看一下證書(shū)內(nèi)容:keytool -printcert -file servercert.pem導(dǎo)入服務(wù)器證書(shū):先導(dǎo)入CA的證書(shū):keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem再導(dǎo)入服務(wù)器證書(shū):keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -import -file servercert.pem導(dǎo)入后可以用以下命令查看一下keystore里的內(nèi)容:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -list -v3. 創(chuàng)建服務(wù)器信任的客戶(hù)端CA證書(shū)庫(kù):用keytool創(chuàng)建一個(gè)證書(shū)庫(kù),里面存放服務(wù)器信任的CA證書(shū),也就是只有這些CA簽發(fā)的客戶(hù)端個(gè)人證書(shū)才被服務(wù)器信任,才能通過(guò)HTTPS訪問(wèn)服務(wù)器。這就是“HTTPS服務(wù)器驗(yàn)證客戶(hù)端證書(shū)”的關(guān)鍵配置。注:如果只是測(cè)試目的,為了簡(jiǎn)單期間,也可以直接把客戶(hù)端未經(jīng)CA簽發(fā)的自簽名證書(shū)直接導(dǎo)入信任證書(shū)庫(kù)里。這里,我們假設(shè)客戶(hù)端個(gè)人證書(shū)(后續(xù)章節(jié)介紹如何生成客戶(hù)端個(gè)人證書(shū))也是由測(cè)試CA簽發(fā)的,所以我們要把cacert.pem證書(shū)導(dǎo)入信任證書(shū)庫(kù):keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem可以用以下命令查看信任證書(shū)庫(kù)內(nèi)容:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -list -v4. 配置Tomcat支持HTTPS雙向認(rèn)證(服務(wù)器將認(rèn)證客戶(hù)端證書(shū)):修改tomcat的conf目錄里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到類(lèi)似下面內(nèi)容的配置處,添加配置如下: (題外話:其實(shí)HTTPS單向和雙向認(rèn)證配置的唯一區(qū)別是,把clientAuth改為false,去掉truststore的相關(guān)配置,就是單向HTTPS認(rèn)證了,單向HTTPS用的可能更多,它主要在瀏覽器與f服務(wù)器交互的HTTP需要加密,而不需要驗(yàn)證客戶(hù)端證書(shū)時(shí)使用。)經(jīng)以上配置后,重啟tomcat,服務(wù)器就支持HTTPS雙向認(rèn)證了。方法二,用openssl創(chuàng)建服務(wù)器公鑰密鑰并用CA簽發(fā)服務(wù)器證書(shū):前面已經(jīng)提到過(guò),這種方式的好處是有利于抓包查看服務(wù)器與瀏覽器HTTPS交互里的HTTP信息。其實(shí),這種方法與利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA里提到的制作個(gè)人數(shù)字證書(shū)方法很類(lèi)似(請(qǐng)參考利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA的“三. 自己生成公鑰密鑰,并用測(cè)試CA簽發(fā)數(shù)字證書(shū)”章節(jié))。1. 制作服務(wù)器證書(shū)(最終形成一個(gè)pkcs12文件,包含服務(wù)器密鑰、證書(shū)和CA的證書(shū))假設(shè)我們把服務(wù)器相關(guān)的東西生成到CA的$HOME/testca/test/server目錄里:mkdir -p $HOME/testca/test/servercd $HOME/testca/test/server2.1 創(chuàng)建服務(wù)器公鑰密鑰,并同時(shí)生成一個(gè)服務(wù)器證書(shū)請(qǐng)求:openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem -outform PEM -subj /O=ABCom/OU=servers/CN=servername執(zhí)行命令過(guò)程中輸入密鑰保護(hù)密碼222222。執(zhí)行后可以用以下命令查看請(qǐng)求內(nèi)容:openssl req -in serverreq.pem -text -noout2.2 用測(cè)試CA簽署服務(wù)器證書(shū):把serverreq.pem拷貝到CA的某目錄下,我們就可以按照利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA里的“CA的日常操作”的“1. 根據(jù)證書(shū)申請(qǐng)請(qǐng)求簽發(fā)證書(shū)”章節(jié)進(jìn)行證書(shū)簽發(fā)了:openssl ca -in serverreq.pem -out servercert.pem -config $HOME/testca/conf/testca.conf執(zhí)行過(guò)程中需要輸入CA私鑰的保護(hù)密碼。執(zhí)行完后可以用以下命令查看證書(shū)內(nèi)容:openssl x509 -in servercert.pem -text -noout導(dǎo)入信任的CA根證書(shū)到Java的默認(rèn)位置keytool -import -v -trustcacerts -storepass changeit -alias root_aisce -file c:rootca-cert.pem -keystore %JAVA_HOME%jrelibsecuritycacerts2.3 制作服務(wù)器pkcs12文件(包含服務(wù)器密鑰、證書(shū)和CA的證書(shū))openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem -out tomcat.p12 -name tomcat -CAfile $HOME/testca/cacert.pem -caname root -chain執(zhí)行過(guò)程中要輸入服務(wù)器密鑰的保護(hù)密碼(serverkey.pem)和新生成的tomcat.p12的保護(hù)密碼,我們都輸入222222。創(chuàng)建完成后,把pkcs12文件拷貝到tomcat的conf目錄下。3. 創(chuàng)建服務(wù)器信任的客戶(hù)端CA證書(shū)庫(kù):同方法一的對(duì)應(yīng)章節(jié),這里,我們假設(shè)客戶(hù)端個(gè)人證書(shū)(后續(xù)章節(jié)介紹如何生成客戶(hù)端個(gè)人證書(shū))也是由測(cè)試CA簽發(fā)的,所以我們要把cacert.pem證書(shū)導(dǎo)入信任證書(shū)庫(kù):keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem可以用以下命令查看信任證書(shū)庫(kù)內(nèi)容:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -list -v4. 配置Tomcat支持HTTPS雙向認(rèn)證(服務(wù)器將認(rèn)證客戶(hù)端證書(shū)):修改tomcat的conf目錄里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到類(lèi)似下面內(nèi)容的配置處,添加配置如下: 注意:其中keystore的keystoreType與方法一的配置不同。經(jīng)以上配置后,重啟tomcat,服務(wù)器就支持HTTPS雙向認(rèn)證了。四. 創(chuàng)建用于客戶(hù)端(瀏覽器)測(cè)試的個(gè)人數(shù)字證書(shū)(pkcs12格式)完全按照利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA里提到的制作個(gè)人數(shù)字證書(shū)方法來(lái)進(jìn)行,請(qǐng)參考利用openssl創(chuàng)建一個(gè)簡(jiǎn)單的CA的“三. 自己生成公鑰密鑰,并用測(cè)試CA簽發(fā)數(shù)字證書(shū)”章節(jié)。1. 創(chuàng)建個(gè)人密鑰和證書(shū)請(qǐng)求(證書(shū)請(qǐng)求里包含了公鑰)創(chuàng)建$HOME/testuser1目錄并執(zhí)行命令:(證書(shū)等都放到這個(gè)目錄)mkdir $HOME/testuser1cd $HOME/testuser1openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM -subj /O=TestCom/OU=TestOU/CN=testuser1 執(zhí)行過(guò)程中需要輸入私鑰的保護(hù)密碼,假設(shè)我們輸入密碼: 222222執(zhí)行完后,testkey.pem即為用戶(hù)的密鑰,而testreq.pem即為證書(shū)請(qǐng)求??梢杂胦penssl req -in testreq.pem -text -noout查看證書(shū)請(qǐng)求的內(nèi)容。2. 用CA為testuser1簽發(fā)個(gè)人證書(shū)同樣還在$HOME/testuser1目錄下執(zhí)行命令:openssl ca -in testreq.pem -out testcert.pem -config $HOME/testca/conf/testca.conf執(zhí)行過(guò)程中需要輸入CA的密鑰保護(hù)密碼(剛才設(shè)置的888888),并且最后詢(xún)問(wèn)你是否要給該用戶(hù)簽發(fā)證書(shū)時(shí)要選y。執(zhí)行完后,testcert.pem即為證書(shū),可以用命令openssl x509 -in testcert.pem -text -noout查看證書(shū)內(nèi)容。3. 制作PKCS12文件(個(gè)人數(shù)字證書(shū))我們制作的這個(gè)PKCS#12文件將包含密鑰、證書(shū)和頒發(fā)該證書(shū)的CA證書(shū)。把前幾步生成的密鑰和證書(shū)制作成一個(gè)pkcs12文件的方法執(zhí)行命令:openssl pkcs12 -export -in testcert.pem -inkey testkey.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論