Nginx настраивает доступ https для создания самозаверяющих сертификатов ssl, к которым могут напрямую обращаться браузеры.

вопрос

Nginx настраивает самозаверяющий ssl-сертификат для поддержки HTTPS-доступа к nginx. При доступе к nginx в браузере выдается сообщение о наличии риска. При доступе к другим крупным веб-сайтам также используется протокол https.Почему к нему можно получить доступ напрямую, не сообщая о наличии риска?

Развеять сомнения

Начнем с ssl-сертификата. Использование протокола https или аутентификации ssl определяется фоновым сервером веб-сайта. Если вы хотите использовать протокол https, вы можете настроить сертификат ssl в фоновой службе. После настройки сертификата ssl браузер должен использовать протокол https для доступа к службе веб-сайта. В этом процессе браузер сначала получает информацию о сертификате на сервере веб-сайта, а затем сам браузер поддерживает список доверенных сертификатов. Пока сертификат, возвращаемый службой веб-сайта, находится в списке доверенных сертификатов, это означает, что служба безопасна, и браузер может получить к ней прямой доступ. Если возвращенный сертификат отсутствует в списке доверенных, браузер считает, что служба небезопасна, и отправит аварийное сообщение, но пользователь может вручную выбрать доверие к веб-сайту и продолжить доступ к службе.
Как видно из приведенного выше описания, после использования ssl-сертификата именно браузер проверяет, является ли сертификат сервера доверенным по соображениям безопасности, и доверие можно использовать для прямого доступа. Браузер протокола HTTPS на веб-сайте Dachang не выдал предупреждение, поскольку Dachang использует SSL-сертификаты, авторизованные третьей стороной.Эти браузеры сертификатов по умолчанию являются доверенными сертификатами, поэтому к ним можно получить прямой доступ. Однако для получения авторизованных SSL-сертификатов третьих сторон обычно требуется плата.
Сертификат, используемый в этом проекте, является самоподписанным сертификатом, которого нет в списке доверенных сертификатов браузера, поэтому выдается сигнал тревоги.

Вышеупомянутое — это одиночная аутентификация https, то есть сертификат фоновой службы аутентификации браузера. Вы также можете включить двустороннюю аутентификацию, то есть браузер аутентифицирует сертификат сервера, а сервер также аутентифицирует сертификат браузера. Но для общедоступных веб-сайтов обычно достаточно односторонней аутентификации.

решать

Из приведенного выше описания видно, что если вы хотите, чтобы самозаверяющий сертификат не вызывал тревогу в браузере, вы должны добавить его в список доверия браузера. Я искал в Интернете много методов для nginx, чтобы генерировать сертификаты и добавлять их в список доверия браузера, но большинство из них не может пропустить тревогу браузера. Ниже описаны метод создания сертификата и метод конфигурации, которые могут успешно пропустить сигнал тревоги браузера.
Используйте инструменты, предоставляемые java, для создания.
первый шаг:

keytool -genkeypair -keyalg RSA -dname "CN=Demo" -alias server -keystore server.jks -keypass 123456 -storepass 123456 -ext SAN=dns:域名,ip:后端服务ip

Создайте файл server.jks.

Шаг второй:

keytool -exportcert -file server.cer -alias server -keystore server.jks -storepass 123456

Создайте файл server.cer.

третий шаг:

keytool -importcert -file server.cer -alias server1 -keyalg client_trusk.jks -storepass 123456 -keypass 123456

Выход следующий:
вставьте сюда описание изображения
просто введите yes.

четвертый шаг:

keytool -importkeystore -srckeystore server.jks -destkeystore server-pkcs12.p12 -deststoretype PKCS12

вставьте сюда описание изображения
Просто введите соответствующий пароль. Создайте файл server-pkcs12.p12.

пятый шаг:

openssl x509 -inform der -in server.cer -out server-pem.pem

Создается файл server-pem.pem.

Шаг шестой:

openssl pkcs12 -nocerts -nodes -in server-pkcs12.p12 -out server.key

Создайте файл server.key.

Шаг 7:
Настройте файл server.key и файл server-pem.pem в файле конфигурации службы nginx и установите файл server.cer в доверенный список браузера. Таким образом, когда браузер обращается к nginx, он может получить прямой доступ, не вызывая тревоги.

Справочная статья: Конфигурация сертификата Nginx: файл cer и файл jks для nginx certificate.crt и файл ключа
(Примечание. Существует проблема с методом справочной статьи. Nginx, настроенный в соответствии со справочной статьей, не может заставить браузер пропустить сигнал тревоги .В этом блоге будут обновляться статьи оптимизированные и исправленные)

расширять

Всего в вышеописанной операции были сгенерированы следующие файлы:
вставьте сюда описание изображения
в итоге использовались только три из них. Так для чего эти файлы? Для получения подробной информации обратитесь к статье, посвященной объяснению суффиксов различных сертификатов и файлов ключей, таких как PEM, DER, CRT, CER, KEY и т. д. Здесь мы делаем только простую запись.

В приведенных выше шагах на первом шаге создается файл jks, который представляет собой хранилище ключей Java и содержит как сертификат, так и закрытый ключ.

На втором этапе в файл jks, сгенерированный на первом этапе, экспортируется файл cer. Файл cer содержит только сертификат и не сохраняет закрытый ключ. Как правило, Linux использует суффикс .crt, а .cer — это суффикс Windows. Поскольку jks включает в себя как закрытый ключ, так и сертификат, поэтому на втором этапе сертификат извлекается и становится файлом cer. И этот файл cer также является файлом сертификата, который необходимо окончательно установить в браузере в список доверенных.

Третий шаг — это также операция с сертификатом cer, например, создание доверенного сертификата, фиксированная операция, просто помните.

Четвертый шаг — преобразовать файл jks, сгенерированный на первом шаге, в файл формата p12. Файл p12 имеет двоичный формат и содержит как сертификат, так и закрытый ключ. Видно, что формат файла jks изменен, а p12 также содержит сертификат и закрытый ключ.

Пятый шаг — преобразовать сертификат cer в формат pem. Файл pem представляет собой обычный текстовый файл, закодированный с помощью Base64 ASCII. Независимо от того, сертификат это или ключ, если он в формате pem, открытие его в текстовом редакторе будет выглядеть одинаково, как строка длинных строк. Видно, что pem — это просто формат файла, и как сертификаты, так и закрытые ключи могут быть преобразованы в формат pem. Вот конвертировать сертификат в формат pem.

Шестой шаг — преобразовать файл p12 в файл .key.Файл .key представляет собой закрытый ключ, который один за другим сопрягается с сертификатом. Закрытый ключ в файле p12 будет извлечен.

Седьмой шаг — настроить файл .key (закрытый ключ) и файл .pem (сертификат) в nginx, а также настроить файл .cer (сертификат формата Windows) в список доверия браузера, таким образом пропустив предупреждение браузера.

Разница между открытым ключом/закрытым ключом/сертификатом

В ssl-сертификате будет открытый ключ на время, закрытый ключ на время и сертификат на время, который полностью обманут. Давайте разберемся:
Во-первых, закрытый ключ размещается на сервере. Как и в nginx выше, файл .key (закрытый ключ) размещается на сервере.
Сертификат — это SSL-сертификат, настроенный на сервере, например, pem-файл в nginx — это сертификат, а сертификат также содержит открытый ключ. Когда браузер получает доступ к веб-сайту по протоколу SSL, он одновременно получает сертификат веб-сайта и открытый ключ. Затем браузер берет полученный публичный ключ и передает его на сайт, а после поступления на сервер сервер расшифровывает данные с помощью закрытого ключа. Поэтому https использует асимметричное шифрование для обеспечения безопасности данных.

В конфигурации проекта SpringBoot https доступ к одиночной аутентификации в статье о действительном сертификате Google, в фоновом режиме настраивается только один файл .keystore. Это связано с тем, что файл .keystore является не только файлом сертификата, но также содержит открытый ключ и закрытый ключ.

Supongo que te gusta

Origin blog.csdn.net/qq1309664161/article/details/127962653
Recomendado
Clasificación