Я не мастер SSL, поэтому я надеюсь, что кто-нибудь из них сможет помочь с этим. Я разрабатываю демонстрацию приложения, которое некоторое время назад могло успешно отправлять сообщения FCM. Мобильное приложение вызывает сценарий PHP на сервере CentOS 7, который использует следующий код для отправки запроса. Это сработало нормально.
$notification = array('title' =>$this->title , 'body' => $this->body, 'sound' => 'default', 'badge' => '1');
// $arrayToSend = array('to' => $token, 'notification' => $notification,'priority'=>'high');
$params_android = array('ttl'=>'0s','priority'=>'high');
$headers_apns = array('apns-expiration'=>'400','apns-priority'=>'10');
$params_apns = array('headers'=>$headers_apns);
// if only one recipient, must use the 'to' field instead of registration_ids
if (1 == sizeof($this->recipients)) {
$arrayToSend = array('to' => $this->recipients[0], 'notification' => $notification, 'android'=>$params_and$
} else {
$arrayToSend = array('registration_ids' => $this->recipients, 'notification' => $notification, 'android'=>$
}
$json = json_encode($arrayToSend);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: key='. self::$SERVER_KEY_COMMTEST;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::$FCM_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//Send the request
$response = curl_exec($ch);
//Close request
if ($response === FALSE) {
$this->errorstring .= curl_error($ch) . "\n";
return false;
}
curl_close($ch);
$this->fcm_response = $response;
URL, на который я отправляю запрос, предоставляется Google: https://fcm.googleapis.com/fcm/send
Около шести месяцев go, Я приостановил работу над этим проектом. Теперь я пытаюсь возобновить его, но вызовы FCM возвращают ошибку: «Сертификат эмитента недействителен»
Поддержка FCM здесь бесполезна.
Я могу выполнить ручной вызов CURL из командной строки, чтобы получить более подробный ответ. Это:
curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
Я вижу ссылку на подробности в подробном ответе. Он предполагает, что мне нужно получить сертификаты и go в процессе установки. Где я могу получить указанные сертификаты?
Это ошибка сертификата на моем или их сервере? И как мне это исправить?