配置https服务器系列之一:自制ca证书并配置到nodejs-express服务器
1、自制证书:
- // 生成私钥
- D:\working\zproject-nodejs\https>openssl genrsa -out privatekey.pem 1024
- Generating RSA private key, 1024 bit long modulus
- .................++++++
- .............++++++
- e is 65537 (0x10001)
- // 通过私钥生成CSR证书签名
- D:\working\zproject-nodejs\https>openssl req -new -key privatekey.pem -out certr
- equest.csr
- You are about to be asked to enter information that will be incorporated
- into 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 blank
- For some fields there will be a default value,
- If you enter '.', the field will be left blank.
- -----
- Country Name (2 letter code) [AU]:CN
- State or Province Name (full name) [Some-State]:省份
- Locality Name (eg, city) []:城市
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx.com
- Organizational Unit Name (eg, section) []:xxx.com
- Common Name (e.g. server FQDN or YOUR name) []:名 姓
- Email Address []:xxx@qq.com
- Please enter the following 'extra' attributes
- to be sent with your certificate request
- A challenge password []:
- An optional company name []:
- // 通过私钥和证书签名生成证书文件
- D:\working\zproject-nodejs\https>openssl x509 -req -in certrequest.csr -signkey
- privatekey.pem -out certificate.pem
- Signature ok
- subject=/C=CN/ST=***/L=***/O=***.com/OU=***.com/CN=***/emailAddress=***@qq.com
- Getting Private key
2、配置到nodejs-express服务器
将第一步生成的3个文件拷到app.js同目录下。
然后修改bin\www文件。
- /**
- * Module dependencies.
- */
- var app = require('../app');
- var debug = require('debug')('VidzyTr14:server');
- var http = require('http');
- //添加
- var https = require('https');
- var fs = require('fs');
- /**
- * Get port from environment and store in Express.
- */
- var port = normalizePort(process.env.PORT || '80'||'443');
- app.set('port', port);
- /**
- * Create HTTP server.
- */
- var server = http.createServer(app);
- //添加 Create HTTPS server.
- var options = {
- key: fs.readFileSync('./privatekey.pem'),
- cert: fs.readFileSync('./certificate.pem')
- };
- var httpsServer = https.createServer(options,app);
- /**
- * Listen on provided port, on all network interfaces.
- */
- var httpPort = normalizePort(process.env.PORT || '80');
- server.listen(httpPort);
- server.on('error', onError);
- server.on('listening', onListening);
- // 添加 监听
- var httpsPort = normalizePort('443');
- httpsServer.listen(httpsPort);
- httpsServer.on('error',onError);
- httpsServer.on('listening',onListening);