Как установить ssl сертификат linux

Генерация и использование SSL-сертификатов в Linux

В целях безопасности, в частности во избежание перехвата конфиденциальных, персональных или важных данных. Многие владельцы сайтов в сети защищают трафик с помощью SSL-сертификатов. Естественно, защите подлежит только тот трафик, который связан непосредственно с запросами и передачей данных с определённым адресом — адресом сайта. Системные администраторы, сотрудники техподдержки должны ориентироваться в вопросах, касающихся создания и внедрения SSL-сертификатов для хостов. Поскольку предоставляют соответствующие услуги. Для этих целей в системах Linux существует утилита openssl. Она является свободной реализацией методов защиты, протокола SSL, а также генерации сертификатов.

Как SSL-сертификат помогает защитить данные?

На самом деле схема защиты трафика основана на его шифровании открытым ключом и его расшифровке закрытым ключом. Понятие SSL-сертификата применимо в контексте подтверждения того факта, что открытый ключ действительно принадлежит именно тому домену, с которым происходит соединение. Таким образом, в данной схеме присутствуют две составляющие:

  • Пара ключей (открытый и закрытый) — для шифрования/расшифровки трафика;
  • Подпись открытого ключа. Гарантирующая, что он подлинный и обслуживает именно тот домен, для которого и был создан.

Обе эти составляющие и представляют собой то, что принято обозначать понятием SSL-сертификат. Подпись является гарантией, поскольку выдаётся авторитетным центрами сертификации. Это доступные всем онлайн-сервисы (достаточно воспользоваться любой поисковой системой), которым можно отправить свой ключ, заполнив соответствующую анкету. Далее сервис (центр сертификации) обрабатывает данные из анкеты и сам ключ и высылает уже подписанный ключ обратно его владельцу. Среди самых популярных на сегодняшний день центров сертификации являются такие как Comodo.
Важно заметить, что зашифрованный открытым ключом трафик возможно расшифровать только соответствующим ему закрытым ключом. В свою очередь подпись для открытого ключа от авторитетного цента говорит, что зашифрованный трафик пришёл от «своего» или подлинного узла и его можно принять в обработку, т. е. расшифровать закрытым ключом.

Общий порядок создания SSL-сертификата, ключи и подпись

Во время создания SSL-сертификата происходит последовательная обработка следующих видов ключей:

  • *.key – это сами ключи шифрования, открытий и/или закрытый;
  • *.csr – ключ, содержащий сформированный запрос для получения подписи сертификата от центра сертификации, а сам запрос — это открытый ключ и информация о домене и организации, связанной с ним;
  • *.crt, *.cer, *.pem – это, собственно, сам сертификат, подписанный центром сертификации по запросу из файла *.csr.

Для начала нужно создать закрытый ключ:

Здесь команда genrsa генерирует RSA-ключ, опция -des3 указывает алгоритм шифрования ключа. А опция -out указывает, что ключ должен быть получен в виде файла server.key. Число 2048 — это сложность шифрования. При выполнении этой команды пользователю будет предложено ввести пароль для шифрования. Поскольку указан его алгоритм опцией -des3. Если это личный ключ и его планируется использовать на сервере, который можно настроить в собственных целях, то естественно шифрование обязательно. Однако, многие серверы требуют закрытые ключи без шифрования (например хостинг-площадки, поскольку предоставляют универсальную услугу по заказу SSL-сертификатов). Поэтому перед генерацией закрытого ключа нужно определиться, как он будет использоваться.

Теперь нужно создать запрос на подпись — CSR-файл, который будет включать только что сгенерированный ключ server.key:

При выполнении этой команды пользователю необходимо ввести информацию о домене и организации. Причём наименование домена следует вводить точно, например, если идентификатор URL сайта https://mycompany.com, то ввести нужно mycompany.com. Для URL-идентификатора www.mycompany.com уже необходим отдельный сертификат.
Теперь файл server.csr со сформированным запросом на подпись можно отправить в выбранный центр сертификации.

Подписание SSL-сертификатов

Получить подписанный сертификат, когда имеется закрытый ключ и запрос на подпись можно несколькими способами: воспользоваться услугой авторитетных центров сертификации, отправив им запрос (CSR-файл) и получив в ответ готовый сертификат *.crt. Либо можно сделать сертификат самоподписанным. Т. е. подписать его тем же ключом, который использовался при создании файла CSR. Для этого следует выполнить команду:

Читайте также:  Fixing failed windows updates

Здесь опция -days указывает количество дней, в течение которых выпускаемый сертификат server.crt будет действителен. В данном случае на протяжении одного года.
Также можно создать самоподписанный сертификат из имеющегося закрытого ключа без использования CSR-файла. Но в этом случае нужно вводить информацию CSR-запроса:

Параметр -x509 задаёт формат генерируемого сертификата. Он является самым распространённым и используется в большинстве случаев. Опция -new позволяет запрашивать информацию для запроса у пользователя.

Важно отметить, что сертификаты, подписанные авторитетными центрами сертификации известны веб-браузерам. Самоподписанные сертификаты необходимо импортировать в хранилище доверенных сертификатов веб-браузера вручную. Поскольку соединения с доменами, обслуживаемыми такими сертификатами по-умолчанию блокируются.

Использование SSL-сертификатов для домена

Для использования сертификата доменом, для которого он был создан, необходимо соответствующим образом настроить виртуальный хост этого домена. Для начала нужно сохранить файлы *.crt и *.key где-нибудь, где доступ к ним может получить только их владелец. Например в

/ssl/certs/ нужно поместить файл server.crt, в

/ssl/private/ — файл server.key. Далее, в конфигурационном файле виртуального хоста нужно определить следующие директивы:

Важно заметить, что для SSL-соединений домена должен быть отдельный конфигурационный файл (или просто отдельная конфигурация в одном файле) виртуального хоста для него. Это необходимо, поскольку обычные HTTP-соединения обрабатываются по порту 80, а HTTPS (SSL) — по 443. Это отдельные конфигурации одного виртуального хоста (хотя это не совсем верное определение). Также для Apache должен быть включен модуль SSL. Типичная конфигурация может выглядеть следующим образом:

Как подключить ssl сертификата в nginx читайте в этой статье.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Устанавливаем SSL-сертификат на веб-сервер Apache под Linux

Зачем нужен SSL-сертификат

Secure Sockets Layer — уровень защищённых сокетов. По сути это означает: шифрование, аутентификацию и проверку целостности данных. Без SSL-сертификата:

  • веб-сервер может отдавать контент по протоколу https, но браузер будет слева в адресной строке подсвечивать протокол красным и сообщать, что соединение не защищено;
  • поисковики Яндекс и Google будут ранжировать ваш сайт ниже конкурентов с валидными SSL-сертификатами;
  • страницу вашего сайта смогут за дефейсить хакеры, т.е. открыть сайт, который в доменном имене будет отличаться от вашего на один символ;
  • если не включить принудительный редирект на https в настройках веб-сервера, то трафик будет идти по http без шифрования;
  • без SSL-сертификата вы не сможете принимать платежи на сайте.

Хакеры, конечно, могут получить SSL-сертификат и на схожий домен, но для серьёзного сертификата им потребуется компания, а это уже целая история, время, расходы и куча следов. И не факт, что они ещё получат сертификат на домен, который до степени смешения похож на другой, на сайт, которого нет в поисковиках.

Какие бывают SSL-сертификаты и чем они отличаются

  • Self-Signed Certificate (cамоподписанный) — бесполезный и бесплатный. Его можно сгенерировать самому и тут нет удостоверяющего центра. Уровень доверия нулевой.
  • SGC (Server Gated Cryptography) — сертификат с высоким уровнем шифрования для старых браузеров. Браузеры настолько старые, что смысла в нём нет.
  • SAN/UCC (United Communications Certificate) — мультидоменный сертификат для Microsoft Exchange.
  • Code Signing — для разработчиков, чтобы подписывать программное обеспечение, чтобы была гарантия, что это оригинальный дистрибутив и никто не внёс туда изменений.
  • Wildcard SSL Certificate (и на все поддомены) — на домен и все поддомены. Но это не может быть сертификат с расширенной проверкой организации.
  • Domain Validation (DV SSL) — проверка домена — проверяется только то, что вы собственник домена. Подойдёт физическим лицам, у которых на сайте нет передачи данных пользователей, коммерческой деятельности.
  • Organization Validation (OV SSL) — проверка организации. В браузере не будет в адресной строке отображаться зелёным цветом сертификат.
  • Extended Validation (EV SSL) — с расширенной проверкой организации. Зелёным будет отображаться в адресной строке. Такой сертификат следует приобретать, если ведётся коммерческая деятельность или передаются персональные данные. Есть варианты Multi-Domain, т.е. включить заданный список дополнительных доменов, которые не обязательно должны быть поддоменами.
Читайте также:  Бесконечное подождите windows 10 при установке

Цена SSL-сертификатов слабо зависит от его типа, поэтому, если у вас организация, то получайте Extended Validation (EV SSL) сертификат. При покупке SSL-сертификата полезно, чтобы он распространялся и на поддомены, если они у вас, конечно, есть.

Ещё у SSL-сертификатов есть такой параметр как гарантия. Это количество денег, которое вам выплатит удостоверяющий центр, если ваш сайт взломают именно по причине дыры в SSL-сертификате. Пока о подобных случаях слышать не приходилось. Сайты взламывают из-за кривых рук и разгильдяйства разработчиков. Перехватить и расшифровать трафик — задача совершенно другого порядка сложности.

Установка SSL-сертификата

Итак, вы приобрели сертификат. Теперь его нужно установить к вам на сайт. Здесь мы рассмотрим установку на сайт под управлением веб-сервера Apache.

В браузере вводим адрес нашего сервера и проверяем, что Apache работает и есть сертификат.

Важно учесть

Весь контент на сайте должен отдаваться по https и загружаться тоже по https. Это касается каких-то внешних библиотек, шрифтов, картинок, где есть внешняя ссылка http://. Веб-мастер Яндекса подскажет вам есть ли у вас такой контент. Если есть, то сайт не получит значок Защищённое соединение. Если хотя бы какая-то часть контента страницы подгружается по http://, то вся страница уже не может считаться безопасной.

В интернет встречаются и другие советы как сделать редирект. Например, с помощью mod_rewrite. Но это всё же не то. Этот модуль предназначен для других целей.

Источник

Как установить ssl сертификат linux

БАЗА ЗНАНИЙ

КАК УСТАНОВИТЬ SSL СЕРТИФИКАТ НА NGINX (LINUX)

Когда вы сгенерировали CSR-запрос и приобрели SSL сертификат, воспользуйтесь этой инструкцией по установке сертификата на веб-сервер Nginx под управлением Linux: Ubuntu, Debian или CentOS.

После заказа SSL сертификата файлы для его установки отразятся в панели управления (меню SSL): .CA — файл сертификата Центра Сертификации (Certificate Authority). .CRT — файл сертификата вашего веб-сайта.

Как загрузить нужные файла на веб-сервер

Прежде всего загрузите файлы .ca и .crt на веб-сервер. При отсутствии графического окружения рабочего стола на сервере загрузка файлов может осуществиться на другой компьютер. Впоследствии их можно будет перенести.

Внимание: предполагается, что нужная для применения пара закрытый/открытый ключ была создана на том же веб-сервере, куда будет перенесен приобретенный сертификат. При создании ключей на другом сервере следует также перенести файл закрытого ключа .key на ваш веб-сервер (аналогично описанной ниже процедуре копирования файлов сертификатов).

Как переносить сертификаты с компьютера Linux/Mac OS:

Проще всего – при помощи опции SCP, встроенной в возможность терминала вашего компьютера:

Скачайте файлы .CA и .CRT на локальный компьютер. Откройте терминал и папку с сохраненными сертификатами (напр., Downloads):

Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:

scp mydomain.ru_crt.crt mydomain.ru_ca.crt user@1.1.1.1:/etc/ssl

scp — команда для копирования файлов

mydomain.ru_crt.crt — имя загруженного из панели файла сертификата вашего веб-сайта

mydomain.ru_ca.crt — имя загруженного из панели файла сертификата Центра Авторизации

user — имя вашего пользователя для подключения к серверу через ssh (часто используется root)

1.1.1.1 — IP-адрес вашего веб-сервера

/etc/ssl — директория на удаленном сервере, куда следует сохранить загружаемые файлы.

Как переносить сертификаты с компьютера Windows:

Скачайте, установите и включите программу WinSCP. В открывшемся окне наберите данные для подключения к вашему серверу по SSH. Слева в окне отразятся файлы на локальном компьютере, справа — на подключенном удаленном сервере. Выберите или создайте директорию, куда нужно сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

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

Читайте также:  Компонент windows media не установлен

Если закрытый ключ .key сгенерирован прямо на сервере, то для его копирования в другую директорию подойдет команда:

cp /home/root/private.key /etc/ssl/private.key

cp — команда копирования

/home/root/ — путь до файла ключа

private.key — имя файла ключа

/etc/ssl/private.key — путь, по которому необходимо скопировать файл ключа

Вы можете удалить файл ключа из старого расположения такой командой:

Как настроить веб-сервер Nginx на применение SSL сертификата

После копирования файлов сертификата сайта и Центра Сертификации вы должны отредактировать параметры вашего веб-сервера Nginx. Подключитесь к вашему серверу по SSH от имени пользователя root и выполните такие действия:

1. Объедините файлы сертификата Центра Сертификации (.CA) и сертификата вашего веб-сайта (.CRT) в один документ:

cat /etc/ssl/mydomain.ru_crt.crt /etc/ssl/mydomain.ru_ca.crt >> mydomain.crt

2. Откройте файл конфигурации сайта, для которого устанавливается SSL сертификат. Если, к примеру, параметры веб-сайта хранятся в файле /etc/nginx/sites-enabled/default:

Внимание: На Ubuntu/Debian файлы параметров сайтов Nginx обычно располагаются в директории /etc/nginx/sites-enabled/ . На CentOS стандартное расположение — /etc/nginx/conf.d/

Для поиска интересующей конфигурации подойдет команда ls /директория/конфигураций (напр. ls /etc/nginx/sites-enabled), отображающая полный список файлов в нужной директории.

Теперь с помощью команды nano можно открыть определенный файл (напр. nano /etc/nginx/sites-enabled/default). Чтобы проверить, что открытый файл является конфигурацией вашего сайта, найдите в нем строку server_name. Ее значение должно соответствовать домену, для которого вы устанавливаете SSL сертификат (напр. www.mydomain.ru)

Внимание для CentOS: если на сервере не установлен редактор nano, используйте такую команду для его установки:

используйте такую команду для его установки:

yum install nano

Затем добавьте приведенные ниже параметры в открытый файл конфигурации:

listen 443 ssl;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/private.key;

/etc/ssl/mydomain.crt — путь до файла сертификатов вашего сайта и центра сертификации

/etc/ssl/private.key — путь к файлу вашего закрытого ключа

Внимание: если вы хотите, чтобы после установки SSL сертификата ваш сайт был доступен только по безопасному протоколу https (порт 443), отредактируйте файл его конфигурации по аналогии с Примером 1. Если же нужно, чтобы сайт также оставался по-прежнему доступен по незащищенному протоколу http (порт 80) – см. Пример 2

(изменения выделены жирным шрифтом).

Пример 1 (только HTTPS):

server <
listen 443 ssl default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name www.mydomain.ru;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/private.key;
location / <
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
>
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location

\.php$ <
# include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#>
# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location

Пример 2 (HTTPS + HTTP):

server <
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl;
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl cert package
# Don’t use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name www.mydomain.ru;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/private.key;
location / <
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
>
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location

\.php$ <
# include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#>
# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location

Перезапустите сервис nginx:

service nginx restart

Если на сервере настроен файрвол iptables, нужно разрешить входящие подключения по протоколу https (порт 443) для вашего файрвола. Следуйте документации к вашей ОС, т.к. в разных дистрибутивах Linux работа с iptables осуществляется различно. Несколько примеров:

ufw allow 443/tcp

iptables -A INPUT -p tcp -m state —state NEW -m tcp —dport 443 -j ACCEPT

iptables -A INPUT -p tcp -m tcp —dport 443 -j ACCEPT

Источник

Оцените статью