[PHP] Certificaat tussen 2 servers

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 00:49
Ik ben bezig met een CMS systeem (momenteel op papier aan het uitwerken, hoe en wat) welke uit twee delen bestaat, een gedeelte bij de klant op de server. (Een standaard CMS, waar gewoon gebruikersbeheer en paginabeheer uitgevoerd kan worden).

En een CMS systeem welke op mijn eigen hostings-pakket draait. Dit eigen CMS systeem moet kunnen comminuceren met het CMS systeem van de klant, ik moet dus een opdracht in mijn CMS kunenn invullen, en die moet bij de klant worden uitgevoerd.

Dit lijkt me mogelijk via Curl, of nog liever zelfs Zend_Http_Client (ik maak gebruik van het Zend Framework).

Nu dacht ik is het mogelijk om een beveiligde verbinding op te zetten op deze manier? Via HTTPS staat vaak het certificaat op de server waarmee verbonden wordt, maar in dit geval zoek ik het eigenlijk andersom, de server mag (bij de betreffende pagina) alleen verbindingen accepteren vanaf mijn hostingpakket (CMS systeem).

Ik hoop dat ik een beetje duidelijk ben.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Ik zou een webservice maken (SOAP) waar je als CMS op moet inloggen of iets dergelijks. Google maar eens op NuSOAP of de SOAP extensie van PHP.

Hoe ga je om met beveiliging van de code zelf?

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 21:30

BCC

htacces? Ik denk dat je wat meer informatie moet geven over wat voor data je wil communiceren en hoevaak dat moet gebeuren en of het push of pull is.

[ Voor 255% gewijzigd door BCC op 24-08-2009 11:25 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

Verwijderd

Dit kan je toch ook makkelijk doen met ssh?

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 21:10

DexterDee

I doubt, therefore I might be

Inhakend op je certificaat vraag, je zou met X509 certificaten kunnen werken, maar dat is niet het meest gemakkelijke klusje. Er zitten wel helper functies in PHP op basis van de OpenSSL library.

Ik denk dat ik zou overwegen om de payload van elk request te encrypten met een pre-shared key aan beide kanten. Op die manier kun je gewoon alles over HTTP doen en valt er niks te onderscheppen. Het encrypten en decrypten is een fluitje van een cent en de inhoud van de payload kan feitelijk alles zijn.

Hier een voorbeeldje van php.net:
PHP:
1
2
3
4
5
6
<?php
$key = "this is a secret key";
$input = "Let us meet at 9 o'clock at the secret place.";

$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
?>


Als bij het binnenkomende request de decryptie niet slaagt, dan kun je meteen het request droppen (en eventueel loggen)

[ Voor 7% gewijzigd door DexterDee op 24-08-2009 12:08 ]

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 17:25

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Of je maakt gebruik van de mogelijkheden van HTTPS om behalve server authenticatie ook client authenticatie aan de hand van een certificaat te doen. Maar behalve dat ik weet dat het SSL/TLS protocol dat ondersteunt zou ik je daar verder niet mee kunnen helpen hoe je dat in de praktijk toepast.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Als je de mogelijkheid hebt tot pgp kan je ook je messages signen. Je doet dat met je private key op je eigen server. De server van de client kan met de public key valideren of jij diegene bent die je claimt te zijn.
Het is super eenvoudig om het op te zetten, maar de enige voorwaarde is dat je de php-gpg extensie hebt :)

Even een voorbeeldje in php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Op jouw server
$command = 'rm -rf /';
$fingerPrint = '8660281B6051D071D94B5B230549F9DC851566DC';
$gpg = new gnupg();
$gpg->setsignkey($fingerPrint);
$command = $gpg->sign($command);
send_to_client($command);

// Op de client
$plaintext = "";
$gpg = new gnupg();
$info = $gpg->verify($command,false,$plaintext);
print_r($info);
// Hier wat controle ofzo
eval($plaintext); // :+

[ Voor 39% gewijzigd door mithras op 24-08-2009 12:20 ]

Pagina: 1