如何从 JKS 文件为 httpd apache 服务器生成 .key 和 .crt 文件

Soh*_*han 26 ssl openssl ssl-certificate keytool apache-2.4

我只有mycert.jks文件。现在我需要提取并生成.key 和 .crt文件并在 apache httpd 服务器中使用它。

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 
Run Code Online (Sandbox Code Playgroud)

任何人都可以列出完成此操作的所有步骤。我搜索过但没有具体的例子来理解,混合和匹配的步骤。

请建议!

[编辑] 按照以下答案中的步骤操作后出现错误。

8/?21/?2015 9:07 PM] Sohan Bafna: 
    [Fri Aug 21 15:32:03.008511 2015] [ssl:emerg] [pid 14:tid 140151694997376] AH02562: Failed to configure certificate 0.0.0.0:4545:0 (with chain), check /home/certs/smp_c
    ert_key_store.crt
    [Fri Aug 21 15:32:03.008913 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: TRUSTED
     CERTIFICATE) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
    [Fri Aug 21 15:32:03.008959 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib 
Run Code Online (Sandbox Code Playgroud)

exe*_*ral 45

.jks 是一个密钥库,它是 Java 的东西

使用来自 Java 的keytool二进制文件。

导出 .crt

keytool -export -alias mydomain -file mydomain.der -keystore mycert.jks
Run Code Online (Sandbox Code Playgroud)

将证书转换为 PEM

openssl x509 -inform der -in mydomain.der -out certificate.pem
Run Code Online (Sandbox Code Playgroud)

导出密钥

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12
Run Code Online (Sandbox Code Playgroud)

未加密 PEM 的音乐会 PKCS12 密钥

openssl pkcs12 -in keystore.p12  -nodes -nocerts -out mydomain.key
Run Code Online (Sandbox Code Playgroud)

学分:

  • `keytool -exportcert -rfc` 以 PEM 格式写入,不需要转换。或者,一旦您拥有 p12,“openssl pkcs12 -nokeys”就会在 PEM 中写入整个证书链,如果该证书来自真实的 CA 而不是 keytool 默认的自证书,这通常对于使用 OpenSSL(如 httpd)的服务器来说更好。签署证书。 (2认同)
  • 注意:如果您知道导出证书时的名称,则别名可以是证书的名称。想要提一下,以防人们在运行第一个命令时遇到困难。 (2认同)

Soh*_*han 25

这是我所做的,

首先导出密钥:

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12

对于 apache ssl 证书文件,您只需要证书:

openssl pkcs12 -in keystore.p12 -nokeys -out my_key_store.crt

对于 ssl 密钥文件,您只需要密钥:

openssl pkcs12 -in keystore.p12 -nocerts -nodes -out my_store.key