2017-10-21 14 views
0

WebサイトにApache ServerとNodeJs(Express)を組み合わせて使用​​しています。 SSLがなければ、Apacheはポート80とNodejをポート8080にリッスンしていました。NodeJs Express:Amazon EC2 UbuntuでHTTPSからリスニング

ここでは、SSLをWebサイトにインストールしています。 Apacheはポート443をリッスンするように設定されています。ポート8443,3333などにNodejsをリッスンさせようとしました。ポートの「カスタムTCP」としてAWSセキュリティグループを設定しました。問題は、Nodejsサーバーから何の応答も得られていないことです。問題はEC2セキュリティグループ設定の問題ですが、正確な問題を指摘することはできません。

var https = require('https'); 
var fs = require('fs'); 
... 
... 
var https_options = { 
     ca: fs.readFileSync ("/path/to/cabundle.ca-bundle", "utf8"), 
     key: fs.readFileSync("/path/to/sslkey.key", "utf8"), 
     cert: fs.readFileSync("/path/to/certificate.crt", "utf8") 
}; 


var app = express(); 
var server = https.createServer(https_options, app); 
.... 
.... 
server.listen(8443 or 3333); 

を任意のエラーが発生しないサーバの起動:

サーバーは、次のようNodejsのために作成されます。 Nodejsサーバーを呼び出すブラウザからのエラーは表示されません。

洞察が得意です。アリフが、これはApacheの設定によって解決することができることを指摘した後、私は

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80> 
     ServerAdmin [email protected] 
     ServerName www.example.com 

     Redirect permanent/https://www.example.com 

     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 

</VirtualHost> 

<VirtualHost *:443> 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html/mysite 
     Servername www.example.com 

     SSLEngine on 
     SSLCertificateKeyFile /path/to/sslkey.key 
     SSLCertificateFile /path/to/certificate.crt 
     SSLCertificateChainFile /path/to/cabundle.ca-bundle 


     <Directory /var/www/html/mysite> 
       AllowOverride All 
       Options FollowSymlinks 
     </Directory> 
</Virtualhost> 
でのVirtualHost seetingsを追加してい

クライアント側の要求はSSLを有効にして、以下のCOMMにより、プロキシApacheモジュールを逆転するために必要なすべてのhttps://www.example.com:8443

+0

「https://www.example.com:8443」というリクエストを行うには、「https」を使用する必要があります。 'https://www.example.com:8443'をリクエストしている場合は、Apacheの役割はありません。 –

+0

EC2( 'curl -Ik https://127.0.0.1:8443')のnodejsサーバにリクエストできますか?前に 'iptables'にルールを追加しましたか? – ronald8192

+0

@ArifKhan申し訳ありませんが、私の悪い。それはhttps://です... – Sam11

答えて

0

まずに送られ、その後、

sudo a2enmod ssl 
sudo a2enmod proxy 
sudo a2enmod proxy_http 
sudo a2enmod proxy_balancer 
sudo a2enmod lbmethod_byrequests 

とは、Apache SSLの設定(/etc/apache2/sites-available/default-ssl.conf)は今今では細かいhttps://your_domain.com

を動作するはずですSSLファイルを追加し、Apache

sudo a2ensite default-ssl.conf 
sudo service apache2 restart 

を再起動して怒鳴る

<IfModule mod_ssl.c> 
    <VirtualHost _default_:443> 
     ServerAdmin [email protected] 
     ServerName your_domain.com 
     ServerAlias www.your_domain.com 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     SSLEngine on 
     SSLCertificateFile /path/to/certificate.crt 
     SSLCertificateKeyFile /path/to/sslkey.key 
     ProxyRequests Off 
     ProxyPreserveHost On 
     ProxyVia Full 
     <Proxy *> 
      Require all granted 
     </Proxy> 
     <Location /> 
      ProxyPass http://localhost:8443 
      ProxyPassReverse http://localhost:8443 
     </Location> 
    </VirtualHost> 
</IfModule> 

ファイル更新します注:httpおよびセキュリティグループ内のAWSコンソールのhttpsポート

+0

あなたの答えをありがとうArif。私はこれを試しましたが、問題を解決していないようです。私は自分の質問を編集してVirtualhostの設定を追加しています。 – Sam11

0

返信が遅れました。問題は、HTTPSおよびWSSトラフィックを許可していないCSP設定です。

また、我々はsocket.ioを使用して、クライアント側のソケットを作成中

({secure: true}) 

を追加する必要がありました。今それは正常に動作しています。入力いただきありがとうございます。

関連する問題