Мне нужно подключиться к внешнему серверу через 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 сертификаты для чего-либо, кроме SSL / TLS для веб-сайтов?
Сертификаты Let's Encrypt - это стандартные сертификаты проверки домена, поэтому вы можете использовать их для любого сервера, который использует доменное имя, например веб-серверов, почтовых серверов, FTP-серверов и многих других.
Для шифрования электронной почты и подписи кода требуется сертификат другого типа, который Let’s Encrypt не выдает.
Клиентская аутентификация попадает в шифрование электронной почты и подписание кода категория. Для этого необходимо создать сертификаты. Сертификаты Let's Encrypt предназначены только для использования на сервере.