Choco Soft

Nadesiko DE RDB

Choco Soft header image 2

Nadesiko3サーバーの作り方その7

2021年06月27日 · コメント(0) · Nadesiko3, Nginx, Server

【20210815】大幅に修正しております。
nodejs単体で作成した経験を活かして、アクセス先を変えて試験を行う。

[root@ik1-403-xxxxx nadesiko]# node ./node_modules/.bin/nako3edit
* [WEBサーバ(なでしこ+Express)] (debug)
| 以下のURLで起動しました。
+- [URL] http://localhost:3030
>>> ————————————————–
>>> サーバ起動に成功しました。
>>> nako3edit にアクセスするには、以下のURLにアクセスします
>>> [URL] http://localhost:3030?appkey=2366_33664_63392
>>>
[static] /html /home/nadesiko/node_modules/nadesiko3/tools/nako3edit/html
[static] /release /home/nadesiko/node_modules/nadesiko3/release
[GET] /
[GET] /test
[GET] /files
[GET] /load

上記内容からこちらにアクセスします。
http://nako.tokyo:3030?appkey=2366_33664_63392

無事NODEJS版のNadesiko3が表示されました!

今度はSSLのURLから接続できるようにしたいです。

途中でおかしなエラーがありました。(nginxのログに)
1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
こんなプロトコル対応していないよと書かれています。

⇒「NodeJS v11.4.0」からtlsのデフォルトの最小のバージョンが「TLSv1.2」に変わった事が原因でした。

解決策として、TLS1でも受け入れるように起動時にオプションをつけます。
>node –tls-min-v1.0 /home/nadesiko/node_modules/nadesiko3/src/nako3server.js

CentOS側でも同じようにTLSの規制が厳しいので、上記対策でもエラーログが消えない場合はOS側にコマンドで対応します。
>update-crypto-policies –set LEGACY

※目指すはHTTPSでアクセスできるようにする事です。

まずは適当にファイルを作成して、SSLで確認してみます。
>vi server.js

var https = require(‘https’);
var fs = require(‘fs’);
var ssl_server_key = ‘/etc/letsencrypt/live/nako.tokyo/privkey.pem’;
var ssl_server_crt = ‘/etc/letsencrypt/live/nako.tokyo/cert.pem’;
var port = 3001;

var options = {
key: fs.readFileSync(ssl_server_key),
cert: fs.readFileSync(ssl_server_crt)
};

https.createServer(options, function (req,res) {
res.writeHead(200, {
‘Content-Type’: ‘text/plain’
});
res.end(“Hello, world\n”);
}).listen(port);

ブラウザで確認します。
https://nako.tokyo:3001
これは順当に確認できました。

上記の結果から、当初なでしこ3のNodeモジュールを触らずに実現したかったのですが、どうも無理っぽいので試行してみます。
(nako3editの内部にSSL証明書のフルパスを書く等)

nako3editの中を確認してみます。

[root@ik1-403-xxxxx .bin]# cat nako3edit
#!/usr/bin/env node

const spawn = require(‘child_process’).spawn
const path = require(‘path’)
const nakoHome = path.resolve(path.join(__dirname, ‘../../’))
const cnako3 = path.resolve(path.join(nakoHome, ‘src/cnako3.js’))
const nako3edit = path.resolve(path.join(__dirname, ‘index.nako3’))

let proc = spawn(‘node’, [cnako3, nako3edit])
proc.stdout.on(‘data’, (data) => {
console.log(data.toString())
})

恐らく、このファイルに対してSSL証明書を記述すれば良いはず?
ちょっと長くなったので、8に続きます。

 

タグ : ···

コメント(0)

コメントはまだありません。

コメントする

*