簡體   English   中英

使用 ec2 實例在 Node 服務器上獲取 https

[英]Getting https on a Node server with ec2 instance

我有一個運行 node.js 后端的 ec2 實例 (ubuntu):APi + Mongodb。 我用 PM2 運行節點服務器。 我正在嘗試向其中添加 https。

這是我的 node.js 代碼:

const express = require("express");
const app = express();
const fs = require("fs");
const https = require("https");

var options = {
    key: fs.readFileSync("./privatekey.pem"),
    cert: fs.readFileSync("./server.crt"),
};

const port = process.env.PORT || 3000;
https
    .createServer(options, app)
    .listen(port, () => console.log(`listening to port ${port}`));
 

HTTP 有效。 當我在端口 3000 上訪問 https 時,我收到以下消息:

"This connection is not private". This website may be impersonating "ec2-XX-XXX-XXX-XXX" ....." 

我知道證書只適用於本地主機? 但是我怎樣才能讓它們在生產中工作呢? 根據我的理解,不可能為 IP 地址購買 SSL 證書?

有什么建議?

PS:我嘗試使用端口 443 但遇到了權限問題(顯示在 PM2 日志中)...

- - - -編輯 - -

我的觀點是在沒有任何 SSL 安全錯誤的情況下將我的前端(在一個實例中)連接到我的后端(在另一個實例中)。

我最終在 AWS 托管區域中創建了一個子域,該子域重定向到我的前端域。 我使用 Nginx 和 Certobot 將新的 SSL 證書上傳到我的子域實例。

我之前創建了一個子域,但方法錯誤。 這次我遵循了本教程,花了 2 分鍾。

https://dev.to/arswaw/create-a-subdomain-in-amazon-route53-in-2-minutes-3hf0

無法為 IP 地址購買 SSL 證書?

您應該獲得自己的域。 在 Route53 或您喜歡的任何其他域名轉售商上購買。 然后,您可以為您的域獲取自己的 SSL 證書。

如果您不想在實例上使用 certbot,您可以創建 SSL 證書(在 ACM 內)並從 AWS 控制台內將其分配給 ELB。

只需將需要 SSL 證書的實例放在 ELB 的目標組中並更新您的 DNS 以反映這一點。 如果您有 2 個 EC2 實例,您也可以使用另一個 ELB 執行此操作。 它花費更多的錢,但現在更新證書的責任在 AWS 上,您根本不需要在實例上使用 certbot。 我建議在 ACM 中創建證書時使用 DNS 驗證,並使用通配符 (*.mydomain.com) 來允許您的后端子域。

您需要為后端服務創建一個子域並更新您的 nginx 配置(在后端 EC2 實例上),以偵聽流量。

最終產品應該是 2 個實例、2 個 ELB、一個通配符 SSL 證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM