Ssl-Certificate

從 Java 密鑰庫獲取證書

  • October 17, 2016

我使用 Java Keytool 生成domain.csr,domain.keystoredomain.cer. 我需要使用我需要的 SSLdomain.crtdomain.key. 我怎樣才能得到這兩個?domain.jksdomain.keystore都一樣嗎?csr, pem,等所有擴展有什麼區別crt

主要是欺騙如何從 JKS 文件為 httpd apache 伺服器生成 .key 和 .crt 文件

所有文件副檔名都只是約定;重要的是您為創建文件所做的操作,您對此非常模糊。一方面,“生成” CSR 和證書是沒有意義的;他們做相互矛盾的事情。

Java KeyStore JKS是 Java 使用的密鑰庫格式(目前;預計在 Java 9 中會發生變化)。人們經常為這些文件命名.jks,但如果您在沒有指定.keystore的命令中使用,那麼您創建了一個名為.keytool -genkeypair``-storetype``.keystore

.cer並且.crt通常用於包含一個證書的文件,或者有時用於 PEM 格式的多個證書。有兩種常見的格式,通常稱為 OpenSSL 使用的名稱,即DER 和 PEM。如果您使用普通文本工具查看文件,more cat type vi notepad您會看到一行-----BEGIN CERTFICATE-----(可能X.509插入),然後是幾行幾乎所有字母和數字的行,然後是-----ENDPEM 格式的類似行。人們有時會使用這些副檔名來代替或附加指定格式,例如xyzcert.pem xyzcert.der xyz.crt.pem xyz.crt.der.

CSR表示證書籤名請求,由keytool -certreq. CSR 用作從“真實”CA(如 Verisign GoDaddy 等)獲取證書過程的一部分。在這種情況下,您通常會從 CA 獲得伺服器證書和“鏈”或中間證書(有時超過一個); 您將它們放在一個或多個文件中,然後將它們導入您的 JKS 以與 Tomcat 等 Java 程序一起使用。在這種情況下,您的證書文件將由 CA 而不是您生成。

如果您沒有從 CA 獲得證書,預設情況下keytool -genkeypair會創建一個適合測試的自簽名證書。您可以使用 將此證書放入單獨的文件中keytool -exportcert [-rfc],這您生成的證書,但在這種情況下,您對 CSR 沒有任何用處。

.key有時用於 OpenSSL 使用的幾種格式之一的單獨**(私有)密鑰**文件,因此被使用 OpenSSL 的程序(如 Apache httpd 和 nginx)使用。私鑰的 OpenSSL 格式有 DER 和 PEM 變體,就像證書一樣,所以人們也使用這些擴展,比如xyzkey.pem xyzkey.der xyz.key.pem xyz.key.der.

最後,PKCS12是另一種密鑰庫格式,被許多軟體支持,包括 Java、OpenSSL、Windows 和 Mozilla NSS。副檔名通常.p12用於 PKCS12。(PKCS12 始終是二進制的;它沒有 PEM 變體。)

TLDR:如果您需要來自 JKS 格式密鑰庫的私鑰和證書的 OpenSSL 格式單獨文件,請首先使用keytool轉換為 pkcs12,然後使用openssl將 pkcs12 轉換為單獨的 PEM(通常)或 DER(很少)。

引用自:https://serverfault.com/questions/809529