Недавно я получил подписанный сертификат для использования с haproxy SSL termination. Чтобы haproxy мог это использовать, мне нужно было преобразовать файл jks в файл pem. Сначала я преобразовал полученные файлы cer в crt, поскольку у меня была предыдущая ошибка, когда haproxy не мог найти файлы crt в файле pem. Сделайте это для всех сертификатов:
$ openssl x509 -inform PEM -in <CER file here> -out <CRT output file>
Затем я импортирую root, промежуточные и служебные сертификаты в хранилище ключей, в котором уже есть закрытый ключ:
keytool -importcert -file $CERT -alias $ALIAS -keystore test.jdk
Я затем преобразовать файл jsk в файл p12, а затем преобразовать его в файл pem:
$ keytool -importkeystore -srckeystore test.jks -destkeystore test.p12 -srcstoretype jks -deststoretype pkcs12
Enter destination keystore password:
Re-enter new password:
$ openssl pkcs12 -in test.p12 -out test.pem
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Это генерирует файл pem в следующем формате:
Bag Attributes
friendlyName:
localKeyID:
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
friendlyName:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
friendlyName:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
friendlyName:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
friendlyName:
localKeyID:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Очевидно, что существует в этом отсутствует много информации, так как я не хочу делиться ею в Интернете; однако структура практически идентична.
Когда я связываю это с haproxy:
frontend https
maxconn 2000
bind 0.0.0.0:4000 ssl crt /home/user/config/cert/test.pem
И я запускаю его с haproxy -d -f haproxy.cfg
, меня просят ввести парольную фразу PEM . Мне нужно иметь возможность запускать haproxy автоматически при запуске сервера, поэтому я не могу вводить это каждый раз, когда хочу его запустить. Есть ли способ удалить парольную фразу или сгенерировать pem-файл без нее? Или можно поставить через скрипт? Сценарий, который я использую для запуска haproxy при запуске сервера, - это просто команда, которую вы видите выше, без nohup для перенаправления вывода.
Также, когда я go на одну из служб, обслуживаемых haproxy, Chrome по-прежнему предупреждает меня, что ЦС не доверяет, например, когда я использовал самоподписанный сертификат. Есть ли что-нибудь еще, что мне нужно сделать помимо того, что я сделал выше?