Опираясь на ответ @ScottyB:
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/C=US/ST=Oklahoma/L=Stillwater/O=My Company/OU=Engineering/CN=test.com" -keyout ca.key -out ca.crt
openssl genrsa -out "test.key" 2048
openssl req -new -key test.key -out test.csr -config openssl.cnf
openssl x509 -req -days 3650 -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extensions v3_req -extfile openssl.cnf -out test.crt
Ошибка дает подсказку, как исправить. Если вы объедините сертификат и закрытый ключ, сгенерированные выше, в один файл, Android примет его:
openssl pkcs12 -export -in test.crt -inkey test.key -out test-combined.p12
Перенесите файл .p12 на свой телефон Android, а затем используйте «Установить из памяти устройства». Дайте ему красивое удобочитаемое имя, и сертификат CA теперь можно будет использовать с такими службами, как веб-серверы, которые используют ca.key и ca.crt.
Вот фрагмент конфигурации Nginx для отказа от всех подключений, кроме тех, которые представляют сертификат, подписанный вышеуказанным сертификатом ca:
# within server block, eg. under the ssl_certificate config
ssl_client_certificate /etc/ssl/ca/ca.crt;
ssl_trusted_certificate /etc/ssl/ca/ca.crt;
ssl_verify_client optional_no_ca;
if ($ssl_client_verify != SUCCESS) { return 403; }
Когда ваш браузер Android теперь посещает этот веб-сайт, он пропустит вас дальше, только если вы предъявите подписанный сертификат.
person
Alex van Vucht
schedule
16.02.2020