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

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

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

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

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

Я на Windows 2016.

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


РЕДАКТИРОВАТЬ Я попытался сделать.pem, используя инструкции от RalfFriedle ниже

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

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

-----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')]

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


РЕДАКТИРОВАТЬ2 Благодаря комментарию RalfFriedle я нашел часть документооборота, о которой я ранее не заметил, которая документирует структуру ожидаемого в файле.pem - это здесь: https://www.stunnel.org/static/stunnel.html.

Так выглядит, если я:

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

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


EDIT3

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

Однако есть одна вещь, которая заключается в том, что при ее использовании мне предлагается ввести фразу PEM Pass. Это нормально, потому что мне предложили создать фразу-пароль при выполнении предложенной команды, но она не идеальна для обычного использования. Есть ли способ сделать то же самое, но не иметь пароль?

На этой странице предлагается использовать 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 \ instal \ stunnel' - это место, где у меня установлен stunnel.

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

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, без наличия закрытого ключа. Найдите, откуда он взялся, и получите оттуда закрытый ключ. Если закрытый ключ присутствует, но ограничен, он все равно может быть скопирован из другого места, откуда вы можете получить его. Если нет, если ключ был сгенерирован здесь и ограничен при рождении, тот, кто это сделал, разрушил эту часть вашей жизни. Идите, отчитайте их, затем выбросьте этот сертификат и начните заново, сгенерируйте новый закрытый ключ, который НЕ ограничен, и получите сертификат для него, а затем используйте его.

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

редактировать

Большинство программ получат вам 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-----
Другие вопросы по тегам