Как обновить SSL-сертификат для прокси-сервера на порту 1337? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть домен, который я просто буду называть «example.org» из соображений безопасности, работающий на Amazon EC2, на котором я пытаюсь заставить работать SSL-доступ.Я использую letsencrypt и Certbot для выдачи моих сертификатов.Все работало нормально в течение первых 90 дней, пока я не попытался обновить сертификат SSL.Мне удалось успешно обновить сертификат для моего доменного имени, но по какой-то причине у меня, кажется, есть отдельный сертификат для прокси-сервера, который я использую на порту 1337, который отображается как просроченный.

Когда я пытаюсь использовать приложение на своем сайте, я вижу следующую ошибку на консоли JavaScript в браузере:

example.org:1337 uses an invalid security certificate.

The certificate expired on Tuesday, October 9, 2018, 7:50 PM. The current time is Friday, October 19, 2018, 3:43 PM.

Error code: <a id="errorCode" title="SEC_ERROR_EXPIRED_CERTIFICATE">SEC_ERROR_EXPIRED_CERTIFICATE</a>
 (unknown) 

Моим клиентским приложением является Angular 6 SPA, который напрямую связываетсяс "https://example.org:1337".

с помощью SSL checker я вижу, что мой" example.org "показывает, что срок действия сертификата домена истекает через 47 дней. Однако, когда я проверяю"example.org:1337 "в нем говорится, что срок действия сертификата истек 13 дней назад. Насколько я понимаю, мне нужен только один сертификат SSL на домен, и мне не нужно отдельно сертифицировать каждый порт. Первоначально я не запрашивал сертификат для порта 1337,но у меня есть proxyPass , указанный для него в "/etc/apache2/sites-available/000-default-le-ssl.conf":

# allow us to call a node server without the user having to specify the port number 
# directly e.g. call the proxy server like it's a standard http route.
ProxyRequests off

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Location /servers/meta-data-proxy>
    ProxyPass https://localhost:1337
    ProxyPassReverse https://localhost:1337
</Location>

Когда я проверяю SSLдля другого порта, который я использую, у которого нет прокси-сервера, он говорит: «сертификаты ssl не найдены», чего я и ожидал.

certbot показывает следующие сертификаты:

> sudo certbot certifictes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: example.org
    Domains: example.org www.example.org
    Expiry Date: 2018-12-09 11:08:32+00:00 (VALID: 47 days)
    Certificate Path: /etc/letsencrypt/live/example.org/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.org/privkey.pem

Как я могу:
a) Обновитьили синхронизировать сертификат на порту 1337, чтобы он был синхронизирован с сертификатом на доменном имени?

b) Каким-то образом удалить просроченный сертификат на порту 1337 на моем компьютере.Я не вижу его в списке в соответствии с Certbot.Я надеюсь, что, удалив его, он каким-то образом динамически настроит все заново.

Я даже не совсем уверен, что мне нужен «ProxyPass».Возможно, это было то, что я только что сделал изначально, чтобы все заработало, но на самом деле это не нужно.

Ubuntu 18.04 Apache2 2.4.29

1 Ответ

0 голосов
/ 23 октября 2018

Извините всех: этот подпадает под категорию неважных / пользовательских ошибок.

Оказывается, я сделал скопировал /etc/letsencrypt/live/example.org/fullchain.pem и /etc/letsencrypt/live/example.org/privkey.pem в подкаталог моего прокси-сервера.Прокси-сервер, прослушивающий порт 1337, затем загружает эти файлы.Как только я обновил их с использованием обновленных версий, используемых основным сервером https, все снова заработало.Так что, по сути, у меня было две версии ключей, и вы могли понять это, только взглянув на код.

Мне действительно не нужно было вспоминать об этом, и я бы сказал,это отражение плохого дизайна со стороны моего приложения.Вероятно, не очень хорошая идея, чтобы клиент напрямую ссылался на номера портов.Мне действительно нужно, чтобы клиент ссылался на сервер через один порт (например, 443 для SSL), а затем сервер решил перенаправить на любые внутренние серверы.Изначально мое приложение работало только по протоколу http, и я не особо задумывался о безопасности.Затем я добавил https в последнюю секунду.Не очень хорошо разбираясь с SSL, я сделал это гораздо более сложной проблемой, чем должен был, так что это моя защита.Тьфу.

...