GOlang SSL错误:证书错误,在PHP中什么都有效; //

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.