2016-03-10 3 views
0

Je reçois une erreur lorsque je lance la commande de vérification Openssl sur Ubuntu 14,04 avec Openssl 1.0.1f 6 janvier 2014. L'erreur est 0x2F067065 avec la chaîne d'erreur time stamp routines:TS_CHECK_SIGNING_CERTS:ess signing certificate error.erreur 0x2F067065 dans ts_rsp_verify.c: 291

Le fournisseur d'horodatage soupçonne qu'il s'agit d'un bogue d'Openssl. Openssl est occupé avec la nouvelle version et n'est pas réactif sur ce sujet qui est de faible priorité.

Quelle est cette erreur, comment puis-je résoudre ce problème? Quelqu'un pourrait-il m'aider?


C'est lorsque l'erreur se produit:

openssl ts -verify -digest e16db7d30581e44a5540f19553852b5a4e4e26f9adc365cc846f94038ee33025 \ 
-in /tmp/namirial.tsr -CAfile /tmp/NamirialCATSA.pem 

Verification: FAILED 
140236013643424:error:2F067065:time stamp routines:TS_CHECK_SIGNING_CERTS:ess signing 
certificate error:ts_rsp_verify.c:291: 

Si nécessaire, j'ai un scénario de reproduction complète, je peux envoyer en privé. L'erreur est systématique et stable. Ceci est le code PHP où j'appelle la bibliothèque openssl pour effectuer la validation, toute aide sur la façon de trouver une bibliothèque similaire (comme il semble que c'est un bug dans Openssl, donc j'ai besoin d'utiliser une autre bibliothèque) et comment appelez-le formulaire PHP dans Ubuntu?

public static function validate ($hash, $base64_response_string, $response_time, $tsa_cert_file) 
{ 
    //if (strlen($hash) !== 40) 
    //if (strlen($hash) !== 64) // sha256 
     //throw new Exception("Invalid Hash"); 

    $binary_response_string = base64_decode($base64_response_string); 

    if (!strlen($binary_response_string)) 
     throw new Exception("There was no response-string");  

    if (!intval($response_time)) 
     throw new Exception("There is no valid response-time given"); 

    if (!file_exists($tsa_cert_file)) 
     throw new Exception("The TSA-Certificate could not be found"); 

    $responsefile = self::createTempFile($binary_response_string); 
    $cmd = "openssl ts -verify -digest ".escapeshellarg($hash)." -in ".escapeshellarg($responsefile)." -CAfile ".escapeshellarg($tsa_cert_file); 

    $retarray = array(); 
    exec($cmd." 2>&1", $retarray, $retcode); 
    if(unlink($responsefile)) { 
      If ($debugMN) {echo " File Deleted Tempfile in validate"; }  
    } 

    /* 
    * just 2 "normal" cases: 
    * 1) Everything okay -> retcode 0 + retarray[0] == "Verification: OK" 
    * 2) Hash is wrong -> retcode 1 + strpos(retarray[somewhere], "message imprint mismatch") !== false 
    * 
    * every other case (Certificate not found/invalid/openssl is not installed/ts command not known) 
    * are being handled the same way -> retcode 1 + any retarray NOT containing "message imprint mismatch" 
    */ 

    if ($retcode === 0 && strtolower(trim($retarray[0])) == "verification: ok") 
    { 
     if (self::getTimestampFromAnswer ($binary_response_string) != $response_time) 
      throw new Exception("The responsetime of the request was changed"); 

     return true; 
    } 
    foreach ($retarray as $retline) 
    { 
     if (stripos($retline, "message imprint mismatch") !== false) 
      return false; 
    } 
    throw new Exception("Systemcommand failed: ".implode(", ", $retarray)); 
} 

Nous vous remercions à l'avance

+0

Stack Overflow est un site de questions sur la programmation et le développement. Cette question semble être hors sujet car il ne s'agit pas de programmation ou de développement. Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être que [Super User] (http://superuser.com/) ou [Apple Stack Exchange] (http://apple.stackexchange.com/) serait un meilleur endroit à demander. Voir aussi [Où poser des questions sur Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww

+0

* "J'ai un scénario de reproduction complet que je peux envoyer en privé ..." * - Si vous posez la question sur le site approprié, vous devez fournir les détails afin que la communauté puisse le reproduire. Sinon, il sera probablement fermé avec *** Can not duplicate *** ou similaire. Si vous ne voulez pas fournir les détails, alors vous devrez trouver un autre forum parce que c'est * pas * comment fonctionnent les sites du réseau Stack Exchange. – jww

+0

Voir également [Bug possible dans OpenSSL - rfc 3161 - service TSA] (http://openssl.6102.n7.nabble.com/possible-Bug-in-OpenSSL-rfc-3161-TSA-service-td43128.html) sur la liste de diffusion OpenSSL. – jww

Répondre

0

Vous avez pas posé de question donc il n'y a rien à répondre ici, mais de toute façon je vais essayer de faire la lumière dans votre obscurité :)

Votre fournisseur Il est probable qu'il ajoute un certificat d'attribut dans les réponses TS - j'imagine qu'il utilise DSE200 avec TAC activé, probablement tout le monde voit des problèmes similaires - et OpenSSL ne supporte actuellement pas de tels scénarios. Vous pouvez jeter un oeil à this older thread de la liste de diffusion openssl-users où ce problème a été discuté en détail.

+0

La question était dans le titre, comment puis-je le réparer? J'ai lu tout ce vieux fil mais je ne l'ai pas très bien compris, je ne suis pas expert, j'ignore s'il y a une solution pour moi. Pourriez-vous s'il vous plaît conseiller? Que devrais-je faire? Utiliser une autre technologie pour vérifier la réponse TSA que je reçois ou quoi? Est-ce que je devrais poster le certificat pour que vous puissiez jeter un oeil? – MSCA

+0

@MSCA La solution la plus simple consiste à utiliser autre chose que l'application OpenSSL par défaut pour la vérification ou à utiliser un autre fournisseur d'horodatage. – jariq

+0

Merci jariq, changer de fournisseur est plus complexe, toute suggestion sur l'utilisation d'autre chose pour effectuer la vérification? Toute norme disponible que vous connaissez? – MSCA