SSL для мобильной игры - PullRequest
2 голосов
/ 05 января 2012

Я проектирую серверную часть для мобильной игры.iPhone и Android взаимодействуют с моими PHP-скриптами на сервере Linux для выполнения вызовов API.

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

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

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

1 Ответ

4 голосов
/ 05 января 2012

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

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

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

Пошаговое руководство для этого:гораздо более длинный ответ, чем здесь гарантировано.Я бы посоветовал сделать это поэтапно, так как в Интернете есть ресурсы о том, как работать с самозаверяющим SSL-сертификатом в Android и iOS, как на стороне сервера, так и на стороне клиента.В моей книге Application Security для платформы Android , опубликованной О'Рейли, есть полный обзор.

...