Używam obecnie gniazda TCP do wymiany danych między serwerem a klientem przy użyciu strumieni gniazd w PHP. Chcę, aby każdy klient miał unikalny certyfikat (który będę dla niego generował), aby uzyskać dostęp do mojego serwera, tak aby tylko osoby, które znam, będą mogły z niego korzystać. Szukałem i znalazłem tylko jak używać certyfikatu po stronie serwera, co umożliwi mi nawiązanie połączenia SSL, ale to, czego potrzebuję, to użycie certyfikatu serwera klienta do identyfikacji klienta, który łączy się z moim serwerem. Czy to jest możliwe za pomocą PHP?PHP - certyfikat klienta gniazda SSL
bym sobie wyobrazić klienta, aby połączyć tak:
$clientCert = './clientCert.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $clientCert);
$server = stream_socket_client('ssl://IP', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
Ale jak uchwyt serwer (identyfikacja, etc) ten certyfikat stronie klienta?
Mam nadzieję, że moje pytanie było jasne.
Dzięki z góry, Rafael
Okay, więc na kliencie muszę ustawić verify_peer na true i cafile na ścieżkę klawisza _serwera_? Czy powinienem również utworzyć stream_context na serwerze? Jeśli tak, jakie opcje należy ustawić? Przy okazji, dziękuję za szybką odpowiedź! – user2308602
@ user2308602: Musisz utworzyć kontekst strumienia na serwerze, jeśli chcesz faktycznie uwierzytelnić klienta. Te same opcje, co po stronie klienta, wszystko jest symetryczne. – Jon
Pewnie czegoś brakuje na moim kodzie serwera. Obecnie każdy, kto inicjuje do niego gniazdo, może się z powodzeniem łączyć, nawet bez certyfikatu. Po stronie serwera tworzę kontekst z opcjami: local_cert = myCert.pem; verify-peer = true; allow_self_signed = false; cafile = myKey.pem; Potem utworzyć gniazda: '$ server = stream_socket_server ('SSL: //0.0.0.0: 500', $ errno, $ errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $ streamContext);' i słuchać połączeń: ' while (true) { $ client = stream_socket_accept ($ serwer); echo "klient podłączony"; } ' Wszelkie pomysły? – user2308602