В этих направлениях для настройки Stunnel в Windows появляется следующий текст:
Скопируйте действительный публичный сертификат SSL в каталог «C: \ Program Files (x86) \ stunnel». Чтобы упростить задачу, объедините сертификаты открытого и закрытого ключей в один файл .PEM.
Я хотел бы знать, как это сделать, но эти указания не касаются механики этого.
Кто-нибудь может показать мне, как пожалуйста?
Я использую Windows 2016.
Речь идет о сертификате LetEncrypt SSL, который соответствует домену, используемому для доступа к серверу.
РЕДАКТИРОВАТЬ Я попытался создать .pem, используя приведенные ниже инструкции Ральфа Фридле.
Чтобы экспортировать его из 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 Благодаря комментарию Ральфа Фридла я нашел часть документа stunnel, который я ранее пропустил, который документирует структуру того, что он ожидает в файле .pem - он здесь: https://www.stunnel.org/static/stunnel.html#CERTIFICATES .
Так это выглядит, если я:
это может сработать! Я попробую следующее.
РЕДАКТИРОВАТЬ3
Используя подход, предложенный 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, работал нормально.
Предполагая, что вы настраиваете серверную часть, любые Сервер 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, без закрытого ключа. Найдите, откуда он пришел, и получите оттуда закрытый ключ. Если закрытый ключ присутствует, но ограничен, он все равно может были скопированы откуда-то еще, откуда вы можете его получить. Если нет, то если ключ был сгенерирован здесь и установить ограничение при рождении, кто бы это ни сделал, испортил эту часть вашей жизни. Накажи их, затем выброси этот сертификат и начни заново и сгенерируй новый закрытый ключ, который НЕ ограничен, получи для него сертификат, а затем используй его.
Страница по адресу Давайте зашифровать содержит обзор вместе со ссылками на множество различных программ, которые вы можете использовать для создания сертификата. Он должен ответить на ваш вопрос, если нет, вы можете задать более конкретный вопрос.
редактировать
Большинство программ получают 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-----