Azure Blob存储:无法验证第一个证书

时间:2016-12-11 05:33:15

标签: node.js azure

我创建了一个新的azure存储帐户。在其中我有一个blob容器,其访问类型设置为'private'。以下是我尝试创建容器的nod​​ejs代码。

var azure = require('azure-storage');              
            var accountName = "xxxxxxxxxx";
            var accessKey = "veryLongAccessKey";
            var host = "https://abc.blob.core.windows.net";
            var blobSvc = azure.createBlobService(accountName, accessKey, host);

            blobSvc.createContainerIfNotExists('myblobContainer', function(error, result, response) {
                console.log("error");
                console.log(error);
                console.log("result");
                console.log(result);
                console.log("response");
                console.log(response);
            });

当我执行此代码时,我得到以下错误。

{ Error: unable to verify the first certificate
    at Error (native)
    at TLSSocket.<anonymous> (_tls_wrap.js:1062:38)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:586:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:416:38) code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }

Azure storage account properties

我错过了什么?

2 个答案:

答案 0 :(得分:2)

openssl s_client -connect {StorageAccount}.blob.core.windows.net:443 \
                 -servername {StorageAccount}.blob.core.windows.net

表示:

Certificate chain

 0 s:/CN=*.blob.core.windows.net
   i:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation
     /OU=Microsoft IT/CN=Microsoft IT SSL SHA2

 1 s:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation
     /OU=Microsoft IT/CN=Microsoft IT SSL SHA2
   i:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root

你可能错过了巴尔的摩根CA.

可能的原因:

  • 您的Node的CA捆绑包中缺少证书,并且链验证失败。不熟悉Node如何处理其CA捆绑包,但值得进行研究

  • 你的TLS中有一些东西(小提琴手或其他一些中间人TLS 检查员

可以找到使用ssl-root-cas的解决方法here(如果您无法跟踪根本原因)。

答案 1 :(得分:0)

当尝试从公司的网络(防火墙和代理服务器)连接到Azure存储blob并尝试关闭SSL验证时,我遇到了一些SSL验证问题。

const myRequest = require('request').defaults({strictSSL: false})

别忘了在最后重新启用此功能。 尽管此方法暂时有效,但这是一种解决方法/脏污修复方法,而不是解决方案。