用Node.js實現基於https的Restful風格webservice
1. 建立認證檔案bash-3.2$ bash-3.2$ mkdir sslbash-3.2$ cd sslbash-3.2$ openssl genrsa -out key.pem 1024Generating RSA private key, 1024 bit long modulus....................................++++++..........++++++e is 65537 (0x10001)bash-3.2$ openssl req -new -key key.pem -out certrequest.csrYou are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:State or Province Name (full name) [Some-State]:Locality Name (eg, city) []:Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (e.g. server FQDN or YOUR name) []:Email Address []: Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:bash-3.2$ bash-3.2$ bash-3.2$ openssl x509 -req -in certrequest.csr -signkey key.pem -out cert.pemSignature oksubject=/C=AU/ST=Some-State/O=Internet Widgits Pty LtdGetting Private keybash-3.2$ bash-3.2$ 2. vim app.js 1 var express = require('express'), https = require('https'), fs = require('fs'); 2 3 var privateKey = fs.readFileSync('./ssl/key.pem').toString(); 4 var certificate = fs.readFileSync('./ssl/cert.pem').toString(); 5 var ca = fs.readFileSync('./ssl/certrequest.csr').toString(); 6 7 var options = { 8 key : privateKey, 9 cert : certificate, 10 ca : ca 11 } 12 13 var app = express(); 14 15 //RESTful API 16 app.get("/testapi", function(req, res){ 17 res.send('test api'); 18 }); 19 20 app.get("/", function(req, res){ 21 res.send(''); 22 }); 23 24 https.createServer(options, app).listen(443, function() { 25 console.log('https server started successfully.'); 26 }); 27 28 app.listen(80); 3. node app