it-roy-ru.com

Где найти установленный пользователем сертификат Android 4.0 и выше

Я установил свой сертификат (.crt) следующим образом: Подключил устройство к моему компьютеру -> скопировал сертификат во внутреннее хранилище -> на устройстве перешел в настройки-> безопасность-> установить из хранилища -> и получил "успешно установлен" или что-то (он попросил меня ввести пин-код для устройства).

Затем я попытался найти его в Настройках-> Безопасность-> Доверенные учетные данные и не смог найти его ни на вкладке «Система», ни на вкладке «Пользователь» (я понял, что это должно быть на вкладке «Пользователь», но оно пустое).

Я думаю, что нет никаких проблем в процессе установки, потому что он попросил меня ввести пин-код (и не позволил мне отменить его, пока я не удалил все сертификаты, нажав «очистить учетные данные» в меню безопасности)

Помогите some1?

Спасибо!

23
krushi

Была такая же проблема. Убедитесь, что устанавливаемый сертификат на самом деле является сертификатом CA, а не просто сертификатом x509. К сожалению, установщик сертификата, который поставляется с ICS, с радостью установит сертификат, даже если это не сертификат CA. Это будет вводить в заблуждение, что сертификат был успешно установлен. Он даже поместит файл в/data/misc/keystore. Тем не менее, он не дает никаких отзывов пользователю о том, что он не может использовать этот сертификат по назначению. 

Для разработки/тестирования вот удобное руководство о том, как создать самозаверяющий сертификат CA: http://langui.sh/2009/01/18/openssl-self-signed-ca/

9
J. Carlos Navea

После всех шагов (поместите файл в/data/misc/keystore и убедитесь, что сертификат является центром сертификации), перезагрузите устройство, сертификат должен появиться. 

0
TimeWillTell

Этот ответ здесь был отличным советом, но некоторые вещи в связанном посте устарели из-за изменений в том, что Chrome принимает как правильный сертификат (имя субъекта alt, алгоритм дайджеста)

Здесь это полностью на сегодняшний день: Если у вас есть соответствующий сертификат CA, он скажет «включает: ... 1 CA», если он просто говорит один сертификат, он будет установлен, но не будет действовать как CA.

Во-первых, создайте myca.conf

[ ca ]
default_ca = myca

[ crl_ext ]
# issuerAltName=issuer:copy  #this would copy the issuer name to altname
authorityKeyIdentifier=keyid:always

[ myca ]
new_certs_dir = /tmp
unique_subject = no
certificate = root.cer
database = certindex
private_key = privkey.pem
serial = serialfile
default_days = 365
default_md = sha1
policy = myca_policy
x509_extensions = myca_extensions

[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = optional
organizationName = supplied
organizationalUnitName = optional

[ myca_extensions ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
crlDistributionPoints = URI:http://mp-test.com.au/myca.crl

subjectAltName = @alt_names

Запустите эти команды только в первый раз:

openssl req -newkey rsa:2048 -days 3650 -x509 -nodes -out root.cer
openssl pkcs12 -export -out root.pfx -inkey privkey.pem -in root.cer
cp privkey.pem root.pem
touch certindex
echo 01 > serialfile

Теперь запустите их для каждого домена:

domain=www.example.org
openssl req -newkey rsa:2048 -days 3650 -x509 -nodes -out root.cer
openssl req -newkey rsa:2048 -nodes -out ${domain}.csr -keyout ${domain}.key
cat myca.conf > temp.conf
printf "[alt_names]\nDNS.1=${domain}\n" >> temp.conf
openssl ca -md sha512 -batch -config temp.conf -notext -in ${domain}.csr -out ${domain}.cer
openssl x509 -noout -text -in ${domain}.cer
openssl pkcs12 -export -out root.pfx -inkey privkey.pem -in root.cer

root.pfx - это ваш сертификат CA, который можно установить на устройстве . $ {domain.cer} - это сертификат вашего веб-сайта, которому следует доверять после установки root.pfx.

0
Michael Ribbons

Начиная с API 24 (Android 7.0), вы должны проверить это в 

Настройка -> Безопасность -> Учетные данные пользователя

где вы можете перечислить все сертификаты пользователей. Ниже API 24 в настройках нет опции для отображения пользовательских сертификатов (PKCS12 с закрытым ключом). Самый простой вариант, который я проверил в API 19 21 22 23, это установить сертификат и после завершения перейти на сервер, который требовал двустороннюю аутентификацию SSL с помощью приложения Google Chrome. Google Chrome должен показать вам список установленных сертификатов. В случае использования Виртуального устройства без Google Chrome вы можете загрузить его с с этого сайта. После загрузки перетащите приложение на экран виртуального устройства.

0
macieg_b