GOlang SSL错误:PHP everyhting中的错误证书/

GOlang SSL错误:PHP everyhting中的错误证书/,ssl,go,https,Ssl,Go,Https,我正在使用项目的进入,我正在尝试使用certificate.pem访问第三方API测试服务 Bag Attributes friendlyName: anobii localKeyID: BC B5 C1 04 51 33 1A BF 73 84 F4 A6 6B 56 22 FC 35 E6 46 CE Key Attributes: -----BEGIN PRIVATE KEY----- blablablalba -----END PRIVA

我正在使用项目的进入,我正在尝试使用certificate.pem访问第三方API测试服务

Bag Attributes friendlyName: anobii localKeyID: BC B5 C1 04 51 33 1A BF 73 84 F4 A6 6B 56 22 FC 35 E6 46 CE Key Attributes: -----BEGIN PRIVATE KEY----- blablablalba -----END PRIVATE KEY----- Bag Attributes friendlyName: anobii localKeyID: BC B5 C1 04 51 33 1A BF 73 84 F4 A6 6B 56 22 FC 35 E6 46 CE subject=/CN=anobii issuer=/CN=anobii -----BEGIN CERTIFICATE----- MIIC5zCCAc+gAwIBAgIJAOw7fdq2T3DeMA0GCSqGSIb3DQEBDAUAMBExDzANBgNV BAMTBmFub2JpaTAeFw0xNDA3MTcxMDI1MjVaFw0xOTA3MTYxMDI1MjVaMBExDzAN BgNVBAMTBmFub2JpaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKNL 7F6G99qi1i94QzEIotsEV9ppD4JrzWcyGZinsUyShhR4EBr7avgXnfZop2YBqR7m brj15FmDXlBGJf01pPC+bQOGYV4AkWADfQujDbjQnYgvvjSSl9qym+sUhVIFQ3Rl XfUeKxePB/OvZAh+aAR5BCa19ry/b4nq6VOzx6Lzvmz/uDprn6CXdJ+ow8ORcQC5 iAOJVljHJfUwBSRliywIJ3WyCs+U1CW/aaxGQ9SKlFMOALhznzXy59rKPjhtBfVY zFKnzNZHatV3/dAgZNZe85ZftcobEHSSqi2jG3SuapIqwYlg4Vlaf3McoupX9+20 zlYt0KInjCO1P+9bKRkCAwEAAaNCMEAwHQYDVR0OBBYEFLy1wQRRMxq/c4T0pmtW Ivw15kbOMB8GA1UdIwQYMBaAFLy1wQRRMxq/c4T0pmtWIvw15kbOMA0GCSqGSIb3 DQEBDAUAA4IBAQCRueNuYLnxkwm+zl05a96PTCVCPzP4kZEAN7pwl/ruf0njLQVo ulCPN5dWxfgO95f7vcMQp2feFK+bmf8jBK1j5hCMUTvEiMy8k78rLw8vqf2rlAhR 61gYq3jgdSB2FCauJd9a1Cca2XUS/apHFDjLv8yBti1Y5xFv8E02S/oKbcLjpnYS ZKdJw1CZBj4zOmjNG2/vom8G1/IUsNm0r7J1URyrrUR0TDWmgecGXFU8F4kjc2lh OXWEdReDrJ0KDh+IJW3RZ/SjBP8GWygoFr2uUjsxCbdAyxcyEVIQ1VDUU0naXJbH i8ta8Bu9XNkAVj7ip9lZjKtV5xlcnXhwi/Dd -----END CERTIFICATE----- 行李属性 友人姓名:anobii localKeyID:BC B5 C1 04 51 33 1A BF 73 84 F4 A6 6B 56 22 FC 35 E6 46 CE 关键属性: -----开始私钥----- 布拉尔巴 -----结束私钥----- 行李属性 友人姓名:anobii localKeyID:BC B5 C1 04 51 33 1A BF 73 84 F4 A6 6B 56 22 FC 35 E6 46 CE subject=/CN=anobii 发卡机构=/CN=anobii -----开始证书----- MIIC5zCCAc+GAWIBAGIJAOW7FDQ2T30GCSQGSIB3DQEBDAUMBEXDZANBGNV BAMTMFUB2JPATAEFW0xNDA3MTCxMDI1MJVAFW0xOTA3MTYxMDI1MJVAMBEXDZAN bgnvbamtbmfub2jpatccasiwdqyjkozihvcnaqebqadggepadcaqocggebaknl 7F6G99qi1i94QzEIotsEV9ppD4JrzWcyGZinsUyShhR4EBr7avgXnfZop2YBqR7m brj15FmDXlBGJf01pPC+bQOGYV4AkWADfQujDbjQnYgvvjSSl9qym+sUhVIFQ3Rl XfUeKxePB/OvZAh+aAR5BCa19ry/b4nq6VOzx6Lzvmz/uDprn6CXdJ+ow8ORcQC5 iAOJVljHJfUwBSRliywIJ3WyCs+U1CW/AAXGQ9SKLFMOALHZXY59RKPJHTBFY zFKnzNZHatV3/DAGZNZE85ZFTCOBEHSQI2JG3SUAPIQWYLG4Vlaf3MCOUPX9+20 ZLYT0KINCO1P+9BKRKCAWEAANCMEAWQYDVR0OBBYEFLY1WQRRMXQ/c4T0pmtW Ivw15kbOMB8GA1UdIwQYMBaAFLy1wQRRMxq/c4T0pmtWIvw15kbOMA0GCSqGSIb3 DQEBDAUAA4IBAQRUENUYLNXKWM+zl05a96PTCVCPzP4kZEAN7pwl/ruf0njLQVo ulCPN5dWxfgO95f7vcMQp2feFK+bmf8jBK1j5hCMUTvEiMy8k78rLw8vqf2rlAhR 61gYq3jgdSB2FCauJd9a1Cca2XUS/apHFDjLv8yBti1Y5xFv8E02S/oKbcLjpnYS ZKDJW1CZBJN4ZOMJNG2/vom8G1/IUSNM0R7J1URYRRURR0TDWMGECGXFu8F4KJC2LH OxwedreRJ0KDH+IJW3RZ/SJBP8GWYGOFR2UUJSXCBDAYXYEVIQ1VDU0NAXJBH I8TA8BU9XNKAVJ7IP9LZJKTV5XLCNHWI/Dd -----结束证书----- 这是我的golang代码。运行时,我看到:连接失败:远程错误:证书错误

证书:=x509.NewCertPool() pemData,err:=ioutil.ReadFile(“configuration/keys/certificate.pem”) 如果出错!=零{ log.Fatalf(“未能准备证书-%s”,错误) } 证书附录CertsFromPEM(pemData) mTLSConfig:=&tls.Config{ RootCAs:certs, 不安全感验证:正确, } tr:=&http.Transport{TLSClientConfig:mTLSConfig} conn,err:=tls.Dial(“tcp”,“server.com:443”,mTLSConfig) 如果出错!=零{ 死机(“连接失败:+err.Error()) } 康涅狄格州关闭 我有点迷路了,尝试使用PHP,那里的一切似乎都正常。我可以连接并提出请求:/

需要一次'config.php'; $code=$argv[1]; echo“\n\n设置完全访问令牌。使用代码发送请求…\n\n”; $curl=curl_init(); curl_setopt($curl,CURLOPT_VERBOSE,true); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_SSLCERT,$config['ssl_客户端证书]); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($curl,CURLOPT_URL,'https://'。$config['base_URL_certapi'].“/oauth/token”); curl_setopt($curl,CURLOPT_HTTPHEADER[ '主机:'.$config['base\u url\u certapi'], 'Authorization:Basic'.base64_encode($config['client_id'].:'。$config['client_secret']), '内容类型:application/x-www-form-urlencoded', ]); $postFields=[ “授权类型”=>“授权代码”, “代码”=>$code, 'redirect\u uri'=>$config['redirect\u uri'] ]; curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($POSTFIELDS)); $output=curl\u exec($curl); echo$输出; curl_close($curl); 模具(); 谁能告诉我围棋中我做错了什么?围棋有什么不同,或者我错过了什么


亲切问候。

您真的只包含了一个私钥吗?哦,它是为测试服务器自行生成的。甚至连一部作品都没有。反正已删除。@cnicutar为什么不包括一个测试私钥,而该私钥不是在本问题的目的之外使用的?如果您打算使用
unsecureskipverify
,为连接设置CA证书有什么意义?有几点:1)您似乎加载的不是CA证书,而是您自己的证书;然后将此证书添加为TLS配置的
RootCAs
属性。这不是它的目的。2) 您没有检查
AppendCertsFromPEM()
的返回值。您真的只是包含了一个私钥吗?哦,它是为测试服务器自行生成的。甚至连一部作品都没有。反正已删除。@cnicutar为什么不包括一个测试私钥,而该私钥不是在本问题的目的之外使用的?如果您打算使用
unsecureskipverify
,为连接设置CA证书有什么意义?有几点:1)您似乎加载的不是CA证书,而是您自己的证书;然后将此证书添加为TLS配置的
RootCAs
属性。这不是它的目的。2) 您不检查
AppendCertsFromPEM()的返回值。
。 certs := x509.NewCertPool() pemData, err := ioutil.ReadFile("configuration/keys/certificate.pem") if err != nil { log.Fatalf("Failed to prepare cert - %s", err) } certs.AppendCertsFromPEM(pemData) mTLSConfig := &tls.Config{ RootCAs: certs, InsecureSkipVerify: true, } tr := &http.Transport{TLSClientConfig: mTLSConfig} conn, err := tls.Dial("tcp", "server.com:443", mTLSConfig) if err != nil { panic("failed to connect: " + err.Error()) } conn.Close() require_once 'config.php'; $code = $argv[1]; echo "\n\nGettings full-access token. Sending request with code...\n\n"; $curl = curl_init(); curl_setopt($curl, CURLOPT_VERBOSE, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSLCERT, $config['ssl_client_cert']); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_URL, 'https://' . $config['base_url_certapi'] . "/oauth/token"); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Host: ' . $config['base_url_certapi'], 'Authorization: Basic ' . base64_encode($config['client_id'] . ':' . $config['client_secret']), 'Content-Type: application/x-www-form-urlencoded', ]); $postFields = [ 'grant_type' => 'authorization_code', 'code' => $code, 'redirect_uri' => $config['redirect_uri'] ]; curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postFields)); $output = curl_exec($curl); echo $output; curl_close($curl); die();