Как сгенерировать .key и .crt файлы из JKS файла для httpd сервера Apache

Вопрос или проблема

У меня есть только файл mycert.jks. Теперь мне нужно извлечь и сгенерировать файлы .key и .crt и использовать их в сервере Apache httpd.

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 

Можете ли вы перечислить все шаги, чтобы это сделать? Я искал, но нет конкретного примера для понимания, шаги перепутаны.

Пожалуйста, подскажите!

[ИЗМЕНЕНИЕ] Получаю ошибку после выполнения шагов из ниже приведенного ответа.

[8/21/2015 9:07 PM] Сохан Бафна: 
    [Пн, 21 августа 2015 15:32:03.008511 2015] [ssl:emerg] [pid 14:tid 140151694997376] AH02562: Не удалось сконфигурировать сертификат 0.0.0.0:4545:0 (с цепочкой), проверьте /home/certs/smp_cert_key_store.crt
    [Пн, 21 августа 2015 15:32:03.008913 2015] [ssl:emerg] [pid 14:tid 140151694997376] Ошибка библиотеки SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line (Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ) -- Плохое содержимое файла или формат - или даже просто забытый SSLCertificateKeyFile?
    [Пн, 21 августа 2015 15:32:03.008959 2015] [ssl:emerg] [pid 14:tid 140151694997376] Ошибка библиотеки SSL: error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib 

.jks – это хранилище ключей, что является объектом Java

используйте keytool из Java.

экспортируйте .crt:

keytool -export -alias mydomain -file mydomain.der -keystore mycert.jks

конвертируйте сертификат в PEM:

openssl x509 -inform der -in mydomain.der -out certificate.pem

экспортируйте ключ:

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

конвертируйте ключ PKCS12 в нешифрованный PEM:

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

благодарности:

Вот что я делаю,

Сначала экспортируйте ключ:

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

Для файла сертификата SSL Apache вам нужен только сертификат:

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

Для файла ключа SSL вам нужны только ключи:

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

Ответ найден здесь:

https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate?page=2&tab=Votes

  • перейдите по URL в браузере, который использует jks с красной линией, и слева будет значок замка

  • нажав на часть с предупреждением о безопасности, откроется информационный диалог

  • щелкните по сертификату (неверный), и когда он откроется, нажмите на детали

  • нажмите на «Копировать в файл…» и следуйте инструкциям

  • В конце у вас есть файл хранилища в формате crt

    Сгенерировать p12 из JKS

    /opt/apps/java/java/bin/keytool -importkeystore -srckeystore certname.jks -destkeystore certname.jks password -srcalias cert -srcstoretype certname.jks deststoretype pkcs12
    

    Сгенерировать pem из p12

    openssl pkcs12 -in cert.p12 -out cert.pem
        
    

    Сгенерировать cert из pem

    openssl x509 -inform der -in cert.pem -out cert.crt
    

    Сгенерировать ключ из pem

    openssl der -in cert.pem -out cert.key 
      введите пароль для cert.pem
    

    Ответ или решение

    Для извлечения файлов .key и .crt из хранилища JKS (Java KeyStore) и их использования в сервере Apache HTTPD, выполните следующие шаги.

    Шаг 1: Экспортируйте сертификат из .jks в формат .p12

    Для начала вам нужно экспортировать сертификат из файла mycert.jks. Вы можете использовать команду keytool для этого:

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

    При выполнении этой команды вам нужно будет ввести пароль от вашего файла .jks.

    Шаг 2: Извлеките сертификат (.crt) и закрытый ключ (.key)

    После того как вы создадите файл keystore.p12, вы сможете извлечь сертификат и закрытый ключ с помощью OpenSSL. Выполните следующие команды:

    1. Извлечение сертификата (.crt):

      openssl pkcs12 -in keystore.p12 -nokeys -out server.crt
    2. Извлечение закрытого ключа (.key):

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

    Шаг 3: Настройка Apache HTTPD

    После извлечения файлов server.crt и server.key вам нужно настроить ваш сервер Apache для использования этих сертификатов. Откройте конфигурационный файл Apache (обычно httpd.conf или ssl.conf в каталоге конфигурации Apache) и добавьте следующие строки:

    SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key

    Убедитесь, что пути к файлам .crt и .key указаны корректно.

    Шаг 4: Перезапустите сервер Apache

    После изменения конфигурации вам необходимо перезапустить сервер Apache, чтобы изменения вступили в силу:

    sudo systemctl restart apache2

    или

    sudo service apache2 restart

    Возможные ошибки и их устранение

    Если вы столкнулись с ошибками, связанными с форматом файла или недоступностью закрытого ключа, убедитесь в следующем:

    • Файлы .crt и .key корректно извлечены и находятся по указанным путям.
    • Файл .crt содержит строку -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.
    • Файл .key содержит строку -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----.

    Если ошибки продолжают возникать, проверьте права доступа к файлам сертификатов и уровню доступа пользователя, под которым работает Apache.

    Следуя этим шагам, вы сможете успешно извлечь сертификаты из файла JKS и настроить их для использования на вашем сервере Apache HTTPD.

    Оцените материал
    Добавить комментарий

    Капча загружается...