Если я проверю отпечаток самозаверяющего SSL-сертификата на клиенте, может ли все же произойти атака «человек посередине»?
Только если им удастся фактически воспроизвести отпечаток пальца, что намного, намного сложнее.
Отпечаток пальца - фактически самый надежный метод определения сертификата, каким он должен быть. Его просто игнорируют почти все.
Самоподписанный сертификат так же «безопасен», как и сертификат, выпущенный CA, с теми же криптографическими спецификациями. Все те же слабые места и сильные стороны есть.
Единственное отличие состоит в том, что у клиентов обычно есть предварительно настроенный список доверенных центров сертификации, и они не будут спрашивать, где они всегда будут первоначально запрашивать самозаверяющие. Похоже, вы уже знаете об этом.