Как мне получить «действующий публичный сертификат SSL» из сертификата Windows? (для конфигурации stunnel)

В этих направлениях для настройки Stunnel в Windows появляется следующий текст:

Скопируйте действующий общедоступный сертификат SSL в каталог "C: \ Program Files" (x86) \ stunnel. "Чтобы сделать вещи более беспроблемными, объедините общественные ключ и сертификаты закрытого ключа в один файл .PEM.

Я хотел бы знать, как это сделать, но в этих инструкциях пропущена механика этого.

Кто-нибудь может показать мне, пожалуйста?

Я использую Windows 2016.

Речь идет о сертификате LetEncrypt SSL, который соответствует домену, используемому для доступа к серверу.


ИЗМЕНИТЬ Я попытался создать .pem, используя инструкции из RalfFriedle ниже

Чтобы экспортировать его из mmc, дважды щелкните сертификат, перейдите на вкладку подробности, экспорт в файл, нажмите "Далее", выберите X.509 в кодировке Base-64, нажмите «Далее», выберите имя файла, нажмите «Далее» и закончите. Хотя Windows хочет добавить расширение .cer, это сертификат в PEM format

итоговый файл выглядит следующим образом (без моей обфускации) ...

-----BEGIN CERTIFICATE-----
ZZZZZZZZZZZZZZZZZZZZZ99ZZZZ9Z/ZZ+ZZZZZ9ZZZZ9ZZ9ZZZZZZZZ9ZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZ9ZZZ9ZZZZZZZ9ZZZZZZZZZZ9ZZZZ9ZZZZZZZ9ZZZZZZ9Z
ZZZZZZZZZZZ9ZZZZZZZZZZZZZZZZZZZZZ9Z9ZZZZZZZZZ9ZZZZZZZZZZZZZZZZZZ
9Z9ZZZZZZZZZZZ9ZZZZZZZZZZZZZZZZZZZ9Z9ZZZZZZZ9ZZZZZ9Z+Z9ZZZ9ZZ9ZZ
ZZZZZZZZZZZZZZZZZ9ZZZZZ99ZZ9ZZ9ZZZZZZ9ZZZZZZZ9Z9ZZZZ9ZZ9ZZ9ZZZ9Z
9Z9ZZZZZ9ZZZZ99ZZZZZZ9ZZZZZZZZZ/ZZZ9Z9Z9Z99ZZ99ZZZZZZ9Z9ZZZZZZZZ
9ZZZZZ9ZZZZZZZ9ZZZZ9Z9ZZZZZ9ZZZZ99ZZ9ZZ+ZZ99ZZZ99/Z9ZZZ99ZZZ9Z9Z
ZZZZZZZ9ZZZZZ9ZZ9ZZ/ZZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZ9ZZZZZ9ZZZZZZ+Z
Z9Z9ZZ9ZZZ9ZZ99ZZZZZ9ZZZZZZZZZZZ9ZZZ9ZZZZ999Z9ZZZZZZZZZZZ9ZZZZZZ
ZZZZZZZZZZ9ZZZZ/ZZZZZZZZZZ9ZZ9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZ9ZZZZZZZ9ZZ9ZZZZZZZZZZ99Z9ZZZZZ9+9ZZZZZZZ9ZZZ/ZZZZ
ZZZZZZZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZZZ99ZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZ9ZZZ9ZZ9ZZ9ZZZZZZZZ99ZZ9ZZZZZZZ9ZZZZZZZ9ZZZZZ
ZZZZZZZZZZZZZZZZZ9Z9ZZZ9ZZ9ZZZZ9ZZZZZZ99ZZ9ZZZZZZZ9ZZZZZZZ9ZZZZZ
ZZZZZ9ZZZZZZZZ9ZZ9Z9ZZZZZZZZZ9ZZZZZ+ZZZZZZZZZZZZZZZZZZZZZ9ZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZZZZZZZZZZZZ9ZZZZZ9ZZZZ9ZZZZZ
ZZ9ZZZZZZZ9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ9ZZZZZ9Z9ZZZZ
ZZZZZ99ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ9ZZ9ZZZZZZZZZZZZZZZ9ZZZ9Z
ZZZZZZ9ZZZZZZ9ZZZZ9ZZZZ9ZZZZZZZZZZZZZZZ9ZZZZZ9Z9ZZZZZ9ZZZ9ZZZZ99
ZZZZZZZZZZZ9ZZZ9ZZ9ZZZZZZZ9ZZZZZZZ9ZZZZZZZZZZ9ZZZZ9ZZZ9ZZZZZZZZZ
ZZZZZZZ9ZZZZZZZ9ZZZ9ZZZZZZZZZ9ZZZZZZZZZZZZZZZZ99ZZZZ9ZZZZZZZZZZZ
ZZZZZZZZZZZ9ZZ9ZZZZZZZZZZZZZZZZ9ZZZZZZZZZ9ZZZZZZZZZZZZ9ZZZZZZZZZ
ZZ9ZZZZZZZZZZZZZZZZZZZZZZZZZZZ99ZZZZZZZZZZZZZZZZZZZ9Z9ZZZZZZZZZZ
ZZZZZZZZZZZZZ9ZZZ9ZZZZZZZZZZZZZ+ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZ9Z9ZZZZZZ9Z9//9ZZZ9ZZ9ZZZ9ZZ/ZZZZZZZZZZZZZZZZZ9Z/+ZZZ
Z9ZZZZZZZZZZZZZZZZZZZZ9ZZZZZZZZZZZZZ9Z9ZZZZZZZZZZZZZZZZ9+ZZZ+ZZZ
ZZZZZZZZZ9ZZZZZ/ZZZZZZZZZZZZZ/ZZZZ9ZZZ+Z/ZZZZZZZZZZZZZZZZ9Z9ZZZZ
ZZZ9ZZ9Z9Z9ZZZZZZZZZZZZZZZZZZZZ9ZZZZZZZ+9ZZZZ9ZZZZZZZZZZZZZZZZ99
ZZZZZZZZ9ZZZZZ+ZZZ+ZZZZZZZZZZZ9ZZ9ZZ9ZZZZZ99ZZZZZZ9ZZZ9Z/ZZZZZZ9
9ZZZ9ZZZZ9ZZ9ZZZZ99ZZZZZZZ9Z9ZZZZZZZZ9ZZZZZZ9ZZ/Z9ZZ9ZZ9ZZZZZZZZ
Z9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ9ZZ9Z9ZZZZZ9ZZZZZZZZZZZZZ
Z999ZZ9ZZZ==
-----END CERTIFICATE-----

Когда я пытаюсь использовать его, фреймворк сообщает ...

OpenSSL.crypto.Error: [('PEM routines', 'PEM_read_bio', 'no start line')]

Я добавляю это к вопросу, поскольку термины в ошибка не имеет большого значения, но я подумал, что это может что-то значить для кого-то, кто читает вопрос.


EDIT2 Благодаря комментарию Ральфа Фридле я нашел часть документа stunnel, который я ранее пропустил, который документирует структура того, что он ожидает в файле .pem - здесь: https://www.stunnel.org/static/stunnel.html#CERTIFICATES .

Итак, это выглядит так, если я:

  • взять результат экспорта;
  • сгенерировать закрытый ключ;
  • , а затем объедините их в один файл

, это может сработать! Я попробую следующее.


EDIT3

Используя подход, предложенный dave_thompson_085, теперь у меня есть рабочий PEM! Отлично!

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

На этой странице предлагается использовать openssl для удаления парольной фразы ( https://futurestud.io/tutorials/how-to-remove-pem-password-from-ssl-certificate ), но на самом деле эта команда создает файл, который больше не принимается процессом, использующим pem.

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

Также, пока я здесь, я ' Скажу только, что когда я впервые начал использовать openssl, встроенный в stunnel, я увидел предупреждения об отсутствии файла конфигурации. Эти предупреждения исчезли, когда я установил такую ​​переменную среды:

set OPENSSL_CONF=F:\bin\installed\stunnel\config\openssl.cnf

Где 'F: \ bin \ installed \ stunnel' - это место, где я установил stunnel.

Еще одно предостережение для более поздних читателей. У меня есть копия openssl как часть среды Mingw / Git для Windows, и я попытался использовать ее с предложенной командой (потому что у меня уже было открыто окно), и я обнаружил, что она просто зависла. Я не знаю, почему он завис, но выполнение того, что dave_thompson_085, с использованием openssl, встроенного в stunnel, работало нормально.

0
задан 16 August 2018 в 01:05
2 ответа

Предполагая, что вы настраиваете серверную часть, любой сервер SSL / TLS, включая stunnel (за исключением некоторых неприменимых случаев) ТРЕБУЕТСЯ ЧАСТНЫЙ КЛЮЧ И СЕРТИФИКАТ .

Если «сертификат» в вашем магазине Windows на самом деле является «сертификатом с закрытым ключом», т. Е. Если он находится в личном хранилище (а не в хранилище доверенных корневых центров сертификации), и его значок имеет небольшой желтый ключ вверху слева (в помимо желтой печати в правом нижнем углу), и экспорт не был ограничен, вам потребуется другой процесс с дополнительным шагом:

  • Сначала запустите мастер экспорта (либо из mmc / certmgr, либо из InternetOptions = inetopt. cpl / Content / Certificates) и выберите «Да экспортировать закрытый ключ», который автоматически установит формат на «PKCS # 12 (PFX)». Дайте ему пароль и подходящее имя файла / местоположение; вероятно, удобнее всего поместить его в каталог % programfiles *% \ stunnel .

  • Во-вторых, запустите программу командной строки openssl; один включен в дистрибутив stunnel для Windows (или, по крайней мере, был в том, который я получил некоторое время назад), или есть много других мест, где вы можете получить сборку OpenSSL для Windows. В окне CMD (или PowerShell) выполните:

     openssl pkcs12 -in thep12fromWindows -out mycertandkey.pem
     

    за исключением того, что укажите полный путь "(programfilesdir) \ stunnel \ bin \ openssl" , если этого каталога нет ни в вашем PATH, ни в рабочем каталоге (где Windows найдет имя без прикрас автоматически). Используйте имя, которое идентифицирует этот сертификат и ключ, любым удобным для вас способом; суффикс .pem не требуется, но я рекомендую его для ясности.

    Этот файл будет содержать как сертификат в формате PEM, так и закрытый ключ в формате PEM, как предлагается в инструкциях по stunnel. По умолчанию закрытый ключ зашифрован, поэтому вам нужно будет вводить пароль каждый раз при запуске stunnel; если вы этого не хотите и не беспокоитесь о том, что какой-то злоумышленник может получить доступ к этому файлу, а затем использовать ваш ключ и сертификат, чтобы выдать себя за ваш сервер и перехватить его трафик, добавьте -nodes в команду выше.

Если запись сертификата в магазине Windows не содержит закрытого ключа или для закрытого ключа задан запрет на экспорт, вы не можете использовать его. Если закрытого ключа нет, то сертификат должен быть изначально получен в какой-то другой системе (и скопирован здесь), потому что вы не можете получить сертификат от большинства центров сертификации, особенно от LE, без закрытого ключа. Найдите, откуда он пришел, и получите оттуда закрытый ключ. Если закрытый ключ присутствует, но ограничен, он все равно может быть скопирован откуда-то еще, откуда вы можете его получить. Если нет, то если ключ был сгенерирован здесь и установлен ограниченным при рождении, кто бы это ни сделал, тот испортил эту часть вашей жизни. Накажи их, затем выбрось этот сертификат и начни заново и сгенерируй новый закрытый ключ, который НЕ ограничен, и получи для него сертификат, а затем используй его.

1
ответ дан 4 December 2019 в 15:52

Страница Let's Encrypt содержит обзор вместе со ссылками на множество различных программ, которые вы можете использовать для создания сертификата. Он должен ответить на ваш вопрос, если нет, вы можете задать более конкретный вопрос.

Edit

Большинство программ получают PEM прямо из Let's encrypt. Я рекомендую вам найти способ для вашей программы напрямую хранить файл PEM там, где он вам нужен, потому что сертификат должен быть обновлен через три месяца.

Чтобы экспортировать его из mmc, дважды щелкните сертификат, перейдите на вкладку сведений, экспорт в файл, нажмите «Далее», выберите X.509 в кодировке Base-64, нажмите «Далее», выберите имя файла, нажмите «Далее» и закончите. Хотя Windows хочет добавить расширение .cer , это сертификат в формате PEM .

Сертификат PEM выглядит так:

-----BEGIN TRUSTED CERTIFICATE-----
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg
SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln
biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm
GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve
fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ
aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj
aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW
kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC
4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga
FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEDBUMBQGCCsG
AQUFBwMEBggrBgEFBQcDAQw8VmVyaVNpZ24gQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0
-----END TRUSTED CERTIFICATE-----
0
ответ дан 4 December 2019 в 15:52

Теги

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