私は、すべてのリクエストがHTTPSであることを必要とするAPIのラッパーを書き始めました。開発中やテスト中に実際のAPIにリクエストをする代わりに、ローカルで自分のサーバーを動かしてレスポンスをモックしたいと思います。
HTTPS サーバーを作成し、リクエストを送信するために必要な証明書をどのように生成すればよいか、混乱しています。
私のサーバーはこのような感じです。
var options = {
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./cert.pem')
};
https.createServer(options, function(req, res) {
res.writeHead(200);
res.end('OK\n');
}).listen(8000);
でpemファイルを生成しました。
openssl genrsa 1024 > key.pem
openssl req -x509 -new -key key.pem > cert.pem
そして、リクエストは次のようなものです。
var options = {
host: 'localhost',
port: 8000,
path: '/api/v1/test'
};
https.request(options, function(res) {
res.pipe(process.stdout);
}).end();
この設定では、Error:DEPTH_ZERO_SELF_SIGNED_CERT
が表示されるので、リクエストに ca
オプションを追加する必要があるようです。
そこで質問なのですが、以下のようにどのように生成すればよいのでしょうか?
key
?cert
?ca
は?OpenSLの自己署名証明書の生成についていくつか読みましたが、どのキーと証明書を私のノードのコードのどこで使用するか、理解することができないようです。
**更新情報
APIは、デフォルトの代わりに使用するCA証明書を提供します。以下のコードはその証明書を使用して動作し、これは私がローカルで再現したいものです。
var ca = fs.readFileSync('./certificate.pem');
var options = {
host: 'example.com',
path: '/api/v1/test',
ca: ca
};
options.agent = new https.Agent(options);
https.request(options, function(res) {
res.pipe(process.stdout);
}).end();