Skip to content

Commit f06ed3c

Browse files
committed
把http改成使用https的安全连接
1 parent fb2f3cb commit f06ed3c

File tree

5 files changed

+179
-28
lines changed

5 files changed

+179
-28
lines changed

server/private/certificate.pem

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICQTCCAaoCCQCH2M7U6KhP0zANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJD
3+
TjENMAsGA1UECBMEd3V4aTENMAsGA1UEBxMEd3V4aTETMBEGA1UEChMKTGl0dGxl
4+
c3dhbjEjMCEGCSqGSIb3DQEJARYUbGl0dGxlc3dhbkBtaWRlYS5jb20wHhcNMTYx
5+
MjEzMDY1ODI1WhcNMTcwMTEyMDY1ODI1WjBlMQswCQYDVQQGEwJDTjENMAsGA1UE
6+
CBMEd3V4aTENMAsGA1UEBxMEd3V4aTETMBEGA1UEChMKTGl0dGxlc3dhbjEjMCEG
7+
CSqGSIb3DQEJARYUbGl0dGxlc3dhbkBtaWRlYS5jb20wgZ8wDQYJKoZIhvcNAQEB
8+
BQADgY0AMIGJAoGBAK+C3Y1uhhJAY2H3st2OVa8PnczcniO5B5AWyP+Z0TjsWJwv
9+
lfKYHDmMDVpSlHJC+//8+rZZPg6IEWPnB1oIRzyr+CXnpqxORNfq28xdFHve7pzy
10+
SxEwKjN0WFf8fW0ylxxaL4v5nymGLy5fBacinv9RCJ9F6zlWppxlvzSvEG+xAgMB
11+
AAEwDQYJKoZIhvcNAQEFBQADgYEAkYoWAa+LuBIF72gWU7F+qllXiLYZDP+ZnBgK
12+
xOwwjZ57kFbrV/m0IbONYboxWtTc+hjNhkMSXOt3HPzAetJtcwmmq/Ofk0ry6OhV
13+
T+YwiwHjMEJQYOxYf/wVv9J5ubxDt/ijd26Or2sL5qaSczO6kYziMBVxStUXoGtG
14+
MpVzImA=
15+
-----END CERTIFICATE-----

server/private/certrequest.csr

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
-----BEGIN CERTIFICATE REQUEST-----
2+
MIIBvjCCAScCAQAwZTELMAkGA1UEBhMCQ04xDTALBgNVBAgTBHd1eGkxDTALBgNV
3+
BAcTBHd1eGkxEzARBgNVBAoTCkxpdHRsZXN3YW4xIzAhBgkqhkiG9w0BCQEWFGxp
4+
dHRsZXN3YW5AbWlkZWEuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCv
5+
gt2NboYSQGNh97LdjlWvD53M3J4juQeQFsj/mdE47FicL5XymBw5jA1aUpRyQvv/
6+
/Pq2WT4OiBFj5wdaCEc8q/gl56asTkTX6tvMXRR73u6c8ksRMCozdFhX/H1tMpcc
7+
Wi+L+Z8phi8uXwWnIp7/UQifRes5VqacZb80rxBvsQIDAQABoBkwFwYJKoZIhvcN
8+
AQkHMQoTCDEyMzQ1Njc4MA0GCSqGSIb3DQEBBQUAA4GBAClB/ND2vpOqmokHLWKa
9+
s5x5SLaA2uVbB+hv7Qquhi7Y72F/6SVN6VXdyd7J2VV8xLdQXijuiJiPU+KIphb7
10+
5UInRTkxUU6ZxMT8iTCZ88WgflZGcAS3F8SuOQlWpQb8KrCVW32e2JYfg5HehfNl
11+
DGYhTVtvJjD4Xf4ssjbx3ixi
12+
-----END CERTIFICATE REQUEST-----

server/private/privatekey.pem

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIICWwIBAAKBgQCvgt2NboYSQGNh97LdjlWvD53M3J4juQeQFsj/mdE47FicL5Xy
3+
mBw5jA1aUpRyQvv//Pq2WT4OiBFj5wdaCEc8q/gl56asTkTX6tvMXRR73u6c8ksR
4+
MCozdFhX/H1tMpccWi+L+Z8phi8uXwWnIp7/UQifRes5VqacZb80rxBvsQIDAQAB
5+
AoGABAvpXcRplOwlHnIejpskgJfElJ+Vic9PTFQqKDJ8r2pLlLZIJ8K4C9+dwzJa
6+
N9QxiTJk+WVPV/htJjeCZOIB+mtaNTNBV7o4ACseCCGJdgnjxwTRtrHrNamwdoLb
7+
He+ie3q2OR8DN3W8h1QYUN6DPr9QZ5O89UJHa3PX/zMjJq0CQQDWbm3bC4pRygPk
8+
kJKjE9jMH4tMfESEl5+xjB9TDWDXCEESJrIgPErPTPiVIqiDJGopDIMOnWXi1OPR
9+
c78r7NODAkEA0Yjyl3EeVU3dfgr4vaEnVZfaJRc513g3x9vxnnz1smbaZsAyP6lF
10+
OVecL0M70GxOlLq7HJ0d9Xuy8ZJFX4AluwJAcKbnM9KmQj29OdDyGJaOqP5Rckc+
11+
v+HgVahltH4syAtgFCccIW9LZgjr932TxgHVe+dE2uK56icp4JnMb0kl/QJATW4I
12+
B4KbrPY7NUqkpJ6axHx69l3g2AjqxAY5AVI4ERcE+hdn+jJ5DDmd07FKtzhuyXM/
13+
ldFRstdlRvPAgwv95QJAHqLbQRH797nxoBbiK/f+vTA70THq3/HftOsWRPt+SCDa
14+
24cmL5qMMGKl1fUidpqFB+3/YTN2F+3QXxJrEFR6mA==
15+
-----END RSA PRIVATE KEY-----

server/private/ssl_cert.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright IBM Corp. 2014,2015. All Rights Reserved.
2+
// Node module: strong-gateway
3+
// US Government Users Restricted Rights - Use, duplication or disclosure
4+
// restricted by GSA ADP Schedule Contract with IBM Corp.
5+
6+
var crypto = require('crypto');
7+
var tls = require('tls');
8+
var fs = require('fs');
9+
var path = require('path');
10+
11+
exports.privateKey = fs.readFileSync(path.join(__dirname, 'privatekey.pem'))
12+
.toString();
13+
exports.certificate = fs.readFileSync(path.join(__dirname, 'certificate.pem'))
14+
.toString();
15+
16+
if (typeof tls.createSecureContext === 'function') {
17+
exports.credentials = tls.createSecureContext(
18+
{key: exports.privateKey, cert: exports.certificate});
19+
} else {
20+
exports.credentials = crypto.createCredentials(
21+
{key: exports.privateKey, cert: exports.certificate});
22+
}

server/server.js

Lines changed: 115 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,122 @@
1+
// var loopback = require('loopback');
2+
// var boot = require('loopback-boot');
3+
// var path = require('path');
4+
//
5+
// var app = module.exports = loopback();
6+
// var http = require('http');
7+
// var https = require('https');
8+
// var sslCert = require('./private/ssl_cert');
9+
// var httpsOptions = {
10+
// key: sslCert.privateKey,
11+
// cert: sslCert.certificate
12+
// };
13+
// app.httpsOptions = httpsOptions;
14+
// // Bootstrap the application, configure models, datasources and middleware.
15+
// // Sub-apps like REST API are mounted via boot scripts.
16+
// boot(app, __dirname, function (err) {
17+
// if (err) throw err;
18+
// });
19+
// app.start = function (httpOnly) {
20+
// // start the web server
21+
// // return app.listen(function () {
22+
// // app.emit('started');
23+
// // var baseUrl = app.get('url').replace(/\/$/, '');
24+
// // console.log('Web server listening at: %s', baseUrl);
25+
// // if (app.get('loopback-component-explorer')) {
26+
// // var explorerPath = app.get('loopback-component-explorer').mountPath;
27+
// // console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
28+
// // }
29+
// // });
30+
//
31+
// //https 方式启动
32+
// var port = app.get('port');
33+
// console.log(port)
34+
// var host = app.get('host');
35+
// var httpServer = http.createServer(app).listen(port, host, function () {
36+
//
37+
// var httpsPort = app.get('https-port');
38+
// var httpsServer = https.createServer(httpsOptions, app).listen(httpsPort,
39+
// host, function () {
40+
//
41+
// app.emit('started');
42+
//
43+
// app.close = function (cb) {
44+
// app.removeAllListeners('started');
45+
// app.removeAllListeners('loaded');
46+
// httpServer.close(function () {
47+
// httpsServer.close(cb);
48+
// });
49+
// };
50+
// });
51+
// });
52+
//
53+
//
54+
//
55+
// };
56+
//
57+
// // start the server if `$ node server.js`
58+
// if (require.main === module) {
59+
// app.start();
60+
// }
61+
// //var staticPath = null;
62+
// //
63+
// //staticPath = path.resolve(__dirname, '../client/');
64+
// //console.log("Running app in development mode");
65+
// //
66+
// //app.use(loopback.static(staticPath));
67+
//
68+
// // Bootstrap the application, configure models, datasources and middleware.
69+
// // Sub-apps like REST API are mounted via boot scripts.
70+
// // boot(app, __dirname, function (err) {
71+
// // if (err) throw err;
72+
// //
73+
// // // start the server if `$ node server.js`
74+
// // if (require.main === module)
75+
// // app.start();
76+
// // });
77+
78+
79+
80+
181
var loopback = require('loopback');
282
var boot = require('loopback-boot');
3-
var path = require('path');
483

5-
var app = module.exports = loopback();
84+
var http = require('http');
85+
var https = require('https');
86+
var sslConfig = require('./private/ssl_cert');
687

7-
app.start = function () {
8-
// start the web server
9-
return app.listen(function () {
10-
app.emit('started');
11-
var baseUrl = app.get('url').replace(/\/$/, '');
12-
console.log('Web server listening at: %s', baseUrl);
13-
if (app.get('loopback-component-explorer')) {
14-
var explorerPath = app.get('loopback-component-explorer').mountPath;
15-
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
16-
}
17-
});
18-
};
88+
var app = module.exports = loopback();
1989

20-
//var staticPath = null;
21-
//
22-
//staticPath = path.resolve(__dirname, '../client/');
23-
//console.log("Running app in development mode");
24-
//
25-
//app.use(loopback.static(staticPath));
90+
// boot scripts mount components like REST API
91+
boot(app, __dirname);
2692

27-
// Bootstrap the application, configure models, datasources and middleware.
28-
// Sub-apps like REST API are mounted via boot scripts.
29-
boot(app, __dirname, function (err) {
30-
if (err) throw err;
93+
app.start = function(httpOnly) {
94+
if (httpOnly === undefined) {
95+
httpOnly = process.env.HTTP;
96+
}
97+
var server = null;
98+
if (!httpOnly) {
99+
var options = {
100+
key: sslConfig.privateKey,
101+
cert: sslConfig.certificate,
102+
};
103+
server = https.createServer(options, app);
104+
} else {
105+
server = http.createServer(app);
106+
}
107+
server.listen(app.get('port'), function() {
108+
var baseUrl = (httpOnly ? 'http://' : 'https://') + app.get('host') + ':' + app.get('port');
109+
app.emit('started', baseUrl);
110+
console.log('LoopBack server listening @ %s%s', baseUrl, '/');
111+
if (app.get('loopback-component-explorer')) {
112+
var explorerPath = app.get('loopback-component-explorer').mountPath;
113+
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
114+
}
115+
});
116+
return server;
117+
};
31118

32-
// start the server if `$ node server.js`
33-
if (require.main === module)
34-
app.start();
35-
});
119+
// start the server if `$ node server.js`
120+
if (require.main === module) {
121+
app.start();
122+
}

0 commit comments

Comments
 (0)