Ankündigung

Einklappen
Keine Ankündigung bisher.

SSL Request

Einklappen

Neue Werbung 2019

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

  • 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


  • #2
    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

    Kommentar


    • #3
      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

      Kommentar


      • #4
        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

        Kommentar


        • #5
          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?

          Kommentar


          • #6
            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!

            Kommentar


            • #7
              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

              Kommentar


              • #8
                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?

                Kommentar


                • #9
                  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...

                  Kommentar


                  • #10
                    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*

                    Kommentar


                    • #11
                      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

                      Kommentar


                      • #12
                        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

                        Kommentar

                        Lädt...
                        X