簡體   English   中英

文件.keystore和CAKey.pem在SSL中的作用?

[英]Role of files .keystore and CAKey.pem in SSL?

我成功地將HTTP上的Web應用程序從http接收。 實際上,我對在此過渡階段遇到的兩個文件的作用感到懷疑。 我可以看到兩個密鑰文件,一個是.keystore,另一個是CAKey.pem。 我特別想知道他們在什么時間拍攝的。 在server.xml中,我找到屬性keystoreFile(其值是密鑰庫的位置)和keystorePass(其值是我在生成.keystore文件期間輸入的密碼)的條目,而在ApplicationConfig.xml中,我找到兩個屬性,即openSSLLocation (相對於我能看到的openssl目錄的值),第二個屬性是密碼(相對於我在生成CAKey.pem文件的過程中給定的密碼值)。

是否想具體了解這些文件在SSL中包含哪些內容並發揮作用?

編輯我去了布魯諾伸出的鏈接。 我還通過另一個參考鏈接,即http://www.verisign.com/ssl/ssl-information-center/how-ssl-security-works/ 現在,通過兩個鏈接,我的理解是kestore文件包含SSL證書的詳細信息(如果我們使用像verisign這樣的授權CA,它們將提供128位加密,而Java keytool命令證書可能無法提供默認密鑰存儲)。 基於包含私鑰的此證書,將進行加密。 對? 正如versign鏈接中指出的那樣,最后還會發布數字簽名作為確認。 不確定證書是否具有鏈接中所指出的目的或認可? 像CACert.pem,CAKey.pem這樣的文件是否與數字證書相關?

編輯2

這是我遵循的SSL步驟

1)從http://www.slproweb.com/products/Win32OpenSSL.html下載Win32OpenSSL_Light-0_9_8t並安裝

2)在OpenSSL安裝目錄中,創建private子目錄。 認證中心的私鑰將存儲在此處。 在OpenSSL安裝目錄中,創建子目錄newcerts。 由CA簽名的新證書將存儲在此處。 在OpenSSL安裝目錄中,創建一個名為index.txt的空文件。 OpenSSL將其簽名證書數據庫保留在該文件中。 從OpenSSL安裝目錄的子目錄bin / PEM / demoCA中,將文件序列復制到OpenSSL安裝目錄。 打開復制的串行文件並將其編輯為00,然后保存。 每個新的CA簽名證書的序列號均取自該文件的內容,每次對證書進行簽名時,序列號都會遞增。

3)在openssl.cfg中進行以下更改dir = c:/ openssl <-這是OpenSSL安裝目錄證書= $ dir / private / cacert.pem #crl = $ dir / crl.pem

4)使用命令cd / d“%OPENSSL_HOME%” openssl req -new -x509 -days 2000 -keyout private \\ CAKey.pem -out private \\ CACert.pem -config bin \\ openssl.cnf創建自簽名證書

5)將證書PEM文件轉換為DER編碼的文件cd / d“%OPENSSL_HOME%” openssl x509 -in private \\ CACert.pem -out private \\ CACert.cer -outform DER此命令在private子目錄中創建文件CACert.cer 。

6)修改Java根證書

cd%JAVA_HOME%keytool-導入-keystore jre \\ lib \\ security \\ cacerts -alias AppOpenSSLCert-文件%OPENSSL_HOME%\\ private \\ cacert.cer

這會將我們的自簽名CA證書添加到Java的受信任CA證書中,這些證書保存在Java JDK安裝目錄中的文件jre \\ lib \\ security \\ cacerts中。 我們的自簽名CA證書存儲在別名AppOpenSSLCert下。

根據文檔,它應該已經工作了(即我嘗試使用https擊中URL),但是沒有工作。 為了使其工作,我不得不再運行一個命令,即

7)C:\\ Program Files \\ Java \\ jdk1.6.0_23> keytool -genkey -alias tomcat -keyalg RSA生成.keystore文件((具有SSL證書,當客戶端發出https請求並且客戶端匹配此證書時將發送SSL證書在信任庫和私鑰中)

最后,我在server.xml中進行了更改,它的工作原理是keystoreFile =“ c:/。keystore” keystorePass =“ changeit”

這就是為什么讓我全神貫注的原因。 如果我們使用第7步中生成的.keystore文件指向的證書,我從1到6(CAKey.pem和CACert.pem文件)執行的步驟的目的是什么。 關於SSL我了解什么,我認為我不應該在server.xml中提及.keystore(在步驟7中生成),但是其他一些密鑰庫可能在步驟1-6期間某處生成,但是不確定文件名是什么以及在哪里生成?

verisign鏈接中的最后一個問題。 它討論了兩個證書,即SSL證書和數字證書。 SSL證書和數字證書在上述情況下適合哪里?

從Java的角度來看,您應該首先嘗試了解密鑰庫和信任庫之間的區別(兩者都是用於不同目的的密鑰庫)。

JSSE中沒有默認密鑰庫,但是某些應用程序默認情況下使用$HOME/.keystore :這是包含證書的內容,並且您具有私鑰。

相反,信任庫確定您願意信任哪些遠程證書。 它包含許多CA證書,遇到新證書時可以建立證書路徑。 如果存在這樣的路徑(並且如果激活了該證書則不撤消證書),則此(先驗)未知證書將被視為受信任。

聽起來您所使用的過程包括創建自己的證書頒發機構,因此最終將獲得一個CA證書文件及其私鑰(很可能是該CAkey.pem文件)。 這僅應用於與此CA頒發新證書。

如果我們使用像verisign這樣的授權CA,它們將提供128位加密,而Java keytool命令證書所提供的默認密鑰存儲可能不提供這種加密)。

不是用來選擇加密密鑰大小的證書,而是密碼套件。 SGC證書的時代已經結束 。)

在SSL / TLS握手期間,服務器證書用於對服務器進行身份驗證(以確保客戶端正在與要與其通信的服務器通信)並協商一組共享的對稱密鑰(取決於密碼套件):這些是用於加密的密碼。

如果要使用keytool為特定的密鑰大小生成證書,請使用-keysize 2048 (例如)。 請注意,這是證書中密鑰的大小,而不是用於加密本身的對稱密鑰的大小。

keytool或多或少相同的命令可用於生成CSR以發送到商業CA。 不管您使用商業CA還是自己使用,都不會影響加密強度。 不同之處在於,默認情況下沒有人會識別您自己的證書,因此您必須將其顯式導入客戶端。 證書主要用於驗證與您通信的遠程實體的身份。

(您可能也對此問題的討論感興趣。)

編輯:

您混合了兩個完全不同的過程。

1.創建自己的CA。

使用OpenSSL所做的就是生成自己的證書頒發機構(CA)。 因此,您將獲得CAcert.pemCAkey.pem ,它們是CA證書及其私鑰(用於與此CA頒發新證書)。 如果沿着這條路線走,您要做的就是將CAcert.pem導入為客戶端中的受信任CA證書,並且您頒發的證書也將受到信任。 您可能還對OpenSSL的CA.pl感興趣,該腳本是一個腳本,其中包裝了許多您可能需要更手動完成的過程。

OpenSSL無法處理JKS文件,如果沒有一些額外的步驟,此過程就不會很有用。 在這里,您可以:

  • 使用OpenSSL為服務器生成密鑰+證書(CA.pl應該會幫助)。 從Java的角度來看,更容易以PKCS#12格式( .p12文件)導出它:然后,您就可以直接從Java將該文件用作PKCS12類型的密鑰庫( keystoreType="PKCS12"組態)。
  • 通過-certreq使用keytool生成CSR,使用OpenSSL發行證書(同樣,CA.pl應該會幫助),將此證書重新導入到密鑰庫中(通過keytool )並使用該JKS存儲。

2.直接為此服務器使用自簽名證書。

如果只有一台服務器,這可能是最簡單的。

在這種情況下,請遵循此答案中描述的過程,並將-export導出的證書導入到客戶端的信任庫(或瀏覽器)中。


verisign鏈接中的最后一個問題。 它討論了兩個證書,即SSL證書和數字證書。 SSL證書和數字證書在上述情況下適合哪里?

不確定,真的。 我找不到它談論“數字證書”的地方。 嚴格來說,沒有“ SSL證書”之類的東西,盡管該表達式或多或少總是表示“用於SSL / TLS的X.509證書”。

您可以將X.509證書用於SSL / TLS以外的其他目的,並將SSL / TLS與其他類型的證書一起使用。 最常見的是帶有SSL / TLS的X.509。

“數字證書”還可以涵蓋更廣泛的類別,例如OpenPGP證書也可以用於SSL / TLS(例如,請參閱此答案 )。 還有一些屬性證書 ,甚至不包含公共密鑰(在您真正了解X.509證書的含義之前,請不要閱讀它們,否則會更加困惑)。

不過我的猜測是,Verisign將使用“ SSL證書”來表示與SSL一起使用的X.509證書,也可能是“ X.509”證書的“數字證書”以用於其他用途,例如電子郵件簽名/加密。 兩者都將在PKI(由Verisign建立)的范圍內。

密鑰庫文件是一個文件,它將存儲使協議安全所需的證書的詳細信息。 證書包含有關誰是您從中接收應用程序數據的來源以及進行身份驗證的信息。 (來源: http : //techtracer.com/2007/09/12/setting-up-ssl-on-tomcat-in-3-easy-steps/

CAKey.pem包含身份驗證證書的私鑰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM