С помощью какой утилиты в oc linux можно создать сертификат х 509

Обновлено: 04.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

Добавление в Linux корневых сертификатов X.509 локального корпоративного Центра сертификации


Некоторые службы и приложения в Linux могут использовать в своей работе сетевые соединения, защищаемые с помощью SSL/TLS. Иногда требуется, чтобы цифровой сертификат, используемый для защиты соединений и предоставляемый каким-то удалённым сервером из локальной сети, принимался локальной Linux-системой как доверенный. Для этого в Linux-систему может потребоваться добавить корневой сертификат Центра сертификации (ЦС), которым были выданы сертификаты, используемые для защиты соединений. Типичный пример, когда локальная Linux-система для механизмов аутентификации и авторизации подключается с помощью ldap-клиента (например OpenLDAP) к контроллеру домена Active Directory (AD) и контроллер домена предоставляет ldap-клиенту для защиты соединения сертификат, выданным локальным корпоративным ЦС.

Здесь мы рассмотрим простой пример того, как в Linux-систему добавить корневые сертификаты локального корпоративного ЦС.

О том, как «выуживать» корневые сертификаты ЦС, которыми подписаны сертификаты контроллеров домена AD, я приводил пример ранее. Если под руками есть доменная Windows-машина, то можно выгрузить корневой сертификат из оснастки управления сертификатами из раздела корневых сертификатов доверенных ЦС. Если корневой сертификат не один, а несколько (цепочка), то каждый корневой сертификат цепочки выгрузим в файл в кодировке Base-64, сразу присвоив им расширение PEM вместо CER


В результате такой выгрузки в нашем примере получится пара файлов AD-RootCA.pem (корневой сертификат ЦС верхнего уровня) и AD-SubCA.pem (корневой сертификат подчинённого ЦС). Скопируем полученные pem-файлы на наш Linux-сервер, например с помощью утилиты pscp, во временный каталог.

Перейдём на консоль Linux-сервера и переместим файлы коневых сертификатов из временного каталога в каталог, который мы создадим специально для хранения наших корневых сертификатов и подправим на эти сертификаты права (если требуется)

Теперь обработаем содержимое каталога с нашими сертификатами утилитой OpenSSL - c_rehash:

В результате выполнения этой команды в этом же каталоге будут созданы специальные хеш-ссылки на файлы сертификатов.

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

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

В качестве примера рассмотрим клиента OpenLDAP, для которого можно указать созданный нами каталог в конфигурационном файле ldap.conf ( /etc/ldap/ldap.conf ) в дополнительной опции TLS_CACERTDIR, таким образом, чтобы эта опция шла после имеющейся по умолчанию опции TLS_CACERT (подробнее об этих опциях можно найти в man ldap.conf ):

Примечание.
В Debian GNU/Linux параметр TLS_CACERTDIR может игнорироваться, о чём сказано в man ldap.conf .

TLS_CACERTDIR <path>
Specifies the path of a directory that contains Certificate Authority certificates in separate individual files. The TLS_CACERT is always used before TLS_CACERTDIR. This parameter is ignored with GnuTLS. On Debian openldap is linked against GnuTLS…

В таком случае используйте для хранения доверенных корневых сертификатов отдельный файл (бандл, в который собраны все доверенные корневые сертификаты) и указывайте его расположение через параметр TLS_CACERT.

Собрать все нужные доверенные корневые сертификаты Центров сертификации в бандл можно простой склейкой содерживого PAM-файлов в колировке Base-64:

Соответственно, применительно к ранее упомянутому клиенту OpenLDAP в Debian GNU/Linux настройка конфигурации будет такой:


Автор первичной редакции:
Алексей Максимов
Время публикации: 25.03.2017 17:36

Для организации такого общения нам нужно 2 SSL сертификата.

Если сервера пренадлежат одной организации, то может быть проще и безопасней подписывать сертификаты самостоятельно, а не покупать.

Создаем наше CA

Первая команда создаёт корневой ключ


Для меня ключ 2048 bit достаточен, если вам хочется, вы можете использовать ключ 4096 bit.

Вторая команда создаёт корневой сертификат.


Отвечать на вопросы тут можно как душе угодно.


10000 дней срок его годности, примерно столько живет сертификат, которым google требует подписывать андроид приложения для Google Play. Если вы паникер, подписывайте на год или два.

Все! Теперь мы можем создавать сертификаты для наших серверов и устанавливать корневой сертификат на наши клиентские машины.

Создаем сертификат подписаный нашим СА


Создаем запрос на сертификат.


Тут важно указать имя сервера: домен или IP (например домен server101.mycloud)


и подписать запрос на сертификат нашим корневым сертификатом.


Теперь на клиенты нужно установить корневой сертификат rootCA.crt

rootCA.crt — можно давать друзьям, устанавливать, копировать не сервера, выкладывать в публичный доступ
rootCA.key — следует держать в тайне

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

Windows

IE, Chrome — используют репозиторий сертификатов Windows.

Мой путь к нему таков:

Chrome — Settings — Manage Certificates…
Выбрать таб Trusted Root Certificate Authorities — Import — rootCA.crt
перезапустить Chrome

FireFox на виндоус имеет свой репозиторий.

Java имеет свой репозиторий.

Mac OS X

Safari, FireFox, Chrome — используют системный репозиторий.

Запускаем KeyChain Access.
Идём в меню File — Import Items (login или System) — выбираем файл rootCA.crt.
Когда нас спросят, отвечаем — Always Trust.


Для вашего личного Safari достаточно выбрать login.



В Ubuntu
Программа сервера на Go

Программа сервера на Go myserver.go, которая использует наш подписаный сертификат.

Защищенное соединение SSL

Возникла необходимость (для внутренних целей) сгенерировать самоподписанный сертификат. Для этого был использован OpenSSL (Linux).

Итак, создаём самоподписанный SSL сертификат с помощью OpenSSL. Для начала нам необходимо установить пакет OpenSSL. Устанавливаем его так:

После установки OpenSSL, создадим директории, в которых будут лежать сертификаты и ключи:

Создаем самоподписанный SSL сертификат так:

req — это генерация запросов на подпись сертификата, но если мы задаём ключ «-x509», это означает, что мы генерируем самоподписанный сертификат.
-newkey rsa:2048 — если у нас ещё нет ключа, мы добавляем данный параметр, что бы ключ был создан автоматически. Указываем параметры ключа.
-days 365 — указываем количество дней, в течении которых будет действовать данный сертификат.
-keyout /home/devuser/cert/mykey.key — параметр нужен, так как мы указали newkey и генерируем новый ключ. Указываем в какой файл положим ключ.
-out /home/devuser/cert/cert.crt — сюда положим наш сертификат.

Нас попросят ввести пароль к ключу. Вводим пароль, не менее 4 символов (и еще раз). Затем нас попросят ввести данные о сертификате. Если какие-то данные Вам не нужны можете просто пропустить и нажать Enter, будет использовано значение по-умолчанию (в квадратных скобках).

Давайте рассмотрим по порядку, что нам предлагают ввести:

Country Name (2 letter code) [AU]: — страна/регион
State or Province Name (full name) [Some-State]: — штат (у нас их нет, поэтому пропускаем)
Locality Name (eg, city) []: — город
Organization Name (eg, company) [Internet Widgits Pty Ltd]: — имя организации
Organizational Unit Name (eg, section) []: — подразделение организации, пропускаем.
Common Name (e.g. server FQDN or YOUR name) []: — Обязательное поле, это имя по которому к серверу будут обращаться.
Email Address []: — адрес электронной почты, тоже можно пропустить.

Ключ без пароля

Если Вы, например, используете сертификат и ключ в веб-сервере, то пароль на ключе будет мешать нормальной работе. Поэтому лучше сгенерировать ключ без пароля. Добавляем параметр -nodes, в результате секретный ключ не будет зашифрован паролем.

Так же можно ещё добавить параметр -subj — этот тот кому принадлежит сертификат, то что мы вводили в интерактивном режиме (название организации, мыло и так далее). Можно эти параметры сразу указать в команде.

Читайте также: