Промежуточный сертификат не в хранилище ключей, хотя я его добавил

Мне было поручено настроить ssl на сервере, этот сервер использует wildfly, поэтому я должен создать хранилище ключей, которое содержит все полученные сертификаты, сертификат сервера, промежуточный файл и файл ключей.

Сначала я связал серверный сертификат с промежуточным сертификатом, а затем использовал openssl для создания файла pkc12. Затем я использовал keytool для создания хранилища ключей из этого файла pkc12.

Проблема в том, что когда я открываю файл хранилища ключей или файл pkc12, я обнаруживаю, что он не содержит промежуточный сертификат, он имеет только сертификат сервера. Я сделал эту процедуру раньше, и это сработало

Кто-нибудь знает, в чем может быть проблема?

Дополнительная информация: промежуточный сертификат является немного старым (с 2010 года) и использует sha1 и истекает через 9 месяцев, что странно, в отличие от моего сертификата сервера, который является новым и использует sha256.

1 ответ

Решение

Видимо, вашей проблемой может быть неправильный промежуточный сертификат.

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

  • Выполните следующую команду для сертификата сервера:

    openssl x509 -noout -text -in server.pem | grep 'CA Issuers'
    
  • Затем откройте URL, найденный grep:

    wget http://url/ -O intermediate.der
    
  • Преобразовать загруженный сертификат в формат PEM:

    openssl x509 -in intermediate.der -inform DER -outform PEM -out intermediate.pem
    

Теперь вы точно знаете, что intermediate.pem правильный промежуточный сертификат для вашего сертификата сервера.

Предположим, что в цепочке есть только один промежуточный сертификат. Если их больше, вам нужно будет повторить приведенные выше команды для intermediate.pem получить intermediate2.pem и так далее.

Запустите команды ниже, чтобы создать JKS store.

  • Создать пакет сертификатов:

    cat server.pem intermediate.pem > bundle.pem
    
  • Создайте пакет формата pfx/pkcs12:

    openssl pkcs12 -export -out bundle.pfx -inkey server.key -in bundle.pem
    
  • Создать JKS хранилище ключей:

    keytool -importkeystore -srckeystore bundle.pfx -srcstoretype pkcs12 -destkeystore store.jks -deststoretype JKS
    
  • Проверьте хранилище ключей:

    keytool -v -list -keystore store.jks
    

Вы должны увидеть следующее в списке:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: 1
Creation date: May 19, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=example.com
Issuer: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
...
Certificate[2]:
Owner: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Issuer: CN=DST Root CA X3, O=Digital Signature Trust Co.
...
Другие вопросы по тегам