اجرای HTTPS به صورت محلی برای انواع خاصی از توسعه ضروری است.
در طول توسعه، ممکن است بخواهید وب سرور خود را برای ایجاد ارتباط امن با مرورگرها تنظیم کنید. Node.js با ماژول https داخلی خود، حتی در یک محیط غیر تولیدی، این فرآیند را ساده می کند.
در مرحله تولید، ممکن است برنامه خود را پشت یک پروکسی معکوس مانند NGINX تنظیم کنید، که معمولاً گواهینامه ها را برای شما ارائه می کند. اما ممکن است هنوز نیاز داشته باشید که برنامه خود را با استفاده از https در توسعه آزمایش کنید.
چگونه می توانید از گواهی SSL در برنامه Node.js استفاده کنید؟
نحوه استفاده از گواهی SSL برای توسعه سرور امن Node.js
شما به راحتی می توانید یک گواهی SSL خود امضا شده در لینوکس ایجاد کنید و مراحل زیر را دنبال کنید تا برنامه Node خود را برای استفاده از https پیکربندی کنید.
- یک فایل نقطه ورودی سرور به عنوان مثال index.js ایجاد کنید.
- ماژول های https و fs را در فایل مانند این وارد کنید:const https = require(‘https’); const fs = نیاز (‘fs’)
- شی گزینه ها را برای سرور https که می خواهید ایجاد کنید، تعریف کنید. فراموش نکنید که my-server-key.pem و my-server-cert.pem را با مسیرهای صحیح کلید خصوصی و گواهی فایلها جایگزین کنید.const options = { key: fs.readFileSync(“my-server-key.pem”) , cert: fs.readFileSync(“my-server-cert.pem”) } برای استفاده از گواهی SSL واقعی، که می توانید آن را به صورت رایگان در letsencrypt.org دریافت کنید، از گزینه های زیر استفاده کنید:const options = { key: fs.readFileSync (“/path/to/private.key”)، cert: fs.readFileSync(“/path/to/ssl_certificate.crt”)، ca: [ fs.readFileSync(“/path/to/ca_root_),file fs.readFileSync(“/path/to/ca_bundle_certificate.crt”) ] }
- اکنون سرور خود را با استفاده از گزینهها مقداردهی اولیه کنید و آن را طوری تنظیم کنید که در پورت 443 گوش کند. https.createServer(options, (req, res) => { res.writeHead(200); res.end(“hello world”); }) . گوش کن(443);
const https = require('https');
const fs = require('fs')
const options = {
key: fs.readFileSync("my-server-key.pem"),
cert: fs.readFileSync("my-server-cert.pem")
}
const options = {
key: fs.readFileSync("/path/to/private.key"),
cert: fs.readFileSync("/path/to/ssl_certificate.crt"),
ca: [
fs.readFileSync("/path/to/ca_root_file.crt"),
fs.readFileSync("/path/to/ca_bundle_certificate.crt")
]
}
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end("hello world");
})
.listen(443);
اکنون می توانید سرور خود را در ترمینال با استفاده از node index.js راه اندازی کنید. هنگامی که اتصال را با باز کردن https://localhost یا https://localhost:443/ در مرورگر خود آزمایش میکنید، باید «سلام جهان» را مشاهده کنید.
مرورگر شما همچنین ممکن است هنگام استفاده از گواهی امضا شده به شما در مورد اتصال ناامن هشدار دهد. این امری عادی است زیرا گواهینامه های خودامضا معمولاً توسط مرورگرهای وب ناامن تلقی می شوند.
ممکن است خطا را دریافت کنید
“خطا: گوش دادن به EACCES: مجوز رد شد 0.0.0.0:443”
وقتی میخواهید سرور خود را راهاندازی کنید، این به این دلیل است که دستگاه شما دسترسی برنامه را به پورت 443 که رفتار پیشفرض در اکثر دستگاهها است، رد میکند. برای رفع این مشکل، آن را اجرا کنید
گره index.js
فرمان به عنوان کاربر اصلی در لینوکس (
sudo node index.js
)، یا ترمینال خود را به عنوان سرپرست در ویندوز باز کنید.
استفاده از گواهینامه های SSL در برنامه های Node.js
بیشتر اوقات، شما فقط می خواهید گواهینامه های SSL را در مرحله توسعه اضافه کنید. الزامات تولید معمولاً مستلزم نصب ابزارهای امنیتی مانند فایروال و پروکسی معکوس است.
به این ترتیب، دیگر نیازی به استفاده از گواهی SSL برای برنامه شما نیست. فقط در صورتی که برنامه شما با سرویس های خارجی ارتباط برقرار می کند، ممکن است بخواهید یک گواهی SSL در تولید اضافه کنید.