9 ответов:
Я нашел следующий пример.
Этот узел работает на версии v0.1.94 - версии v0.3.1.
server.setSecure()удаляется в более новых версиях узла.непосредственно из этого источника:
const crypto = require('crypto'), fs = require("fs"), http = require("http"); var privateKey = fs.readFileSync('privatekey.pem').toString(); var certificate = fs.readFileSync('certificate.pem').toString(); var credentials = crypto.createCredentials({key: privateKey, cert: certificate}); var handler = function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }; var server = http.createServer(); server.setSecure(credentials); server.addListener("request", handler); server.listen(8000);
на Express API doc излагает это довольно ясно.
дополнительно ответ дает шаги для создания самозаверяющего сертификата.
Я добавил некоторые комментарии и фрагмент узел.JS HTTPS documentation:
var express = require('express'); var https = require('https'); var http = require('http'); var fs = require('fs'); // This line is from the Node.js HTTPS documentation. var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert') }; // Create a service (the app object is just a callback). var app = express(); // Create an HTTP service. http.createServer(app).listen(80); // Create an HTTPS service identical to the HTTP service. https.createServer(options, app).listen(443);
нашел этот вопрос, когда гуглил "узел https", но пример в принято отвечать очень старый-взят из docs текущей (v0.10) версии узла, он должен выглядеть так:
var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem') }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000);
приведенные выше ответы хороши, но с Express и node это будет работать нормально.
поскольку express создает приложение для вас, я пропущу это здесь.
var express = require('express') , fs = require('fs') , routes = require('./routes'); var privateKey = fs.readFileSync('cert/key.pem').toString(); var certificate = fs.readFileSync('cert/certificate.pem').toString(); // To enable HTTPS var app = module.exports = express.createServer({key: privateKey, cert: certificate});
Я заметил, что ни один из этих ответов показывают, что добавление промежуточный корень CA цепи, вот некоторые примеры нулевой конфигурации играть, чтобы увидеть что:
- https://github.com/coolaj86/nodejs-ssl-example
- http://blog.coolaj86.com/articles/how-to-create-a-csr-for-https-tls-ssl-rsa-pems/
- https://github.com/coolaj86/nodejs-self-signed-certificate-example
- https://github.com/Daplie/localhost.daplie.com-certificates
- https://github.com/Daplie/localhost.daplie.com-server
фрагмент:
var options = { key: fs.readFileSync(path.join('certs', 'my-server.key.pem')) , ca: [ fs.readFileSync(path.join('certs', 'my-root-ca.crt.pem'))] , cert: fs.readFileSync(path.join('certs', 'my-server.crt.pem')) , requestCert: false , rejectUnauthorized: false }; var server = https.createServer(options); var app = require('./my-express-or-connect-app').create(server); server.on('request', app); server.listen(443, function () { console.log("Listening on " + server.address().address + ":" + server.address().port); }); var insecureServer = http.createServer(); server.listen(80, function () { console.log("Listening on " + server.address().address + ":" + server.address().port); });этот это одна из тех вещей, которые часто проще, если вы не попробуйте сделать это напрямую через connect или express, но пусть родной
httpsмодуль обрабатывать его, а затем использовать, чтобы служить вам connect / express приложение.также, если вы используете
server.on('request', app)вместо передачи приложение при создании сервера, это дает вам возможность передатьserverэкземпляр для некоторой функции инициализатора, которая создает приложение connect / express (если вы хотите сделать websockets через ssl на том же сервере, например).
минимальная настройка для HTTPS-сервера в узле.js будет что-то вроде этого :
var https = require('https'); var fs = require('fs'); var httpsOptions = { key: fs.readFileSync('path/to/server-key.pem'), cert: fs.readFileSync('path/to/server-crt.pem') }; var app = function (req, res) { res.writeHead(200); res.end("hello world\n"); } https.createServer(httpsOptions, app).listen(4433);Если вы также хотите поддерживать http-запросы, вам нужно сделать только эту небольшую модификацию:
var http = require('http'); var https = require('https'); var fs = require('fs'); var httpsOptions = { key: fs.readFileSync('path/to/server-key.pem'), cert: fs.readFileSync('path/to/server-crt.pem') }; var app = function (req, res) { res.writeHead(200); res.end("hello world\n"); } http.createServer(app).listen(8888); https.createServer(httpsOptions, app).listen(4433);
чтобы ваше приложение, чтобы слушать как
httpиhttpsпорты80и443соответственно, сделайте следующеесоздать экспресс-приложение:
var express = require('express'); var app = express();приложение, возвращенные
express()- это функция JavaScript. Он может быть передан на HTTP-серверы узла в качестве обратного вызова для обработки запросов. Это позволяет легко предоставлять как HTTP, так и HTTPS-версии вашего приложения, используя одну и ту же базу кода.вы можете сделать так, как следует:
var express = require('express'); var https = require('https'); var http = require('http'); var fs = require('fs'); var app = express(); var options = { key: fs.readFileSync('/path/to/key.pem'), cert: fs.readFileSync('/path/to/cert.pem') }; http.createServer(app).listen(80); https.createServer(options, app).listen(443);для полной детализации см. doc
var path = require('path'); var express = require('express'); var app = express(); var staticPath = path.join(__dirname, '/public'); app.use(express.static(staticPath)); app.listen(8070, function() { console.log('Server started at port 8070'); });
- скачать rar файл для openssl set up отсюда:https://indy.fulgan.com/SSL/openssl-0.9.8r-i386-win32-rev2.zip
- просто скопируйте папку на диске C.
- создать openssl.cnf файл и загрузить их содержимое из : http://web.mit.edu/crypto/openssl.cnf openssl.cnf можно поместить в любое место, но путь должен быть правильным, когда мы даем в командной строке.
- открыть команду propmt и установить openssl.путь cnf C:\set OPENSSL_CONF=d: / openssl.cnf 5.Запустите это в cmd : C:\openssl-0.9.8r-i386-win32-rev2>openssl.exe
- затем запустите OpenSSL> genrsa-des3-out server.прил.ключевые 1024
- затем он попросит пароль фразы: введите 4 до 11 символов в качестве пароля для сертификата
- затем запустите этот Openssl>req-new-key server.прил.сервер выдачи ключей.КСО
- затем он запросит некоторые детали, такие как название страны и т. д. заполните его свободно. 10 . Затем запустите Openssl > rsa-in сервер.прил.сервер выдачи ключей.ключ
- запустите этот сервер OpenSSL> x509-req-days 365-in.csr-сервер signkey.сервер выдачи ключей.затем crt использует предыдущий код, который находится на переполнении стека Спасибо
Comments