Как удалить Пароль С закрытым ключом из pkcs12 контейнера?

Для завершения, EBS базировался экземпляр, необходимо и завершить экземпляр и также удалить устройство хранения данных EBS, хотя это сделает экземпляр не восстанавливаемым, конечно.

Каждый раз, когда новый экземпляр EBS является икрой, копия начального моментального снимка является икрой в объем EBS, который будет использоваться, как поддерживают тот экземпляр.

Я думаю, что это - в значительной степени все, что необходимо, я никогда не должен был удалять тот сам так сообщает мне, как он идет!

40
задан 14 June 2013 в 16:02
5 ответов

It can be achieved by various openssl calls.

  • PASSWORD is your current password
  • YourPKCSFile is the file you want to convert
  • NewPKCSWithoutPassphraseFile is the target file for the PKCS12 without passphrase

First, extract the certificate:

$ openssl pkcs12 -clcerts -nokeys -in "YourPKCSFile" \
      -out certificate.crt -password pass:PASSWORD -passin pass:PASSWORD

Second, the CA key:

$ openssl pkcs12 -cacerts -nokeys -in "YourPKCSFile" \
      -out ca-cert.ca -password pass:PASSWORD -passin pass:PASSWORD

Now, the private key:

$ openssl pkcs12 -nocerts -in "YourPKCSFile" \
      -out private.key -password pass:PASSWORD -passin pass:PASSWORD \
      -passout pass:TemporaryPassword

Now remove the passphrase:

$ openssl rsa -in private.key -out "NewKeyFile.key" \
      -passin pass:TemporaryPassword

Put things together for the new PKCS-File:

$ cat "NewKeyFile.key"  \
      "certificate.crt" \
      "ca-cert.ca" > PEM.pem

And create the new file:

$ openssl pkcs12 -export -nodes -CAfile ca-cert.ca \
      -in PEM.pem -out "NewPKCSWithoutPassphraseFile"

Now you have a new PKCS12 key file without passphrase on the private key part.

48
ответ дан 28 November 2019 в 19:43

Теперь закрытый ключ:

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -password pass:PASSWORD -passin pass:PASSWORD -passout pass:TemporaryPassword

Удалите кодовую фразу:

openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:TemporaryPassword

Два шага можно заменить на

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -nodes
2
ответ дан 28 November 2019 в 19:43

Самое простое решение Я нашел -

Экспорт во временный pem файл

openssl pkcs12 -in protected.p12 -nodes -out temp.pem
#  -> Enter password

Преобразование pem обратно во временный p12

openssl pkcs12 -export -in temp.pem  -out unprotected.p12
# -> Just press [return] twice for no password

Удаление временного сертификата

rm temp.pem
35
ответ дан 28 November 2019 в 19:43

Это легко сделать за один шаг без временного файла:

openssl pkcs12 -в "PKCSFile" -узлы | openssl pkcs12 -экспорт -из "PKCSFile-".Nopass"

Ответьте на запрос "Import Password" с паролем. Отвечайте на подсказки Export Passowrd с помощью

Готово.

Обратите внимание, что это работает с любым количеством промежуточных сертификатов, которые могут быть в комплекте...

Я настоятельно рекомендую позаботиться о результирующем файле; было бы неплохо сначала установить umask на 377 (не-уникс: это означает, что только владелец может читать созданный файл). Я полагаю, что это 2 шага, если ваша стандартная umask разрешена...

.
5
ответ дан 28 November 2019 в 19:43

У меня ничего не работало. В конце концов я вернулся к коду dotNet, который сработал в первый раз.

class Script
{
    static public void Main(string[] args)
    {
                if (args.Length < 3 || args.Contains("/?"))
                {
                    MainHelp(args);
                    return;
                }
       string _infile = args[0],
                        _outfile = args[2];
                string _password = args[1], _outpassword = (args.Length > 3) ? args[3] : "";
                Console.WriteLine(String.Format("{0} -> {1} with ({2} -> {3})", _infile, _outfile, _password, _outpassword));
                System.Security.Cryptography.X509Certificates.X509Certificate2 cert = null;
                Console.WriteLine(String.Format("Load {0} with {2}", _infile, _outfile, _password, _outpassword));
                cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(_infile, _password, X509KeyStorageFlags.Exportable);
                Console.WriteLine(String.Format("Export {1} with {3}", _infile, _outfile, _password, _outpassword));
                System.IO.File.WriteAllBytes(_outfile, cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pfx, _outpassword));
                Console.WriteLine(String.Format("Export complete", _infile, _outfile, _password, _outpassword));
    }

     static public void MainHelp(string[] args)
    {
            Console.WriteLine("Usage pfxremovepwd [inpfx] [inpwd] [outpfx] [optional outpwd]");
            return;
    }
}
0
ответ дан 28 November 2019 в 19:43

Теги

Похожие вопросы