Я разрабатываю приложение для Android, которое может соединяться с несколькими серверами узлов. Это соединение должно быть безопасным, поэтому мне нужны сертификаты. Но я не могу платить за сертификаты. Как и мои исследования, я создам сертификаты для каждого сервера и подписываю их своим собственным корневым сертификатом (мне также это нужно). Затем я отправлю корневой сертификат в свое приложение для Android. Поэтому я могу подключить несколько серверов из одного приложения для Android. Но я не знаю, как создавать эти сертификаты и как привязывать их к андроидному приложению.создание сертификата для android volley и nodejs
ответ
ЦС может сгенерировать сертификат, связанный с IP, но это не является обычным явлением. Я согласен в этом случае, более целесообразно использовать самогенерируемые сертификаты. Вам нужно
1) Создание сертификата CA и SSL сертификат
извлеченного из here Вам понадобится OpenSSL
Создание сертификата CA
openssl genrsa -out rootCA.key 2048
openssl genrsa -des3 -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Это запустит интерактивный сценарий, который спросит вас о различных битах информации. Вы получите rootCA.pem
Создать один сертификат для каждого устройства
openssl genrsa -out device.key 2048
openssl req -new -key device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500 -sha256
Вам будет предложено различные вопросы (Страна, Штат/провинция и т.д.), во втором шаге вставки в «общим названием» IP- или имя вашего устройства. Важно, чтобы соответствовать настоящее имя, потому что браузер или Android устройство будет проверять его
2) Настройки сервера nodejs использовать протокол HTTPS я не имею достаточно знаний о Node.js, чтобы обеспечить вам хорошее объяснение или ссылку , поэтому используйте официальную документацию. Возможно, какой-нибудь читатель мог бы отредактировать это и предоставить ссылку
3) добавить открытый ключ и цепочку сертификата в доверительный магазин приложения Android.
Извлеченные here из
Вам нужно будет
1) Получить публичную часть вашего CA сертификата
2) Создание хранилища ключей BKS и импортировать сертификат (только необходимо будет корень)
3) Используйте хранилище ключей в своем приложении. Создайте пользовательский HTTP-клиент Apache, который использует ваше хранилище ключей для настройки SSL-соединения.
Подробности приведены в ссылке, то есть в вики сообщества.
Для Android Volley. Using Android Volley With Self-Signed SSL Certificate
У меня есть некоторые вопросы о втором шаге. При создании сертификата, если я ввожу публичный ip своего устройства, могу ли я получить к нему доступ из своей локальной сети с помощью частного ip like (192.168.1.1). Я хочу получить доступ к этому устройству вместе с публичным и частным адресом. Является ли это возможным? И я не понял термин имени устройства. Вы говорите о имени хоста? – ekilic
Я хотел сказать имя хоста. Если вы установите общее имя (имя хоста) сертификата на IP-адрес, то оно будет действительным только для этого IP-адреса. Если вы хотите использовать частный и открытый доступ, вам нужны два сертификата и две конечные точки, или используйте DNS-имя вместо ip-адреса. – pedrofb
Да, я думаю использовать динамические DNS. Поэтому мне не нужно платить за статический адрес для моих конечных точек. Но если я его использую, я не могу использовать свои конечные точки локально без подключения к Интернету. Если ssl предоставляет опцию для нескольких общих имен или не проверяет общее имя, это решит мою проблему. – ekilic
- 1. Mongoose и Android Volley
- 2. Создание запроса HTTPS с использованием Android Volley
- 3. Создание и использование сертификата SSL
- 4. Android volley singleton для JSON и изображение
- 5. Создание сертификата для SOAP-заголовок
- 6. Создание клиентского сертификата на устройстве Android
- 7. Дисплей сертификата для Android
- 8. Требуется уровень сертификата Nodejs/Socketio
- 9. Установка сертификата для Android
- 10. Android volley для загрузки изображения
- 11. Android volley для обработки перенаправления
- 12. Android Volley: POST-запрос - req.body внутри NodeJS REST API пуст
- 13. nodejs https ошибка сертификата сервера
- 14. Создание программы для ожидания ответа Volley
- 15. Создание хранилища ключей из сертификата, промежуточного сертификата и закрытого ключа
- 16. Создание сертификата SSL
- 17. создание сертификата не удалось
- 18. Создание сертификата с bouncycastle
- 19. Вопросы и помощь для Volley
- 20. Создание сертификата, подписанного Azure
- 21. Срок действия сертификата для Android:
- 22. Google Volley Android: Войти
- 23. Android Studio + Volley = NoClassDefFound?
- 24. Android volley no internet
- 25. Понимание и создание запроса сертификата & Частный ключ
- 26. Android Volley Gson Exception
- 27. Android Studio + Volley
- 28. Android Volley - изменения ориентации
- 29. Android Volley сообщение Looping
- 30. Android Volley POST ServerError
Вы спрашиваете о сертификации SSL? – pedrofb
Да. Мне нужно создать сертификаты. Я использую окна. Я нашел инструмент, который может создавать и управлять сертификатами, но он не работал. Я пробовал с хром, и я получил ошибку. Я также читал, что мне нужен bks keystore для Android. Я не понял, как его создать. – ekilic
Если вы не хотите иметь дело с созданием сертификатов и доверительными магазинами, я предлагаю вам использовать доверенный орган.Попробуйте https://letsencrypt.org/. Это бесплатно. Если вы предпочитаете использовать свои собственные сертификаты, выполните поиск в SO, как это сделать, и как настроить свой конкретный сервер. Этот вопрос большой – pedrofb