2015-01-18 3 views
2

Я пытаюсь настроить самоподписанный SSL-сертификат для моего приложения IOS, в котором есть REST-сервер.AFNetwork With Self Signed Certificate

Мой вопрос: следует ли использовать [securityPolicy setAllowInvalidCertificates: YES]; когда мы используем самоподписанные сертификаты? И НЕТ с доверенными сертификатами?

Я не понял точный механизм, однако я читал о SSL в течение нескольких часов .. Он работает с setAllowInvalidCertificates: ДА, но в противном случае я получаю ошибку 1012.

+0

Похоже, вы не можете использовать самоподписанный сертификат с [securityPolicy setAllowInvalidCertificates: NO] до тех пор, пока вы не установите этот сертификат на телефоне. В симуляторе вы можете перетащить и удалить ваш файл для установки, и он работает после этого. Думаю, я должен пойти с доверенными центрами Apple. – cdagli

ответ

0

Да, вы должны установить [securityPolicy setAllowInvalidCertificates: YES]; при использовании самоподписанных сертификатов. И правильно; вы должны использовать НЕТ с доверенными сертификатами.

Вероятно, вы по-прежнему получаете сообщение об ошибке, когда установлено значение НЕТ, потому что части вашей цепочки сертификатов не доверяют. Попробуйте использовать приложение под названием SSL Detective, чтобы убедиться, что всей цепочке доверяют без красных (ненадежных) компонентов. AFNetworking не нравится.

0

Мой вопрос: следует ли использовать [securityPolicy setAllowInvalidCertificates: YES]; когда мы используем самоподписанные сертификаты? И НЕТ с доверенными сертификатами?

Нет! Это победит всю цель SSL, потому что это сделает возможными атаки «человек в середине». Лучше использовать public key pinning. Я не знаю, как это сделать с AFNetwork, но связанный ресурс имеет код для множества сред.

+0

Эти сообщения утверждают, что в противном случае кстати. Но мне это тоже казалось небезопасным; https://github.com/AFNetworking/AFNetworking/issues/1944 http://initwithfunk.com/blog/2014/03/12/afnetworking-ssl-pinning-with-self-signed-certificates/ – cdagli

+0

Возможно, этот параметр плохо назван и просто означает, что он не будет выполнять встроенные проверки, но вы можете определить другие. В других языках эта опция обычно отключает все проверки, то есть встроенные и пользовательские проверки. Но лучше проверить, что он действительно использует пиннинг в конце. Ни в коем случае вы не должны устанавливать этот параметр, а затем не выполнять никаких дополнительных проверок, потому что тогда вы просто принимаете какие-либо сертификаты. –

Смежные вопросы