Все спят, а я пробую поставить свой (самоподписанный) SSL сертификат в гуглофон. Фигушки с маслицем! То есть он как бы туда ставится, но это ничего не меняет.
Собственно, задача в том, чтобы получить доступ к своему почтовому серверу по IMAP over SSL (dovecot), SMTP + TLS (sendmail). Доступ-то я получил (IMAP, кстати, работает со штатным клиентом очень хорошо), только с опциями "SSL (trust any certificate)" и "TLS (trust any certificate)". Хочется то, что в скобках, убрать.
Собственно, поставить сертификат очень просто -- надо сделать так, чтобы веб-сервер отдавал его с Content-Type: application/x-x509-ca-cert. Для этого пишем:
cat << EOF >> /etc/httpd/conf.d/types.conf
AddType application/x-x509-ca-cert .pem
EOF
/etc/init.d/httpd restart
Дальше открываем URL с сертификатом, и он вроде как импортируется (при этом спрашивается пароль на внутрений keychain). Причём это получилось у меня сделать с сертификатом в формате pem.
Кстати, нашёл в Интернетах вопиюще неправильные инструкции. Дескать, надо подсунуть телефону сертификат в формате PKCS12, и всё зажужжит. А чтобы сделать такой сертификат, надо, мол, иметь доступ к приватному ключу (про это много где написано). Вот такая примерно неправильная команда предлагается:
openssl pkcs12 -export -out cert.p12 -in cert/cert.pem -inkey private/cert.pem -name "My cert"
В результате мы получаем файлик, в котором есть и сертификат, и приватный ключ (в чём можно убедиться, просмотрев вывод openssl pkcs12 -info -nodes -in cert.p12). Конечно, это совсем не то, что мы хотим выкладывать и раздавать! Правильная команда вот такая:
openssl pkcs12 -export -out cert.p12 -in cert.pem -nokeys -name "My cert"
Впрочем, это не помогает всё равно. При попытке открыть URL с сертификатом телефон спрашивает пароль от сертификата в бесконечном цикле (пока не нажмёшь Cancel) -- никакой пароль не подходит. Я пробовал делать файл сертификата с паролем и без -- без разницы, и так и так не работает.
Потом я подумал, что проблема в том, что это самоподписанный сертификат, и вспомнил про CAcert.org. Дай, думаю, их рутовый CA сертификат поставлю. Тут тоже всё просто, но ничего не работает. Во-первых, заходим на https://www.cacert.org/ и убеждаемся, что браузер ругается на подписанный непонятно кем сертификат. Во-вторых, открываем http://www.cacert.org/certs/root.cr
Не знаю, что я делаю не так. Вроде бы всё делаю так. Android 2.2.
Есть вариант, конечно, пересобрать кейчейн и подсунуть ему, но для этого надо разлочивать телефон, это как-то неспортивно.
android: importing certificates
|