В зависимости от того, какие данные предоставил центр сертификации клиенту, установку можно разбить на несколько пунктов:
- У вас есть приватный ключ, а также цепочка сертификатов (сам SSL сертификат + промежуточный + корневой сертификаты). Обычно это 2 файла с расширениями key (приватный ключ) и crt (цепочка сертификатов)
- У вас есть приватный ключ, сам SSL сертификат, а также цепочка сертификатов (промежуточный+корневой). Обычно это файлы с расширениями key (приватный ключ) и 2 файла с расширением crt (сертификат и цепочка сертификатов соответственно)
- У вас есть приватный ключ, сам SSL сертификат, а также промежуточный и корневой сертификат т.е. 4 элемента по отдельности. Обычно это файлы с расширениями key и 3 файла с расширением crt.
- У вас есть сертификат в другом формате, например pfx
Помимо этого может быть файл с запросом на сертификат, обычно в формате csr
Приступим к разбору каждого пункта
- У вас есть приватный ключ, а также цепочка сертификатов
- Подготовка к установке
- Установка сертификата
- У вас есть приватный ключ, сам SSL сертификат, а также цепочка сертификатов
- У вас есть приватный ключ, сам SSL сертификат, а также промежуточный и корневой сертификат
- У вас есть сертификат в другом формате, например pfx
У вас есть приватный ключ, а также цепочка сертификатов
Подготовка к установке
Наилучший вариант т.к. потребуется только указать эти данные в конфигурации nginx и перезапустить его.
Установка сертификата
Будем считать, что приватный ключ имеет имя private.key, а цепочка сертификатов CAbundle.crt
Создадим директорию ssl в nginx:
[root@server ~]# mkdir /etc/nginx/ssl
Далее скопируйте файл приватного ключа и цепочку сертификатов в директорию /etc/nginx/ssl/
[root@server ~]# mv private.key CAbundle.crt /etc/nginx/ssl
После этого откройте файл конфигурации виртуального хоста nginx в редакторе и измените значения строк ssl_certificate и ssl_certificate_key
Например (вариант при использовании LetsEncrypt:
Было:
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;
Стало:
ssl_certificate /etc/nginx/ssl/private.key;
ssl_certificate_key /etc/nginx/ssl/CAbundle.crt;
Не забудьте про точку с запятой (;) в конце каждой из строк
Сохраните файл и перезагрузите nginx
[root@server ~]# systemctl restart nginx
У вас есть приватный ключ, сам SSL сертификат, а также цепочка сертификатов
Данный вариант отличается от первого только тем, что нужно добавить цепочку сертификатов в сам SSL сертификат.
Будем считать, что SSL сертификат имеет имя site_ru.crt, а цепочка сертификатов CA.crt
В таком случае объединение файлов можно выполнить так:
Перейдем в директорию, где расположены данные файлы (например /root/site_certs/)
[root@server ~]# cd /root/site_certs/
Объединим файлы
[root@server certs]# cat CA.crt >> site_ru.crt
Далее выполните действия по установке сертификата: Установка SSL сертификата на nginx
У вас есть приватный ключ, сам SSL сертификат, а также промежуточный и корневой сертификат
Данный вариант отличается от первого только тем, что нужно объединить все сертификаты (SSL сертификат, промежуточный и корневой) в одну цепочку.
Будем считать, что SSL сертификат имеет имя site_ru.crt, корневой сертификат CAroot.crt, промежуточный сертификат CAintermediate.crt
В таком случае объединение файлов можно выполнить так:
Перейдем в директорию, где расположены данные файлы (например /root/site_certs/)
[root@server ~]# cd /root/site_certs/
Объединим файлы
[root@server certs]# cat CAroot.crt CAintermediate.crt >> site_ru.crt
Далее выполните действия по установке сертификата: Установка SSL сертификата на nginx
У вас есть сертификат в другом формате, например pfx
Данный вариант отличается от первого только тем, что цепочка сертификатов и приватный ключ уже содержатся в pfx сертификате и осталось только конвертировать его.
Будем считать, что SSL сертификат имеет имя cert.pfx
В таком случае получить необходимые файлы можно выполнить так:
Перейдем в директорию, где расположен данный файл (например /root/site_certs/)
[root@server ~]# cd /root/site_certs/
Получим цепочку сертификатов
[root@server certs]# openssl pkcs12 -in cert.pfx -clcerts -nokeys -out public.crt
Получим приватный ключ
[root@server certs]# openssl pkcs12 -in cert.pfx -nocerts -nodes -out private.key
Далее выполните действия по установке сертификата
Все делал по первому способу. При попытке перезагрузить/стартануть nginx выдает ошибку Job for nginx.service failed because the control process exited with error code.See «systemctl status nginx.service» and «journalctl -xe» for details.
Точку с запятой в конфиге проверял и все на месте. Nginx -t проходит без ошибок