2012-01-04 3 views
3

Я разрабатываю серверную базу для мобильной игры. iPhones и Androids взаимодействуют с моими PHP-скриптами на сервере linux для вызова API.SSL для мобильной игры

В основном телефоны «знают» свой идентификатор игры, когда они регистрируются (им назначается один), и теперь это то, что я использую для аутентификации. Например, если телефон пользователя является модератором игры (если их идентификатор связан с записью в таблице модератора), они могут редактировать правила для этой игры и т. Д.

Однако это происходит со мной не является безопасным. Кто-то может легко обрабатывать вызовы HTTP POST на мой скрипт и обманывать игру.

Я решил внедрить SSL для шифрования сообщений, идущих туда и обратно между телефонами и серверами. Как узнать, какой тип сертификатов SSL купить? Где я могу научиться устанавливать его? У меня нет опыта в этом. Любые советы некоторых опытных разработчиков мобильных устройств о том, что является лучшим/простым/наиболее экономичным, были бы отличными.

ответ

4

Что вы хотите сделать, это использовать взаимно аутентифицированный SSL, чтобы ваш сервер принимал только входящие соединения из вашей игры, и ваше игровое приложение будет связываться только с вашим сервером. Поскольку вы управляете клиентом (игровым приложением) и сервером, вам не нужно ничего покупать, но можете полагаться на самозаверяющие сертификаты.

Вот высокоуровневый подход. Создайте сертификат SSL с самозаверяющим сервером и разверните его на своем веб-сервере. Для этой цели вы можете использовать keytool, входящий в комплект Android SDK. Затем создайте самозаверяющий клиент и разверните его в своем приложении в настраиваемом хранилище ключей, включенном в ваше приложение, в качестве ресурса (keytool также генерирует это приложение). Вы можете сделать это и с клиентской игрой iOS, но я менее уверен в том, какой именно метод я использую в основном для Android dev. Настройте сервер, требующий аутентификации на стороне клиента, и только принять сертификат клиента, который вы создали. Настройте клиента для использования этого сертификата на стороне клиента для идентификации себя и принимайте только тот серверный сертификат, который вы установили на своем сервере для этой части.

Если кто-то, кроме вашей игры, пытается подключиться к вашему серверу, соединение SSL не будет создано, так как сервер отклонит входящие SSL-соединения, которые не представляют сертификат клиента, который вы включили в ваше приложение.

Шаг за шагом для этого является гораздо более длинным ответом, чем это оправдано здесь. Я бы предложил сделать это поэтапно, так как в Интернете есть ресурсы о том, как работать с самоподписанным SSL-сертификатом как на Android, так и на iOS, как на сервере, так и на стороне клиента. В моей книге также есть полный обзор, Application Security for the Android Platform, опубликованный O'Reilly.

+0

ОК это хорошее направление. как только я его установил, как мне его проверить? как программист, я привык к возможности отладки - здесь я не знаю, какой конечный результат успешного SSL-квитирования выглядит как LOOKS. любые указатели? – lollercoaster

+0

Пока вы указываете соединение HTTPS на своем клиенте, оно либо будет работать, либо не будет (HttpsUrlConnection на Android). Вы также можете посмотреть журналы своего сервера и/или использовать пакетный сниффер, например Wireshark на вашем сервере, для просмотра сетевого трафика и проверки его шифрования с помощью SSL/TLS. – jeffsix

Смежные вопросы