オレオレHTTPSサーバを立てる
実際には証明書を買うとしても、開発時にはオレオレ証明書。
$ openssl req -nodes -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 90 Generating a 2048 bit RSA private key ...........................+++ .........................+++ writing new private key to 'key.pem' ----- 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]: 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 []: $ ls cert.pem key.pem
opensslを使って証明書を作ってますが、パラメータの「-nodes」が必要です。これを付けないとhttpsを上げた時に「error:0906A068:PEM routines:PEM_do_header:bad password」とエラーが出ちゃう。最後の90は有効期間で、伸ばしたければ365とか。途中のopensslとの対話ではパスフレーズを4文字以上で適当に入力する以外、リターンキーで省略OK。
var fs = require('fs'); var https = require('https'); var app = express(); var privateKey = fs.readFileSync('key.pem'); var certificate = fs.readFileSync('cert.pem'); app.use(express.static('public')); https.createServer({key: privateKey, cert: certificate}, app).listen(443 function() { process.setuid('masataka_k'); });
平民で実行するとデカいポート番号(8443とか)にしなければ「listen EACCES 0.0.0.0:443」というようにエラーで上がらない。ルートで実行。
$ sudo node server.js
ルートで上げっぱだとセキュリティ上ナニなので、process.setuid()をするってNodeクックブックに書いてあった。が、これでいいのかな?psするとこんな状態。最後によくわかってなくておまじない状態。本番あげるまでには識者を見つけねば。
$ ps -ax | grep node 4020 ttys000 0:00.01 sudo node server.js 4021 ttys000 0:00.33 node server.js 4037 ttys001 0:00.00 grep node
- 作者: David Mark Clements,和田祐一郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/02/23
- メディア: 大型本
- 購入: 2人 クリック: 4回
- この商品を含むブログ (5件) を見る