Этот файл нельзя использовать в качестве файла для обмена личной информацией
Обновлено: 21.11.2024
У меня есть файл сертификата PFX на моем компьютере, и я хочу просмотреть подробности перед его импортом. (Утилита импорта на самом деле не сообщает вам, что такое сертификат!).
Как просмотреть сведения о файле сертификата PFX?
На дворе 2019 год, и мы до сих пор не можем легко просмотреть сертификат перед его установкой. Мы должны выйти в сеть, чтобы найти ответ. Печальное положение дел для Microsoft.
4 ответа 4
Некоторые параметры просмотра сведений о файле PFX:
-
Откройте командную строку и введите: certutil -dump
Первый вариант хорош, но есть ли способ просмотреть более подробную информацию о сертификате, например о SAN, без установки стороннего инструмента?
отобразит подробный список, включая SAN.
У меня есть зашифрованный PFX-файл. Есть ли какая-либо информация, которую я могу узнать об этом, не зная пароля?
@mwfearnley, кроме как восстановить пароль методом полного перебора, боюсь, другого выхода не осталось.
Вы можете передать информацию утилите openssl x509, а затем экспортировать ее в файл, подобный этому:
Конечно, вам также будет предложено ввести пароли сертификатов.
Содержимое файла PFX можно просмотреть в графическом интерфейсе, щелкнув файл PFX правой кнопкой мыши и выбрав "Открыть" (вместо действия по умолчанию "Установить").
Это откроет mmc и покажет файл pfx в виде папки. Откройте папку pfx и подпапку Certificates, и вы увидите сертификаты, содержащиеся в файле pfx. Сертификат можно открыть для просмотра сведений.
Кроме того, графический интерфейс можно открыть, запустив mmc certmgr.msc /CERTMGR:FILENAME="C:\path\to\pfx"
Также можно использовать FileTypesMan, чтобы изменить действие по умолчанию (двойной щелчок) для файлов PFX с "Установить" на "Открыть".
У меня есть файл сертификата PFX на моем компьютере, и я хочу просмотреть подробности перед его импортом. (Утилита импорта на самом деле не сообщает вам, что такое сертификат!).
Как просмотреть сведения о файле сертификата PFX?
На дворе 2019 год, и мы до сих пор не можем легко просмотреть сертификат перед его установкой. Мы должны выйти в сеть, чтобы найти ответ. Печальное положение дел для Microsoft.
4 ответа 4
Некоторые параметры просмотра сведений о файле PFX:
-
Откройте командную строку и введите: certutil -dump
Первый вариант хорош, но есть ли способ просмотреть более подробную информацию о сертификате, например о SAN, без установки стороннего инструмента?
отобразит подробный список, включая SAN.
У меня есть зашифрованный PFX-файл. Есть ли какая-либо информация, которую я могу узнать об этом, не зная пароля?
@mwfearnley, кроме как восстановить пароль методом полного перебора, боюсь, другого выхода не осталось.
Вы можете передать информацию утилите openssl x509, а затем экспортировать ее в файл, подобный этому:
Конечно, вам также будет предложено ввести пароли сертификатов.
Содержимое файла PFX можно просмотреть в графическом интерфейсе, щелкнув файл PFX правой кнопкой мыши и выбрав "Открыть" (вместо действия по умолчанию "Установить").
Это откроет mmc и покажет файл pfx в виде папки. Откройте папку pfx и подпапку Certificates, и вы увидите сертификаты, содержащиеся в файле pfx. Сертификат можно открыть для просмотра сведений.
Кроме того, графический интерфейс можно открыть, запустив mmc certmgr.msc /CERTMGR:FILENAME="C:\path\to\pfx"
Также можно использовать FileTypesMan, чтобы изменить действие по умолчанию (двойной щелчок) для файлов PFX с "Установить" на "Открыть".
SSLmarket не позволяет загружать закрытый ключ из администрации, так как это потребовало бы хранения закрытого ключа в нашей системе. Мы никогда этого не сделаем.
Вы можете создать закрытый ключ вместе с CSR, но вы должны сохранить его самостоятельно (для последующей установки сертификата). Ваш браузер автоматически предложит загрузить закрытый ключ.
Когда вам нужно создать PFX? Наиболее распространенные сценарии
- Вы установите сертификат на Windows Server (IIS), но запрос CSR не был создан в IIS.
- Вам нужен сертификат для Windows Server, но у вас нет IIS для создания CSR.
- Вы создали CSR в SSLmarket и сохранили свой закрытый ключ. Теперь вам нужно развернуть сертификат на Windows Server.
- У вас есть сертификат подписи кода, и для подписи вам нужен PFX.
Вот руководство для этих (и других) ситуаций.
Создание PFX с помощью OpenSSL
OpenSSL — это библиотека (программа), доступная в любой операционной системе Unix. Если у вас есть Linux-сервер или вы работаете на Linux, то OpenSSL точно есть среди доступных программ (в репозитории).
Когда вы вводите пароль, защищающий сертификат, файл output.pfx будет создан в каталоге (где вы находитесь).
Создание PFX в Windows (сервер с IIS)
Создать PFX из существующего сертификата
В операционной системе Windows существующий сертификат можно экспортировать из хранилища сертификатов в виде PFX-файла с помощью MMC. Вы также можете сделать это на сервере Windows, если IIS хранит их в хранилище сертификатов.
Веб-сервер IIS позволяет экспортировать существующий сертификат в PFX непосредственно из хранилища сертификатов сервера. Закрытый ключ и CSR создаются во время создания запроса CSR в IIS, а сертификат повторно импортируется при выдаче (оба шага можно найти в видеоруководстве).
Экспорт очень прост: щелкните сертификат правой кнопкой мыши и выберите Экспорт. После выбора пароля для защиты PFX-файла он сохраняется на диск.
Импорт нового сертификата и создание PFX
К сожалению, это невозможно. Хранилище сертификатов Windows не позволяет импортировать отдельный закрытый ключ из файла, поэтому в MMC вы не объединяете ключи в PFX, как в OpenSSL. Вы можете импортировать PFX только на веб-сервер IIS, что и в предыдущем случае.
- Создайте PFX в другом месте (OpenSSL или другим способом), а затем импортируйте сертификат с помощью PFX.
- Создайте новый запрос CSR на сервере и выполните повторный выпуск сертификата.
Создайте PFX с помощью стороннего приложения
Вы можете создать файл .pfx из отдельных ключей в графической программе, чтобы не использовать OpenSSL в терминале.
Лучшей программой для этой цели является XCA с открытым исходным кодом. В этой интуитивно понятной программе вы можете управлять всеми своими сертификатами и ключами. Основным преимуществом является автоматическое сопоставление соответствующих ключей друг с другом; вам не нужно искать, какой закрытый ключ к какому сертификату принадлежит. Импортировать ключи очень просто, и вы можете экспортировать их во все известные форматы.
(Не)безопасность PFX-файла
Файл PFX всегда защищен паролем, поскольку он содержит закрытый ключ. При создании PFX ответственно подходите к выбору пароля, так как он может защитить вас от неправомерного использования сертификата. Злоумышленник был бы доволен, если бы пароль к украденному PFX-файлу был «12345» — он мог бы сразу начать использовать сертификат все время.
С помощью украденного сертификата подписи кода злоумышленник может подписывать любые файлы от имени вашей компании. Поэтому важно обеспечить безопасность файла PFX или выбрать сертификат Code Signing EV. Сертификат Code Signing EV хранится на токене и его неправомерное использование при краже практически невозможно; если пароль вводится несколько раз, токен блокируется.
Не стесняйтесь обращаться в нашу службу поддержки, чтобы помочь вам выбрать сертификат и задать любые вопросы.
Сожалеем, что вы не нашли здесь нужной информации.
Пожалуйста, помогите нам улучшить эту статью. Напишите нам, что вы ожидали и не узнали.
Service Fabric экспортирует сертификат и предоставляет переменную среды. К сожалению, экспортированный pfx недействителен. Я могу вручную экспортировать и повторно импортировать сертификат. Следовательно, проблема должна быть связана с сервисной структурой.
Текст был успешно обновлен, но возникли следующие ошибки:
Прокомментировал Abdruggi 11 сентября 2017 г.
Файлы сертификата и пароля присутствуют. Нет, сертификат внутри рабочей папки хоста поврежден/недействителен. Импорт вручную завершается со следующей ошибкой: «Этот файл недопустим для использования в следующих целях: Обмен личной информацией».
Поведение запрограммировано. В настоящее время в нашем кластере работают два приложения (kestrel/dotnet). Одно приложение (приложение A) работает как часы, а другое (приложение B) — нет. Код запуска тот же (импорт сертификата).
Сначала я подумал, что сертификат в хранилище сертификатов хоста может быть поврежден. Но ручной экспорт и реимпорт работает. Использование сертификата приложения A в приложении B вызывает ту же ошибку.
rakshitatandon прокомментировал 11 сентября 2017 г.
Открывает ли приложение A сертификат внутри контейнера? Этот сертификат работает, а сертификат для приложения B - нет? Есть ли какая-то конкретная разница между типом сертификата, используемого приложением A и приложением B?
Прокомментировал Abdruggi 11 сентября 2017 г.
Необработанное исключение: System.Security.Cryptography.CryptographicException: не удается найти запрошенный объект.
в System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
в System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)
в System.Security.Cryptography.X509Certificates .X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificate.X509Certificate2..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) " " at System.Security.Cryptography. X509Certificates.X509Certificate2..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
rakshitatandon прокомментировал 11 сентября 2017 г.
Исключение похоже на то, что ему не удалось найти сертификат по пути, переданному именем файла. Существует ли сертификат по соответствующему пути?
Прокомментировал Abdruggi 11 сентября 2017 г.
Да, оба приложения предоставляют сертификат внутри контейнера. Приложение A работает с Cert A (не пробовал использовать Cert B. Сделаю это завтра). Приложение Б не работает ни с одним из них.
Прокомментировал Abdruggi 11 сентября 2017 г.
Файл должен присутствовать. В противном случае установить необходимые ACL перед импортом не получится.
По умолчанию сертификат доступен только для чтения пользователем системы. Требуется предоставление прав на чтение пользователю процесса.
rakshitatandon прокомментировал 11 сентября 2017 г.
Прокомментировал Abdruggi 11 сентября 2017 г.
Спасибо за помощь. Сделаю это завтра, когда вернусь в офис. Там, где я живу, сейчас 10 вечера :-)
Может ли это быть какая-то проблема со временем, например, экспорт сертификата не выполняется до запуска контейнера?
rakshitatandon прокомментировал 11 сентября 2017 г.
Конечно, никаких проблем. Сертификаты экспортируются как часть начальной загрузки контейнера, поэтому, если ваш контейнер запущен, в нем должны быть экспортированы необходимые сертификаты. Вы можете сделать docker ps -a, чтобы увидеть, работает ли контейнер. Вы даже можете попробовать выполнить docker exec -it [containerId] cmd.exe, который откроет новую командную строку внутри вашего контейнера. cd в путь, указанный переменной среды, и проверьте, присутствует ли там сертификат.
Вы также можете проверить экспортированные файлы PFX на хосте. Если вы видите их там и не можете вручную экспортировать их в хранилище, значит, возникла проблема с созданным файлом PFX. Трассировки могут помочь выяснить, почему PFX не был сгенерирован должным образом.
Прокомментировал Abdruggi 12 сентября 2017 г.
Мне нужен еще день, чтобы собрать журналы. В настоящее время мы перестраиваем наш тестовый кластер с нуля, чтобы убедиться, что источник проблемы не связан с инфраструктурой.
rakshitatandon прокомментировал 12 сентября 2017 г.
Конечно. Можете ли вы также убедиться, что ваш сертификат присутствует в «LocalMachine», а в манифесте приложения передается правильное StoreName. По умолчанию "Мой".
Прокомментировал Abdruggi 13 сентября 2017 г.
После дальнейшего тестирования я могу предоставить дополнительную информацию. У нас есть тестовый кластер с двумя работающими приложениями (App1 с Cert1 и App2 с Cert2). Оба сертификата находятся в одном и том же хранилище (Localmachine/My), и доступ предоставляется сетевой службе. Закрытый ключ помечен как экспортируемый в обоих сертификатах. Во время тестирования я просто заменил отпечаток в applicationmanifest.xml.
App1 с Cert1: OK
App1 с Cert2: экспортированный сертификат недействителен
App2 с Cert1: OK
App2 с Cert2: экспортированный сертификат недействителен
Оба сертификата в хранилище сертификатов хоста в полном порядке. Ручной экспорт и реимпорт работает.
Похоже, у сервисной структуры возникли проблемы с одним из сертификатов. Какие журналы вам нужны для дальнейшего изучения?
rakshitatandon прокомментировал 13 сентября 2017 г.
Есть ли какая-либо конкретная разница между двумя типами сертификатов? Вы можете найти журналы в FabricLogRoot (это настраиваемый параметр, который вы бы установили при развертывании кластера).
Прокомментировал Abdruggi 13 сентября 2017 г.
Честно говоря, нет никакой разницы. Я получил их обоих от нашей внутренней команды CA. Балансировщик нагрузки F5 без проблем использует их. Поскольку журналы огромны, можно ли загрузить их на один диск и отправить вам ссылку?
rakshitatandon прокомментировал 13 сентября 2017 г.
Abdruggi прокомментировал 22 сентября 2017 г. •
rakshitatandon прокомментировал 22 сентября 2017 г.
прокомментировал mani-ramaswamy 31 октября 2017 г.
Закрытие, так как мы не получили ответа в течение нескольких недель. Сообщите нам, если здесь все еще есть проблема, и снова откройте ее, если это необходимо.
ekumlin прокомментировал 6 февраля 2018 г.
@mani-ramaswamy, @rakshitatandon -- я тоже столкнулся с этой проблемой.Проблема не в том, что файл не существует; Вместо этого я попытался прочитать байты в переменную и передать ее в качестве аргумента таким образом, и я получаю ту же ошибку.
Сам сертификат был создан с использованием:
Следующий код работает, если я возьму файл pfx, сгенерированный из этого самозаверяющего сертификата (с паролем foo ), на моем хост-компьютере (не в контейнере).
Однако при запуске в контейнере (после выполнения описанных здесь шагов) следующее не работает.
_ _FooBar_PFX")); /* Код ACL опущен */ var password = File.ReadAllLines(passwordFilePath, Encoding.Default)[0]; password = password.Replace("\0", string.Empty); / / Все, что выше этого, работает нормально - ниже выдается исключение return new X509Certificate2( file.FullName, // Также выдается такое же исключение с паролем File.ReadAllBytes(file.FullName), X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);">
(Примечание 1: я правильно создал ACL для файлов pfx и паролей и могу прочитать их содержимое.)
(Примечание 2: я также пробовал без флаги хранения и с X509KeyStorageFlags.Exportable ; ни один из них не показывает никаких изменений.)
Создается следующее исключение:
<р>. (String certificateFilePath, String passwordFilePath) в D:\\Repos\\ \\ .cs:строка 102", "RemoteStackTraceString": null, "RemoteStackIndex": 0, "ExceptionMethod": null, "HResult": -2146885623, " Источник": "System.Security.Cryptography.X509Certificates", "WatsonBuckets": null >">Можно ли открыть этот вопрос повторно? (В качестве альтернативы я могу открыть новый выпуск.)
Читайте также: