2013-09-13 2 views
0

Я использую простой код PHP, похожий на пример стандартной openssl_pkcs7_sign(), чтобы подписать много писем в цикле http://php.net/manual/en/function.openssl-pkcs7-sign.phpизбежать повторного чтения PEM файла при создании подписи OpenSSL

Проблема этот код тоже/O интенсивный. Это считывает те же сертификаты и вызывает функции openssl в цикле.

Могу ли я просто прочитать сертификат в памяти и использовать для подписания каждый

Это соответствующая часть сценария

<?php 

$headers = array("From: Ram <[email protected]>", "Subject" => "Signed mail"); 


/* All the recipients who will get the mail */ 
$users = array ('[email protected]' , '[email protected]','[email protected]'); 

foreach ($users as $rcpt){ 
    $headers['To'] = $rcpt; 

openssl_pkcs7_sign($rcpt."infile.txt", 
        "outfile.txt","file://noPassPrivatePublicKey.pem", 
        array("file://noPassPrivatePublicKey.pem", ""), 
        $headers); 

    /* Now make an smtp connection and send the mail */ 
    send_mail_to_smtp($from,$rcpt,"outfile.txt"); 
} 

?> 

ответ

-1

Подписать почту один раз и разослать его всем получателям. S/MIME подписывает только почтовый ящик. Поэтому установка заголовка To: впоследствии не приведет к недопустимости подписи.

+0

Нет фактической почты для каждого получателя. Это отдельные выписки по счету – Ram

+0

Скопируйте сертификат на RAM-диск (tmpfs). –

+0

Редактирование вопроса, чтобы сделать правильный правильный ответ ложным и оправдать голосование, ответ не подходит. Это не моя вина, если вы значительно упростили свой пример кода. –

Смежные вопросы