А не можем ли да разменим сертификатите в самия процес на DH handshake-а?
(1) Alice → Bob : gx
(2) Alice ← Bob : gy, CertB, EK(SB(gy, gx))
(3) Alice → Bob : CertA, EK(SA(gx, gy))
Където EK е крпиптираната (с вече установения чрез DH ключ) сигнатура на двата експонента, разписана с private key-я на съответната страна.
Човекът по средата няма какво да направи, защото дори и сертификатът да е самоподписан и да го смени със свой, EK(SB(експоненти)) са разписани с частен ключ, кореспондиращият на който публичен няма да е този в подменения сертификат на атакуващия.