2016-07-24 22 views
3

Node.jsアプリケーションでHTTPSを使用しようとしています。キーと証明書はすでにインストールされていますが、アプリでそれらを指し示そうとしたときにError: EACCES, permission deniedと表示されます。鍵と証明書Node.jsに証明書/秘密鍵へのアクセスを与える

の両方が/etc/pki/tlsのサブフォルダにある、と私は、このようにそれらを指し未遂:

var privateKey = fs.readFileSync('/etc/pki/tls/private/serverKey.key').toString(), 
    certificate = fs.readFileSync('/etc/pki/tls/certs/2_mikewarren.me.crt').toString(); 

var options = { 
    key: privateKey, 
    cert: certificate 
} 

私は(chown経由)鍵と証明書の権限を調整する必要がありますか?もしそうなら、それは安全ですか?

+0

なぜnode.jsコードのディレクトリにファイルを移動しないのですか? node.jsプロセスにはそのディレクトリを読み取る権限があり、そのディレクトリは外部からのアクセスから保護されていることがわかります。 – jfriend00

+0

@ jfriend00コピーしますか? –

+0

あなたのOSのファイルです。これらのファイルを適切なディレクトリに移動することができます。 httpsサーバ用に使用している場合は、おそらく他のもののために使用しているとは限りません。アクセスを必要とするすべての人がアクセスできるように、より共有された場所に配置してください。 – jfriend00

答えて

3

私は自分のコードにアクセスしました。 certAccess

  • と呼ばれる私は

    1. は、新しいユーザーグループを作成しなかった

      がに(これらのファイルへのアクセス権を持つユーザーのみだった人)sudo useradd ec2-user -G certAccess

    2. は、rootユーザーを追加したと言ってcertAccessに自分自身を追加しましたcertAccess
    3. 秘密鍵の所有者を変更しました:sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key

    テスト...

    は、私は単純に右のそれを使用した後、コンソールにoptionsを印刷、テストします。確かに私は秘密鍵と証明書の内容を見ました(自分で試してみてください)。私もhttpdサーバを再起動し、静的ファイルを要求しました。私はTLSで保護されていることを間違いなく見た。

  • 1

    問題は、これらの証明書がルート(およびおそらく他のユーザー)だけが読むことができることです。

    すべてのユーザーに読み取りアクセスを許可するにはchmodを使用できますが、これはすべてのユーザーがアクセスできることを意味します。だから、悪い考え。

    他の解決方法は、これらのファイルをnode.jsを実行しているユーザーに送信することですが、これらのファイルを使用しているユーザーがすでに存在する場合は、破棄します。その場合、ファイルを所有する新しいグループを作成し、そのグループに読み取りアクセス権を与え、そのグループ内のファイルにアクセスする必要があるユーザーを追加します。

    +0

    これを行う方法?たとえば、グループを作成する方法は? –

    +0

    http://linux.die.net/man/8/groupadd –

    +0

    (サーバーの指定されたディレクトリにある)証明書にアクセスするためのグループを作成しました。グループにアクセスする権限を変更するにはどうすればよいですか?私のnode.jsコードが実行されているかどうかにかかわらずSSL/TLSを持つことができるようにしたい –

    関連する問題