Я программист, а не системный администратор. У меня есть DreamHost VPS, с которым я балуюсь для своего личного веб-сайта, и ряд побочных проектов, которые обычно представляют собой просто эксперименты с мультимедиа через HTML5. Ничего особенно серьезного, и все они работают на стороне клиента.
Я начал включать подписанные сертификаты на свои сайты, так как A) это просто хорошо для пользователей, B) Я мог бы подумать о настройке учетных записей пользователей для некоторых многопользовательских функций в туманном будущем и C) это также позволяет мне запрашивать доступ к определенным HTML5 API один раз и только один раз. Например: распознавание речи необходимо подтверждать каждый раз, когда оно запускается по HTTP, и оно автоматически прекращает прослушивание через минуту. Но, используя HTTPS, я могу заставить его перезапустить прослушивание без необходимости повторного подтверждения пользователем; первого подтверждения было достаточно.
У меня работает два отдельных сервера:
Я придерживаюсь этого, потому что сервер Apache уже был запущен, он работает хорошо, и я все еще новичок в Node. Я продолжаю работу Apache для обслуживания статических страниц на моем сайте, которые служат портфолио для моей работы, и просто верю, что DreamHost настроил его намного лучше, чем я мог бы сделать сам. Иногда сервер Node падает, а иногда я этого не замечаю, чисто из-за моей ошибки в программировании. На данный момент хорошей идеей кажется разделение этих двух вещей.
Для Apache DreamHost настроил сами сертификаты, и у меня есть настройка правил htaccess для перенаправления HTTP-трафика на HTTPS. Это нормально работает.
Для сервера Node я скопировал сертификат и закрытый ключ из DreamHost CPanel, потому что я не мог понять, где они расположены, чтобы использовать те же копии, что и Apache. я сделал не скопируйте промежуточный сертификат, так как я не мог понять, что с ним делать. Сервер Node также не перенаправляет HTTP-трафик автоматически, но это, вероятно, просто я еще даже не исследовал проблему.
Основная проблема, о которой я пишу сегодня, заключается в том, что иногда, когда я ввожу адрес непосредственно для сервера Node на своем смартфоне (Android 4.4.2: Chrome 37), он сообщает мне, что сайт «небезопасен». Затем мне приходится прыгать через обручи, чтобы обойти это и все равно продолжать. Этого никогда не происходит на моем ПК (Windows 7: Chrome 37, Firefox 31 или IE 11), и никогда не происходит на смартфоне, если я использую ссылку на странице, обслуживаемой сервером Apache, для перехода на сервер Node. Я публикую здесь, потому что считаю, что это скорее проблема конфигурации, чем проблема программирования.
Я был бы более конкретен в части "небезопасности", но сейчас я не могу воспроизвести проблему. Меня беспокоит, что я мог пометить сайт как исключение, и теперь он просто подтверждает это, но все новые пользователи увидят предупреждение.
У вас не установлен промежуточный сертификат на порт 8080. Многие (большинство?) Сертификатов в настоящее время не подписываются напрямую доверенным корневым сертификатом, они подписываются промежуточным сертификатом, который, в свою очередь, является подписано доверенным корневым сертификатом. Служба с поддержкой SSL должна затем предоставить как промежуточный, так и «конечный» сертификат, чтобы клиенты могли убедиться, что сертификат действительный и надежный.
Вы можете проверить это с помощью команды openssl s_client host: port, которая выводит много информации, но вот важные отличия для ваших сайтов:
$ openssl s_client -connect seanmcbeth.com:443
[...]
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
---
[...]
$ openssl s_client -connect seanmcbeth.com:8080
[...]
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
---
Посмотрите, как порт 8080 не имеет сертификата AddTrust в цепочке.