SSL на KeystoneJS с помощью letsencrypt и apache2 - PullRequest
0 голосов
/ 11 сентября 2018

Я развертываю приложение keystonejs на Ubuntu 16 с docker-compose и имею действительный сертификат letsencrypt.

Я добавил следующие настройки в keystone.js

'ssl': true
'port': 3000,
    'admin path': 'admin',
    'ssl cert': '/etc/letsencrypt/live/mydomain.com/fullchain.pem',
    'ssl key': '/etc/letsencrypt/live/mydomain.com/privkey.pem',
    'letsencrypt': (process.env.NODE_ENV === 'production') && {
        email: 'user@gmail.com',
        domains: ['www.mydomain.com', 'mydomain.com'],
        register: true,
        tos: true,
    },

Сервер запускается нормальнопоказывая мне это:

app |
app | ------------------------------------------------
app | KeystoneJS v4.0.0 started:
app | mydomain is ready on http://0.0.0.0:3000
app | SSL Server is ready on https://0.0.0.0:3001
app | ------------------------------------------------
app |

Но когда я захожу на свой сайт.он не отображается как защищенный на вкладке URL в браузере.Он показывает небольшой восклицательный знак (!), Говоря: ваше соединение с этим сайтом не защищено.

У меня есть apache2 на моем сервере.

в / etc / apache2 / sites-available / mydomain.com.conf У меня есть это:

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin info@mydomain.com
  ServerName  mydomain.com
  ServerAlias www.mydomain.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /var/www/html/mydomain.com/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/www/html/mydomain.com/log/error.log
  CustomLog /var/www/html/mydomain.com/log/access.log combined

ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost On

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mydomain.com [OR]
RewriteCond %{SERVER_NAME} =mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

и в /etc/apache2/sites-available/mydomain.com.le.ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin info@mydomain.com
  ServerName  mydomain.com
  ServerAlias www.mydomain.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /var/www/html/mydomain.com/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/www/html/mydomain.com/log/error.log
  CustomLog /var/www/html/mydomain.com/log/access.log combined

ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost On

Include /etc/letsencrypt/options-ssl-apache.conf
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
</VirtualHost>
</IfModule>

Я попытался указатьпорт ProxyPass & ProxyPassReverse для порта 3001.Но сайт никогда не будет доступен.Любая помощь очень ценится.

1 Ответ

0 голосов
/ 06 апреля 2019

Попробуйте отключить SSL в keystone.Вам не нужно это при проксировании трафика через сервер Apache.Он будет обрабатывать сертификат и связываться с keystone локально, без SSL.Затем вы можете заблокировать доступ к порту 3000 снаружи.

...