3.4 Форматы PKCS1 и PKCS8 это форматы только для ключей или для сертификата тоже?
https://en.wikipedia.org/wiki/PKCS
3.2 Отправить запрос получается только в том случае, если ключ указан в самом файле сертификата, то есть я их объединил в один файл и тогда запрос заработал. Почему по отдельности не работает?
Ну потому что TSL делается не по ключам, а по сертификатам с ключами. Например пара ключей не содержит информации о сроках годности и нет цепочки доверенных сертификатов чтобы проверить валидацию.
Но не успел я им ничего отправить, как они прислали мне новый сертификат. Как они его сгенерили без реквеста? Типа по старому реквесту? То есть реквест не имеет срока годности?
Генерация сертификатов для общения двух сервисов договаривается между разработчиками этих сервисов. Если вы используете самоподписанные сертификаты, то любой может сгенерить. Если вы используете один и тот же CA, доступный обеим командам, любая команда может запросить новый сертификат. Если вы работаете в разных компаниях, у каждой есть свой внутренний CA и процедура получения сертификатов, тогда они бы не могли сгенерировать новый сертификат, но раз смогли то у час не этот случай.
Но запросы при этом по этому сертификату отправляются с любого другого домена. Зачем тогда в сертификате вообще указывать домен, если можно отправлять запросы с любого?
Обычно сертификат лежит на сервере, который соответствует домену, а не на клиенте.
Вы же когда на google.com ходите по HTTPS, то можете это делать с любого компа, а не только с сервера гугла?
Вам нужно просто разобраться зачем у вас используются сертификаты - для TLS, для двухстороннего TLS или для авторизации.
Нужно разобраться как у вас проверяется валидация - может у вас просто стоит ignoreinvalidcert и все
Никто кроме вас в вашем приложении не разберется. Поднимите кого-то из тех, кто принимал архитектурное решение и выясните как у вас надо делать, и так и делайте. А то вполне возможно что у вас даже так как планировали сейчас не работает.