0
所以我正在研究一個基本的節點應用程序。客戶端將通過SSL連接到它。當我只使用服務器證書時似乎工作正常,但是當我嘗試要求客戶端證書時,無論我將它扔到什麼地方,它都會繼續工作。node.js + restify - 需要客戶端證書
我在這個網站上發現了與此相關的問題,但其中包含的答案似乎並不適用於我。 Here's one.
下面是相關的代碼:
var restify=require('restify');
var fs=require('fs');
var server=restify.createServer({
certificate: fs.readFileSync('../certs/server.crt'),
key: fs.readFileSync('../certs/server.key'),
ca: fs.readFileSync('../certs/ca.crt'),
requestCert: true,
rejectUnauthorized: true,
});
...
server.listen(8080, function() {
console.log('servers up...');
});
我使用curl來測試連接,幾乎任何進來導致登錄到控制檯請求對象。
我使用的各種curl命令行是:
curl -k https://localhost:8080/hello
curl -k -E user.combined:password https://localhost:8080/hello
我使用-k,因爲這些證書在本地生成和捲曲想要驗證它們。 (這可能是問題所在)
因此,無論我發送給節點實例,如果用戶使用正確的證書,我都會得到輸出結果(因爲它們位於第二個curl命令中上面一行)。
在控制檯登錄,我看到:
req = { socket:
{ pair:
_secureEstablished: true,
_isServer: true,
...
_rejectUnauthorized: false,
_requestCert: false,
(further down)
authorized: false
顯然,有一些事情在這裏,我不是完全加快速度。會是什麼呢?
== == UPDATE
使用-v,捲曲打動了我一些額外的信息,包括在這嫋嫋輸出:
* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1... connected
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
如上所述,我ca.crt文件是在(相對)目錄../certs
謝謝。