Ankündigung

Einklappen
Keine Ankündigung bisher.

SSL Request

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zcmaster
    hat ein Thema erstellt SSL Request.

    SSL Request

    hallo leute,

    folgendes Problem:

    Soll ein Post Request mit einem Zertifikat an eine Server senden, kennt einer ein gutes tut oder pages die einem hilfestellung geben.

    danke

    mfg zcmaster

  • Gast-Avatar
    Ein Gast antwortete
    Zitat von zcmaster
    Warning: fsockopen(): Unable to set local cert chain file keyfile.pem'; Check that your cafile/capath settings include details of your certificate and its issuer in *.php on line 36

    weis da jemand etwas dazu?
    Im Handbuch findet man unter den "Userkommentaren" folgendes:

    Set up SSL connection to server that requires client certificate:

    Convert client certificate from *.pfx (pkcs12) into*.pem with openssl (if needed):

    > openssl pkcs12 -in keys.pfx -out keys.pem

    Code:
    $context = stream_context_create();
    $result = stream_context_set_option($context, 'ssl', 'local_cert', '/path/to/keys.pem');
    $result = stream_context_set_option($context, 'ssl', 'passphrase', 'pass_to_access_keys');
    
    $socket = fsockopen('ssl://'.$host, 443, $errno, $errstr, 30, $context);
    http://de.php.net/function.fsockopen

    Weiteres siehe da:
    http://www.google.de/search?sourceid...ockopen+%2Bssl

    Einen Kommentar schreiben:


  • zcmaster
    antwortet
    hi leute hier nun das script mit dem ich es versuche:


    Code:
    $strHttpMethod="POST";
    $strUrl="xxx.xxx.xxx.xxx/serverpfad";
    $strKeyFile="/absoluterpfad/keyfile.pem";
    $strKeyFilePath="/absoluterpfad/";
    $strKeyPasswd="asdef";
    $strHost="xxx.xxx.xxx.xxx";
    $strDTD = "http://pfadamserver/file.dtd";
    $port = 443;
    //Kunden Daten
    $Benutzer = "benutzer";
    $BenutzerName = "name";
    $BenutzerEmail ="mail";
    $KdNr = "12345";
    
    $temp ="";
    $res = null;
    
    
    $XMLCode = $temp;
        
        $opts = array('ssl'=>array(
        'verify_peer'=>false,
        'allow_self_signed'=>true,
        'cafile'=>$strKeyFile,
        'capath'=>$strKeyFilePath,
        'local_cert'=>$strKeyFile, 
        'passphrase'=>$strKeyPasswd
        ));
    
        $context = stream_context_create($opts);
        
        $fp = fsockopen("ssl://".$strHost,$port, $errno, $errstr,30,$context);
        if (!$fp) die($errstr.": ". $errno."
    ");
    
        print "Connection Open
    ";    
        
        fputs($fp,$strHttpMethod ." https://".$strUrl." HTTP/1.1\r\n");
        fputs($fp,"host: ".$strHost."\r\n");
        fputs($fp,"Accept-Encoding: gzip, deflate\r\n");
        fputs($fp,"User-Agent: ZMR Contact 0.4.3\r\n");
        fputs($fp,"Connection: close\r\n");
        fputs($fp,"X-Version: 1\r\n");
        fputs($fp,"X-AUTHENTICATE-UserID: ".$Benutzer."\r\n");
        fputs($fp,"X-AUTHENTICATE-cn: ".$BenutzerName."\r\n");
        fputs($fp,"X-AUTHENTICATE-gvGID: ".$BenutzerEmail."\r\n");
        fputs($fp,"X-AUTHENTICATE-gvOudomain: mydomain.com\r\n");
        fputs($fp,"X-AUTHENTICATE-Ou: Firm\r\n");
        fputs($fp,"X-AUTHENTICATE-KDNR: ".$dNr."\r\n");
        fputs($fp,"X-AUTHORIZE-roles: Anfrage=();\r\n");
        fputs($fp,"Content-Type:  text/xml;; charset=UTF-8\r\n");
        fputs($fp,"Content-Length: ".strlen($temp)."\r\n");
        fputs($fp,"\r\n");
     
        while(!feof($fp)) { 
            $res .= fgets($fp,1024);
        } 
        fclose($fp);  
        echo $res;
    Ausgabe is immer die selbe:

    Warning: fsockopen(): Unable to set local cert chain file keyfile.pem'; Check that your cafile/capath settings include details of your certificate and its issuer in *.php on line 36

    Warning: fsockopen(): php_stream_sock_ssl_activate_with_method: failed to create an SSL handle in *.php on line 36

    Warning: fsockopen(): failed to activate SSL mode 1 in *.php on line 36
    Operation now in progress: 115

    weis da jemand etwas dazu?

    mfg zcmaster

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    also ich habe mir deine Postings paar male durchgelesen.. irgendwie werde ich immer noch nicht schlau, was du genau machen möchtest. Bevor ich aber hier rumspekuliere was es sein könnte, würde ich Dir die cURL-Bibliothek empfehlen. Mit dieser kannst du SSL-Sessions erzeugen, öffentliche Schlüssel senden, Zertifikate verifizieren etc...

    P.S. falls es das nicht ist... schick mal bitte eine Grafik von dem was du machen möchtest, vielleicht verstehen wir hier es besser... *daumendrück*

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich glaube, so langsam komme ich dahinter was d/sein Problem ist. Du willst dem Server vorgaukeln, dass dein php Skript ein Browser mit einem installierten Clientzertifikat ist.
    Problem ist, dass PHP keine (direkte) Schnittstelle für SSL (leider) hat.
    D.h. du mußt den SSL Handshake selber machen, die Verschlüsselung einleiten (key xchng und change cipher) und dann darüber die geforderten Daten per HTTP empfangen... viel Spaß!
    Wenn du's geschafft hast kannste ja hier mal den Sourcecode posten...
    Quick&Dirty könntest du's über exec openssl s_client versuchen... aber ist eher ne Notlösung...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von zcmaster
    Ich muss einen vom Betreiber des Fremdserver erzeugtes KeyFile, Zertifikat-Request, und den vom Fremdserver erhalten SESSION-String zurück an den Fremdserver senden. Dieser erkennt durch das Keyfile, das ja nur ich besitze, mein Berechtigung und sendet mir nach der Authentifizierung die Daten die ich benötige.
    1. Ist das ein einmaliger Vorgang oder muß das öfter durchgeführt werden?
    2. bietet der "Fremdserver" eventuell eine Hilfeseite an, die das Verfahren erläutert?

    Einen Kommentar schreiben:


  • zcmaster
    antwortet
    hi leute erstmal danke für die vielen antworten:

    Ich muss einen vom Betreiber des Fremdserver erzeugtes KeyFile, Zertifikat-Request, und den vom Fremdserver erhalten SESSION-String zurück an den Fremdserver senden. Dieser erkennt durch das Keyfile, das ja nur ich besitze, mein Berechtigung und sendet mir nach der Authentifizierung die Daten die ich benötige.

    das ich mit https den socket aufbaue und port 443 angeben muss ist klar, mein problem ist eher wie ich den vom Fremdserver geforderte Schlüsselfile richtig mitschicke.

    mfg zcmaster

    Einen Kommentar schreiben:


  • Quadaptor
    antwortet
    Zitat von ImPAcT
    Sag mir wenn ich mich irre, aber ssl ist eine Erweiterung eines Transportprotokolls und keine "Verschlüsselungssoftware". Die en/decodierung übernimmt die Transportschicht und nicht die Application (php). D.h. für php sind die über https übertragenen Daten bereits dekodiert und dein String sollte im klartext vorliegen.
    Sprich, du sendest einfach über cookie/post/get deine auth daten und alleine durch das senden über https wird eine ssl Session erzeugt und du hast automatisch eine verschlüsselte Verbindung.
    Wo ist also dein Problem?
    Ja, das stimmt soweit.

    @zcmaster: Es reicht eigentlich einen normalen HTTP Post-Request abzuschicken. Die Verschlüsslung interessiert dich eigentlich nicht. Du musst nichts anderes machen, als bei einem "normalen" Post-Request, außer, dass du https und port 443 (und nicht 80) angeben musst. Das wars eigentlich!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Sag mir wenn ich mich irre, aber ssl ist eine Erweiterung eines Transportprotokolls und keine "Verschlüsselungssoftware". Die en/decodierung übernimmt die Transportschicht und nicht die Application (php). D.h. für php sind die über https übertragenen Daten bereits dekodiert und dein String sollte im klartext vorliegen.
    Sprich, du sendest einfach über cookie/post/get deine auth daten und alleine durch das senden über https wird eine ssl Session erzeugt und du hast automatisch eine verschlüsselte Verbindung.
    Wo ist also dein Problem?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    nun, ich denke den post/get request abzuschicken dürfte nicht dein Problem sein denke ich. Dein genaues Problem verstehe ich und vielleicht auch andere noch nicht so 100%ig. Vielleicht beschreibst du es nocheinmal, vielleicht verstehe ich es dann.

    Gruß,
    Patrick

    Einen Kommentar schreiben:


  • zcmaster
    antwortet
    facts:
    root zugriff vorhande
    zertfikat von e trust vorhande

    szenario:
    bekomme per post aufruf eines fremdservers eine (für fremde) nutzlose string

    danach soll ich mit diesem string einen ssl post/get request (ca-schlüsselfile) starten und nach erfolget auth. vom fremdserver starten daten bekommen

    so die lage,

    vielleicht weis jemand wie man so was mit sockets macht

    mfg zcmaster

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Das ist nicht so einfach, wie du dir das denkst! Also, zunächsteinmal brauchst du einen Server, wo ein SSL Zertifikat installiert ist. Wenn du einen Rootzugriff hast, müsstest du dir das kaufen, wenn nicht geht es nicht, weil das fast kein Provider anbietet!

    Wenn du das haben solltest, startest du das SSL meistens mit https://www...de/...

    wilko

    Einen Kommentar schreiben:

Lädt...
X