Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何用c语言传递密钥和证书_C#_Node.js_Certificate_Webrequest_Ssg - Fatal编程技术网

C# 如何用c语言传递密钥和证书

C# 如何用c语言传递密钥和证书,c#,node.js,certificate,webrequest,ssg,C#,Node.js,Certificate,Webrequest,Ssg,您好,我看到了使用带有节点js的证书认证API的演示代码 var https = require('https'), // Module for https fs = require('fs'); // Required to read certs and keys var options = { hostname: 'xxx', path: '/cou

您好,我看到了使用带有节点js的证书认证API的演示代码

var https = require('https'),                  // Module for https
    fs =    require('fs');                     // Required to read certs and keys

    var options = {
       hostname: 'xxx',         
       path: '/courses/tags?sortBy=0',      
       method: 'GET',                   // Method : Get or POST
       key: fs.readFileSync('C://testNodeJs/key.pem'),      //Input the directory for key.pem
       cert: fs.readFileSync('C://testNodeJs/cert.pem')         //Input the directory for cert.pem
       //passphrase: 'InputPassWord'                        //Input the passphrase, please remember to put ',' End of Line for cert         
    };

    makeAPICall = function(response) {
       var str = '';    
       response.on('data', function (chunk) {
          str += chunk;
       });

       response.on('end', function () {
          console.log(str);
       });
    }

https.request(options, makeAPICall).end();

            
但是我们的项目只使用c#,所以我想知道如何用c#发送带有密钥和证书的Web请求? 我试着写下面的代码,但似乎不正确

            var url1 = @"xxx";
            HttpWebRequest request1 = WebRequest.Create(url1) as HttpWebRequest;
            request1.Method = "GET";
            request1.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate("key.pem"));
            request1.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate("cert.pem"));
            
            // Get response
            using (HttpWebResponse response = request1.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(response.GetResponseStream());

                // Console application output
                var result = reader.ReadToEnd();
            }
它引发异常“System.Security.Cryptography.CryptographyException:'找不到请求的对象”
非常感谢X509Certificate类无法读取密钥。密钥也不应被传输

使用OpenSSL将密钥和pem合并到PKCS#12/PFX文件中,然后尝试以下操作:

request1.ClientCertificates.Add(
新X509E2证书(
“certAndKey.pfx”,
密码);
当使用证书进行MutualTLS(客户机证书身份验证)时,可能存在一些问题,因此请确保证书符合条件