Вы также можете исправить эту проблему, используя аннотацию @Service в классе службы и передав требуемый bean classA в качестве параметра в другой конструктор класса bean bean и аннотировать конструктор класса B с @Autowired. Пример фрагмента здесь:
@Service
public class ClassB {
private ClassA classA;
@Autowired
public ClassB(ClassA classA) {
this.classA = classA;
}
public void useClassAObjectHere(){
classA.callMethodOnObjectA();
}
}
Чтобы быть абсолютно правильным, вы должны поместить все имена в поле SAN.
Поле CN должно содержать имя субъекта, а не имя домена, но когда Netscape обнаружил эту вещь SSL, они пропустили чтобы определить его самый большой рынок. Просто не было поля сертификата, определенного для URL-адреса сервера.
Было решено помещать домен в поле CN, и в настоящее время использование поля CN устарело, но все еще широко используется. CN может содержать только одно доменное имя.
Общие правила для этого: CN - укажите здесь ваш основной URL (для совместимости) SAN - разместите здесь весь свой домен, повторите CN, потому что его не в нужном месте там, но его использовали для этого ...
Если вы нашли правильную реализацию, ответы на ваши вопросы будут следующими:
Вкратце: когда клиент-браузер подключается к этому серверу, браузер отправляет зашифрованные пакеты, которые зашифровываются открытым ключом сервер. Сервер расшифровывает пакет, и если сервер может расшифровать, то он был зашифрован для сервера.
Сервер не знает ничего от клиента перед расшифровкой, поскольку только IP-адрес не зашифрован через соединение. Вот почему вам нужно 2 IP-адреса для 2-х сертификатов. (Забудьте о SNI, там слишком много XP).
На стороне клиента браузер получает CN, затем SAN, пока все из них не будут проверены. Если одно из имен соответствует сайту, проверка URL-адресов была выполнена браузером. (im, не говоря о проверке сертификата, конечно, много ocsp, crl, aia запрос и ответы каждый раз ходят в сети.)