Ошибки Openssl в PowerShell при конвертации сертификатов - PullRequest
0 голосов
/ 23 марта 2020

В настоящее время я работаю над преобразованием CER в PEM.

Я работаю над созданием сценария для преобразования нескольких сертификатов в другой формат с использованием Openssl. Я использую PowerShell 7 и Openssl 1.1.1e. Когда я запускаю свой сценарий, я получаю некоторые ошибки Openssl, , однако он все еще, кажется, конвертирует сертификат, поскольку я все еще получаю файл .pem после . Ниже приведены ошибки:

Can't open Folder\Path for reading, Permission denied
17956:error:02001005:system library:fopen:Input/output error:..\crypto\bio\bss_file.c:69:fopen('C:\Users\localadmin\Desktop\PowerShell\Testing Environment\Folder\Path','r')
17956:error:2006D002:BIO routines:BIO_new_file:system lib:..\crypto\bio\bss_file.c:78:
unable to load certificate
Can't open Folder\Path for reading, Permission denied
19560:error:02001005:system library:fopen:Input/output error:..\crypto\bio\bss_file.c:69:fopen('C:\Users\localadmin\Desktop\PowerShell\Testing Environment\Folder\Path','r')
19560:error:2006D002:BIO routines:BIO_new_file:system lib:..\crypto\bio\bss_file.c:78:
unable to load certificate
unable to load certificate
17960:error:0909006C:PEM routines:get_name:no start line:..\crypto\pem\pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
unable to load certificate
16568:error:0909006C:PEM routines:get_name:no start line:..\crypto\pem\pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
unable to load certificate
21500:error:0909006C:PEM routines:get_name:no start line:..\crypto\pem\pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
unable to load certificate
15500:error:0909006C:PEM routines:get_name:no start line:..\crypto\pem\pem_lib.c:745:Expecting: TRUSTED CERTIFICATE

У меня нет ошибок при использовании Openssl для создания CSR или закрытого ключа. Ниже приведен код, который я использую для преобразования:

if($CertType -eq "PEM") {
    Get-ChildItem $ScriptPath\$Kit -Recurse -Force | ForEach-Object {
        $OutFile = $_.FullName.ToString().Replace(".cer",".pem")
        openssl x509 -in $_.FullName -outform PEM -out "$Outfile"}
}

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

смог разобраться. В моем коде для преобразования файла CER в PEM, при повторении через мои папки я добавил строку, включающую только файлы CER, а не файлы ключей. Ниже отредактированный код.

if($CertType -eq "PEM") {
    Get-ChildItem $ScriptPath\$Kit -Recurse -include "*.cer" | ForEach-Object {
        $OutFile = $_.FullName.ToString().Replace(".cer",".pem")
        openssl x509 -in $_.FullName -outform PEM -out "$Outfile"}
}
0 голосов
/ 23 марта 2020

Формат команды openssl x509 по умолчанию - pem, поэтому ваша командная строка конвертирует из pem в pem. Поэтому ошибки заключаются в том, что openssl не понимает формат файла, поскольку он ожидает файл в формате pem.

Я предполагаю, что вы хотите преобразовать формат DER в формат PEM. Итак, что вы хотите сделать:

openssl x509 -in {infilename} -inform der -out {outfilename}

, который будет ожидать форматированный файл DER на входе и выходе в формате PEM файл.

или вы можете явно указать обе стороны, например:

openssl x509 -in {infilename} -inform der -out {outfilename} -outform pem

Из руководства :

-inform DER | PEM

Указывает формат ввода, обычно команда ожидает сертификат X509, но может измениться, если присутствуют другие параметры, такие как -req. Формат DER - это кодировка DER сертификата, а PEM - кодировка base64 кодировки DER с добавлением строк верхнего и нижнего колонтитула. По умолчанию используется формат PEM.

-outform DER | PEM

Указывает формат вывода, параметры имеют то же значение и по умолчанию, что и параметр -inform.

...