Взял в Comodo бесплатный сертификат для S/MIME подписи емейлов. Сохранил его в P12 и затем конвертировал в PEM. Получил ключ и сертификаты.
Key: openssl pkcs12 -in "comodo.p12" -out "key.pem" -nocerts
Cert: openssl pkcs12 -in "comodo.p12" -out "cert.pem" -clcerts -nokeys
CAs: openssl pkcs12 -in "comodo.p12" -out "chain.pem" -cacerts
Посылаю тестовый емейл.
$data = <<<EOD
You have my authorization to spend $10,000 on dinner expenses.
The CEO
EOD;
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
if(openssl_pkcs7_sign("msg.txt", "signed.txt",
"file://".realpath("cert.pem"),
array("file://".realpath("key.pem"), "password"),
array("From" => "Me <me@domain.com>"),
PKCS7_DETACHED,
"chain.pem"
)) {
$data = file_get_contents("signed.txt");
$parts = explode("\n\n", $data, 2);
mail("test@domain.com", "Signed message.", $parts[1], $parts[0]);
} else {
echo openssl_error_string();
}
Открываю андроидный GMAIL и вижу в заголовке "Цифровая подпись недействительна". Если нажать на ссылку "Информация об отправителе", то показывает "Удостоверяющий центр: COMODO RSA Client Authentication and Secure Email CA" и предлагает скачать сертификаты.
Взял триальный сертификат в GlobalSign для проверки, тоже самое! Кто-нибудь сталкивался с таким? Где может быть ошибка?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей