Как создать файл BKS из CRT в 2019 году с Windows 10 - PullRequest
0 голосов
/ 17 июня 2019

Я хочу закрепить файл ssl файлом bks. но я не знаю, как это сделать. Моя задача - не дать любому человеку посередине увидеть вызовы API для моего приложения для Android. Я знаю, что мне нужно прикрепить SSL. Одним из способов является использование модернизации. (и это слишком просто)

CertificatePinner certPinner = new CertificatePinner.Builder()
    .add("appmattus.com",
          "sha256/4hw5tz+scE+TW+mlai5YipDfFWn1dqvfLG+nU7tq1V8=")
    .build();

OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .certificatePinner(certPinner)
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://appmattus.com")
    .addConverterFactory(GsonConverterFactory.create())
    .client(okHttpClient)
    .build();

также получить ключ sha256 с любого веб-сайта очень просто, используя https://www.ssllabs.com/ssltest/analyze И я не понимаю, как таким образом улучшить безопасность. Поэтому я решил использовать файл BKS в приложении. но это слишком сложно.

Я знаю, что должен создать файл BKS и встроить его в приложение для Android для закрепления ssl. Но я не мог понять, как создать этот файл BKS в Windows 10. Я нашел очень мало информации о создании BKS, и они слишком стары, чтобы найти Android Keytool или JRE в Windows. вот только один старый пример http://transoceanic.blogspot.com/2011/11/android-import-ssl-certificate-and-use.html Я застрял и мне нужна твоя помощь. заранее спасибо

1 Ответ

0 голосов
/ 17 июня 2019

Шаг 1: Получите сертификат открытого ключа

Чтобы получить открытый ключ, вы можете попросить своего сотрудника по безопасности в вашей компании или вы можете легко перейти к конечной точке (api.sample.com или sample.com, где вы хотите сделать закрепление SSL) в браузере и нажмите на зеленый значок замка> сертификат.

enter image description here

Затем перетащитеи перетащите значок сертификата на рабочий стол.Готово.У вас есть общедоступный сертификат.

Шаг 2: Создайте файл BKS

Чтобы создать файл BKS, вам необходимо скачать надувную замочную банку.Надувной замок является крипто API.Вы можете скачать последнюю версию с здесь .

Теперь вы можете создать свой файл BKS, используя keytool и поставщика bouncy castle.

keytool -importcert -v -trustcacerts -file "[YOUR_PUBLIC_CERTIFICATE_PATH]" -alias [YOUR_ALIAS] -keystore "[BKS_TARGET_PATH]" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "[BOUNCY_CASTLE_JAR_PATH]" -storetype BKS -storepass [YOUR_PASSWORD]

Например: -

keytool -importcert -v -trustcacerts -file "/user/mert/testcertificate.cer" -alias mytestalias -keystore "/user/mert/desktop/certificate.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "/user/mert/bcprov-jdk15on-159.jar" -storetype BKS -storepass mypassword

Эта команда создаст файл BKS с вашим общедоступным сертификатом.Если вы хотите добавить несколько сертификатов, запустите эту команду с другим открытым сертификатом.Эта команда проверит целевой путь и добавит новый сертификат в существующий файл BKS, чтобы в файле BKS были оба сертификата.

Давайте добавим несколько сертификатов в один файл BKS.

keytool -importcert -v -trustcacerts -file "/user/mert/testcertificate.cer" -alias mytestalias -keystore "/user/mert/desktop/certificate.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "/user/mert/bcprov-jdk15on-159.jar" -storetype BKS -storepass mypassword

keytool -importcert -v -trustcacerts -file "/user/mert/testcertificate2.cer" -alias mytestalias2 -keystore "/user/mert/desktop/certificate.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "/user/mert/bcprov-jdk15on-159.jar" -storetype BKS -storepass mypassword

Как видите, я запускаю ту же команду, и keytool добавит еще один сертификат в тот же файл BKS.Но учтите, что вы должны использовать другое имя псевдонима для сертификатов.

Давайте проверим, действительно ли файл BKS имеет 2 сертификата.Чтобы получить список сертификатов в вашем файле BKS, вам нужно выполнить следующую команду

keytool -list -keystore "/user/mert/desktop/certificate.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "/user/mert/bcprov-jdk15on-159.jar" -storetype BKS -storepass mypassword

Она покажет вам публичные сертификаты в файле BKS.

enter image description here

Мы успешно создали файл BKS, который содержит 2 разных открытых ключа.

Итак, если у вас есть 2 разные конечные точки в вашем приложении и конечные точки не имеют один и тот же открытый ключ, вы можете использовать несколькосертификаты для закрепления SSL в вашем приложении.

Шаг 3. Применение закрепления SSL к клиенту OkHttp Я создал вспомогательный класс для закрепления SSL.Этот класс принимает 3 аргумента.

  • Context
  • Файл BKS
  • Пароль BKS (который вводится в командной строке)

Вы можете найти код здесь

Вам необходимо найти файл BKS в папке res / raw /.

Почти готово.Все, что вам нужно, это прикрепить этот SSL-пиннер к вашему клиенту okhttp.

RawCertificatePinner pinner = new RawCertificatePinner(context, R.raw.mycertificate, 
 "mypassword");
 OkHttpClient.Builder builder = new OkHttpClient.Builder();
 builder = rawCertificatePinner.pinCertificate(builder);
 return new Retrofit.Builder()
        .client(builder.build())
        ...
        .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...