Назад | Перейти на главную страницу

Как подключиться через SSL к серверу, требующему обмена сертификатами через прокси-сервер apache?

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

Клиент (мой сервер Nodejs) ----- http -----> (Обратный?) Прокси ---- https -----> Внешний сервер запрашивает сертификат.

У меня нет внешнего сервера, но в их системе установлены мои сертификаты.

Я использовал Let's Encrypt для генерации сертификатов, поэтому у меня есть 4 файла:

privkey.pem --> Private Key
cert.pem --> Public Key
chain.pem --> Certificate Chain
fullchain.pem --> Concatenation of cert.pem and chain.pem

Текущая, не работающая, конфигурация vhost apache 2.4.33:

<VirtualHost *:80>
    SSLProxyEngine On
    SSLProxyVerify require

    SSLCertificateFile path/fullchain.pem
    SSLCertificateKeyFile path/privkey.pem

    SSLProxyMachineCertificateChainFile path/fullchain.pem
    SSLProxyCACertificateFile path/fullchain.pem
    # mydomain.certandkey.pem is a concatenation of cert.pem and privkey.pem
    SSLProxyMachineCertificateFile mydomain.certandkey.pem

    ProxyRequests Off
    RewriteEngine On
    #ProxyPreserveHost On
    #<Proxy *>
    #Order deny,allow
    #Allow from all
    #</Proxy>

    ProxyPass / https://external.server.com/
    ProxyPassReverse / https://external.server.com/
</VirtualHost>

Журнал ошибок apache

AH02252: incomplete client cert configured for SSL proxy (missing or encrypted private key?)
[date] [ssl:emerg] [pid 76986] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed

Кажется, пришло из SSLProxyMachineCertificateFile когда он уходит, когда я комментирую соответствующую строку (но соединение не работает).

Есть ли у кого-нибудь идеи, как это исправить или встретить аналогичную ситуацию с подключением?

Последние два дня я просматривал Интернет и пробовал множество конфигураций, это сводит меня с ума.

Большое спасибо.

Вы пытаетесь использовать сертификаты, которые нельзя использовать для этой цели.

Цитата из Документация Apache для SSLProxyMachineCertificateFile

Файл конкатенированного PEM-кодированного клиентские сертификаты и ключи, которые будут использоваться прокси

(выделено мной)

Из Let's Encrypt FAQ:

Выдает ли Let's Encrypt сертификаты для чего-либо, кроме SSL / TLS для веб-сайтов?

Сертификаты Let's Encrypt - это стандартные сертификаты проверки домена, поэтому вы можете использовать их для любого сервера, который использует доменное имя, например веб-серверов, почтовых серверов, FTP-серверов и многих других.

Для шифрования электронной почты и подписи кода требуется сертификат другого типа, который Let’s Encrypt не выдает.

Клиентская аутентификация попадает в шифрование электронной почты и подписание кода категория. Для этого необходимо создать сертификаты. Сертификаты Let's Encrypt предназначены только для использования на сервере.