I am using Go in of the projects and I am trying to access 3rd party API test serve using a certificate certificate.pem.
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-----
This is my golang code. When running it I see: failed to connect: remote error: bad certificate
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()
I am bit lost and tried to use PHP, everything seems to work there. I can connect and make requests :/
require_once 'config.php'; $code = $argv[1]; echo " Gettings full-access token. Sending request with code... "; $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();
Can anyone tell me what am I doing wrong in GO? What's the difference or what am I missing in GO?
Kind regards.