Удалите или автоматически введите парольную фразу pem для haproxy ssl; Chrome по-прежнему предупреждает о неподписанном CA - PullRequest
0 голосов
/ 08 мая 2020

Недавно я получил подписанный сертификат для использования с 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 по-прежнему предупреждает меня, что ЦС не доверяет, например, когда я использовал самоподписанный сертификат. Есть ли что-нибудь еще, что мне нужно сделать помимо того, что я сделал выше?

1 Ответ

2 голосов
/ 14 мая 2020

Вам нужно будет скопировать защищенный паролем ключ на незащищенный паролем.

openssl rsa -in test.pem -out test-password-less.key

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

cat $CERT test-password-less.key > haproxy-test.pem
...