Позвольте мне добавить новый взгляд на эту давнюю проблему, с которой сталкиваются многие разработчики, так что это было бы полезно для некоторой посадки тела на этот вопрос в поисках решения.
Файлы PFX или P12 хранят закрытый ключ и более не считаются безопасными. В некоторых странах не разрешается создавать файлы PFX, и цифровой сертификат выдается непосредственно на криптографическом устройстве, таком как USB-токен или смарт-карта, где закрытый ключ генерируется внутри этого оборудования и никогда не покидает его. Данные (или, скажем, хеш для подписи) отправляются внутри этого оборудования для подписи. Таким образом, требуется наличие этого оборудования, где происходит подписание.
Пожалуйста, обратитесь к моему ответу https://stackoverflow.com/a/55692742/9659885, чтобы проверить, как можно выполнить подпись из браузера с помощью аппаратного криптографического устройства.