- 🤔Adding SSL Certificates into your Android App with Retrofit
- 🏁 Intro
- 📄 Let’s talk about the certificates
- 🥺 What is the difference?
- 😬 Give me the implementation!
- 🏃♂️ Let’s get started!
- 💻 The Code
- 🏆 Conclusion
- Android SDK менеджер выдает ошибку» не удалось извлечь URL https://dl-ssl.google.com/android/repository/repository.xml » при выборе репозитория
- 17 ответов
- Похожие вопросы:
🤔Adding SSL Certificates into your Android App with Retrofit
When this task was assigned to me in the project I’m working, I thought: this will be easy and it was 🙂, but it wasn’t 🙃, because I didn’t find a lot of posts on how to add my certificate.
You can always read the Official Android SSL Documentation (you should), but the implementation wasn’t clear enough to me, so I decided to create this post to simplify it for anyone who is going through the same problem 👍.
🏁 Intro
In this post I’m going to explain how to add certificates to our Android app when we have a .pfx file, not only the .crt , and of course, it will include a brief explanation of what those files are.
So after reading this tutorial we’re going to be familiarized with:
This tutorial is going to be based on a project using Retrofit to make calls to an API, but you can always adapt it for your specific case.
📄 Let’s talk about the certificates
A certificate authority (CA) is a company or organization that acts to validate the identities of entities (such as websites, email addresses, companies, or individual persons) and bind them to cryptographic keys through the issuance of electronic documents known as digital certificates.
So basically the CAs give us a way to authenticate us by serving as credentials to validate our identity, encrypt our data for secure communication over the insecure networks such as the internet, and give us a way to be sure nothing has been altered by a third party in transit because of the signature of the certificate.
Typically, an applicant for a digital certificate will generate a key pair consisting of a private key and a public key, along with a certificate signing request (CSR). A CSR is an encoded text file that includes the public key and other information that will be included in the certificate (e.g. domain name, organization, email address, etc.). Key pair and CSR generation are usually done on the server or workstation.
The .crt and the .pfx files are CSR encoded.
🥺 What is the difference?
CER (or .CRT) files: CER file is used to store X.509 certificate. Normally used for SSL certification to verify and identify web servers security. The file contains information about certificate owner and public key.
PFX files: Personal Exchange Format, is a PKCS12 file. This contains a variety of cryptographic information, such as certificates, root authority certificates, certificate chains and private keys. It’s cryptographically protected with passwords to keep private keys private and preserve the integrity of the root certificates.
Basically, the PFX contains more information than the CRT.
😬 Give me the implementation!
Okay, if you already know something about the CAs you probably just want to know how to implement them. So, let’s get into it.
If you have tried to add your certificate with a .crt file and Retrofit, you may have found this class in some post or documentation. I’m actually going to use code of that class for the implementation, but I’m going to break it down for easier reading, and to show the small changes we need to add when we’re using a .pfx file so you can use whichever you need.
The source code is gonna be at the end of the post.
🏃♂️ Let’s get started!
In order to add our certificates we’re going to create a method that generates an OkHttpClient. We only need to follow these simple steps:
- Add our file into our project as a raw resource.
2. Create a method that returns an OkHttpClient .
3. Create a KeyStore containing our trusted CAs.
5. Create an SSL Context that contains our trusted CAs.
6. Add our socket factory to our builder.
7. Use the generated OkHttpClient as usual.
- Add our file into our project as a raw resource (in the raw folder).
We can just drag and drop the file into the raw folder or go to our project directory and create it inside the app/src/main/res and then paste our file.
2. Create a method that returns an OkHttpClient .
This method is where we’re going to add our certificate to our OkHttpClient so we can use it to make calls to an API. In this example, I’m going to simplify, but you can always add custom settings.
3. Create a KeyStore containing our trusted CAs.
The KeyStore class is going to help us to store our certificates, but the type of instance is very important, that’s going to make the difference between using a .crt file or a .pfx .
.CRT → the default type is gonna work for you. KeyStore.getInstance(KeyStore.getDefaultType())
.PFX → you need to use PKCS12, this is a special format to place the certificate (includes its “intermediate”) with the private key.
KeyStore.getInstance(«PKCS12»)
The password is the one you need to use when you want to read your file. In this code I’m setting it as a String , but you should always keep it secure, so you better use a file with it or as a Build Config Field.
4. Create a KeyManagerFactory so we can have keyManagers with the algorithm of our certificate.
We’re getting an instance of an X509 Factory because that’s the standard of my public key certificate and it’s the most used one.
5. Create an SSL Context that contains our trusted CAs.
In this case we’re using an instance of a TLS Context because our server required so, and as TLS is basically a newer version of SSL we can use it as default.
6. Finally, add our socket factory to our builder.
Just use the socketFactory of the sslContext that we created in the last step and set it to the builder.
7. Use the generated OkHttpClient as usual.
Now that we added our trusted CAs to an OkHttpClient we can proceed to use it with a Retrofit instance as usual.
And just like that we’ll be able to make some calls to our API 🎉.
💻 The Code
🏆 Conclusion
Adding our trusted CAs in our Android app is not complicated and can be very useful when we have multiple flavors or build types with different API environments and some of those are secured with a CA.
Remember to remove your Development certificate when you’re building a Release version of your app; you don’t wanna give it away 😅. I also suggest deleting the file from Git for security reasons.
This post was made to try to simplify the explanation of the implementation that you probably are gonna find on the internet.
Источник
Android SDK менеджер выдает ошибку» не удалось извлечь URL https://dl-ssl.google.com/android/repository/repository.xml » при выборе репозитория
Я пытаюсь установить платформу, но когда я открываю Android Manager, то нажимаю доступное программное обеспечение, а затем выбираю https:/ / dl-ssl.google.com/android/repository/repository. xml repository
Я получаю эту ошибку:
Я также попытался загрузить, нажав на force «http:» для всех загрузок «https:» на панели настроек, но это все равно не помогает.
Я работаю над Windows Vista.
17 ответов
Это та же самая проблема, о которой сообщал ряд других, например Не удалось получить URL https://dl-ssl.google.com/android / repository/addons_list-1.xml, причина: соединение с https: / / DL-ssl.google.com отказано Android SDK Не Обновляет Пакеты Android SDK менеджер дает «Failed для.
Android SDK не принести до URL это сообщение журнала менеджер SDK. Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetched Add-ons List successfully Fetching URL: https://dl-ssl.google.com/android/repository/repository-7.xml Done loading packages. Fetching.
Попробуйте это решение, и оно сработает. эта проблема вызвана тем, что ADB не может подключиться к серверам android для получения обновлений. (Если дома попробуйте отключить брандмауэр)
- Перейти Android SDK Менеджер c://android-sdk-windows / открыто SDK-менеджер
- Нажмите кнопку Настройки-будет запрошен прокси-сервер.
- Если он у вас есть, введите адрес IP и номер порта. Если нет, то выключите свой брандмауэр.
- Проверять «Force https:/ / . «(чтобы заставить менеджера SDK использовать http , а не https )
Это должно сработать немедленно.
Если вы введете URL в браузере, а затем посмотрите на исходный код страницы, вы увидите, что возвращается документ XML.
Причина, по которой этот URL будет работать в браузере, но не в менеджере android, может заключаться в том, что вам необходимо указать прокси-сервер. В Eclipse (3.5.2) настройки прокси-сервера можно найти здесь: «Window» -> «Preferences» -> «General» -> «Network Connections»
Все, что было необходимо для меня, пользователя Ubuntu, — это изменить владельца каталога
/.android. В a terminal введите следующую команду:
Очевидно, что вы должны заменить «username» (дважды) своим именем пользователя.
Я не был уверен, стоит ли публиковать это в качестве ответа, потому что вопрос оригинального плаката касался Windows Vista, а не Ubuntu. Однако я нашел этот пост, когда искал ответ на Ubuntu, поэтому считаю, что он уместен. Однако у меня нет достаточной репутации, чтобы комментировать ответ + Махера Гамаля, что и привело меня к этому ответу. Надеюсь, кто-то еще найдет его полезным!
Мой менеджер Android SDK запускается, а затем пытается получить новые обновления. Но он не может извлечь содержимое и показывает следующую ошибку в окне журнала: Не удалось получить URL https:/ / dl-ssl.google.com/android / repository/addons_list-1.xml , причина: подключение к https: / /.
Я знаю, что есть какие-то вопросы по SO об установке Android SDK. Я читаю их уже 2 дня. Независимо от того, что я делаю, я получаю следующее: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetched Add-ons List successfully Fetching URL.
В Mac OS X решение состоит в том, чтобы создать файл androidtool.cfg в нашей папке user .android, а затем добавить эту строку. Конечно, это работает и для Linux
sdkman.force.http=истина
Надеюсь, это поможет!
Откройте Диспетчер Android SDK и откройте меню Сервис->Параметры
в части настройки прокси-сервера Установите свой прокси и ОК
Я использую Касперского. Я просто выключил его, и проблема была решена!
Исследуя эту ошибку на моем новом ноутбуке Win 7, я обнаружил, что мой плагин ADT отсутствует. Добавив Это я решил проблему: Скачать плагин ADT
Используйте функцию диспетчера обновлений вашей установки Eclipse, чтобы установить последнюю версию ADT на ваш компьютер разработки.
Предполагая, что у вас установлена совместимая версия Eclipse IDE, как описано выше в разделе Подготовка к установке, выполните следующие действия, чтобы загрузить плагин ADT и установить его в вашей среде Eclipse.
Запустите Eclipse, затем выберите справка > установить новое программное обеспечение. Нажмите кнопку Добавить в правом верхнем углу. В появившемся диалоговом окне добавить репозиторий введите «ADT Plugin» для имени и следующий URL для местоположения: https://дл-ssl.google.com/android/eclipse/ нажмите OK
Примечание: Если у вас возникли проблемы с приобретением плагина, попробуйте использовать «http» в местоположении URL вместо «https» (по соображениям безопасности предпочтительнее https). В диалоговом окне доступное программное обеспечение выберите checkbox рядом с пунктом инструменты разработчика и нажмите кнопку Далее. В следующем окне вы увидите список инструментов для загрузки. Нажмите Кнопку Далее. Прочтите и примите лицензионные соглашения, а затем нажмите кнопку Готово.
Примечание: Если вы получаете предупреждение системы безопасности о том, что подлинность или действительность программного обеспечения не может быть установлена, нажмите кнопку OK. Когда установка завершится, перезагрузите Eclipse.
Я получил решение для установки Android Studio после того, как попробовал все, что смог найти в Интернете. Если вы используете Android Studio и получаете эту ошибку:
Найдите [Path_to_Android_SDK]\sdk\tools\android.bat . В моем случае это было в C:\Users\Nathan\AppData\Local\Android\android-studio\sdk\tools\android.bat году .
Щелкните его правой кнопкой мыши, нажмите Edit и прокрутите вниз до самого низа.
Найдите, где написано: call %java_exe% %REMOTE_DEBUG% .
Замените это на call %java_exe% -Djava.net.preferIPv4Stack=true %REMOTE_DEBUG% .
Перезагрузите Android Studio/SDK, и все заработает. Это исправило многие проблемы для меня, в том числе неспособность извлекать файлы XML или создавать новые проекты.
У меня была та же проблема: последнее обновление не удалось установить, потому что оно не могло переименовать папку tools в android-sdk-windows. Я использую антивирус AVG, и его отключение не помогло, но я все равно не думаю, что это имеет какое-то отношение к программе AV.
Дело в том, что запуск установки Android SDK, по-видимому, использует элементы в каталоге «android-sdk-windows\tools». Я нахожусь на Win Vista x32, так что, возможно, это вызывает какую — то уникальную ситуацию-я не уверен.
Я сделал копию самой папки tools (сохранив ее в том же дереве каталогов уровень, таким образом, «tools» и «tools-copy» были оба в папке «android-sdk-windows»).
Я запустил Android.bat из этой копии
Я без проблем запустил обновление (оно обновило исходную папку not-being-used-at-the-moment tools, среди прочих необходимых элементов).
Я закрыл SDK, удалил папку (сначала мне пришлось убить процесс adb.exe — не знаю, почему это всегда сохраняется, но вы не можете удалить папку, не сделав этого).
Я перезапустил SDK из обычной (теперь обновленной) папки инструментов. Сработало как заклинание!
Обратите внимание, что простого убийства adb.exe было NOT достаточно, чтобы обойти исходную проблему. только путем копирования папки tools и использования копии для запуска Android на время процесса обновления было достаточно, чтобы исправить проблему.
Я надеюсь, что это поможет другим. довольно неприятно тратить время на решение таких основных проблем, как эта, только для того, чтобы запустить обновление.
Если вы откроете /Users/
После 7 долгих часов поисков я наконец нашел дорогу!! Ни одно из вышеперечисленных решений не сработало, только одно из них указывало на проблему!
Если вы находитесь на Win7,то ваш брандмауэр блокирует получение списка аддонов менеджером SDK. Вам придется добавить «android.bat «и» java.exe » к доверенным файлам и бинго! все начнет работать!!
Кроме того, попробуйте отключить брандмауэр и попытаться обновить его с помощью link.
У меня была та же проблема, я сделал все обходные пути, которые вы советовали: все та же ошибка. Я обновил Eclipse через «Help / Check for updates», и теперь все в порядке. Это обновление принесло совершенно новую версию менеджера Android SDK.
У меня была та же проблема. Я использую Ubuntu 12.04. Я попытался отключить ipv6.
Затем перезагрузите машину и проверьте. Я думаю, что это может быть проблемой ipv6 даже в Windows OS.
Была такая же проблема на машине 64 bit win7 в корпоративной сети за прокси-сервером с автоматически обнаруженными настройками.
После ряда проб и неудач следующий обходной путь оказался успешным:
- общий доступ к интернету моего телефона wifi через USB
С наилучшими пожеланиями, Роберт
У меня была похожая ситуация, когда у меня уже были установлены настройки прокси-сервера, и менеджер SDK не смог изменить их навсегда. Изменение вручную файла
/.android/androidtool.cfg устранило эту проблему.
Я нашел другой способ, не устанавливая прокси. В настоящее время я использую антивирус, который имеет программу брандмауэра. Затем я выключаю этот брандмауэр, и теперь я могу получить этот URL.
Если все еще не работает, попробуйте отключить брандмауэр на вашем PC, например Windows Firewall.
Похожие вопросы:
Использование Android SDK Manager, когда я пытаюсь обновить его, просто дает следующие сообщения о невозможности подключения. Я пробовал отключить брандмауэр и защиту от вредоносных программ. Я.
Я пытаюсь установить Android SDK — но менеджер Android SDK и AVD, похоже, не может загрузить addons_list.xml и repository.xml. Я проверил «Force https://. источники, которые будут извлечены с.
Я пытаюсь установить версию android SDK с помощью менеджера SDK. Я получаю ошибку: Не удалось получить https://дл-ssl.google.com/android/хранилище/хранилище.xml . Я попытался использовать http.
Это та же самая проблема, о которой сообщал ряд других, например Не удалось получить URL https://dl-ssl.google.com/android / repository/addons_list-1.xml, причина: соединение с https: / /.
Android SDK не принести до URL это сообщение журнала менеджер SDK. Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetched Add-ons List successfully Fetching URL.
Мой менеджер Android SDK запускается, а затем пытается получить новые обновления. Но он не может извлечь содержимое и показывает следующую ошибку в окне журнала: Не удалось получить URL https:/ /.
Я знаю, что есть какие-то вопросы по SO об установке Android SDK. Я читаю их уже 2 дня. Независимо от того, что я делаю, я получаю следующее: Fetching.
Когда я открываю de sdk manager, я получаю окно журнала со следующим: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Validate XML Parse XML Fetched Add-ons List successfully.
У меня есть install Eclipse и Adroid SDK на ubuntu , и я могу видеть только установленные пакеты, я прочитал этот вопрос, но мой менеджер sdk не показывает мне никакой ошибки или чего-то еще. Как я.
Источник