Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:openssl:how-to-add-domain-certification-authority-root-certificates-for-openssl-in-linux

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
unix-linux:openssl:how-to-add-domain-certification-authority-root-certificates-for-openssl-in-linux [25.03.2017 17:40] – создано Алексей Максимовunix-linux:openssl:how-to-add-domain-certification-authority-root-certificates-for-openssl-in-linux [25.03.2017 19:16] (текущий) Алексей Максимов
Строка 1: Строка 1:
-===== Добавление в Linux корневых сертификатов локального корпоративного Центра сертификации =====+===== Добавление в Linux корневых сертификатов X.509 локального корпоративного Центра сертификации =====
  
-Некоторые службы и приложения в **Linux** могут использовать в своей работе сетевые соединения, защищаемые с помощью **SSL**/**TLS**. Иногда требуется, чтобы цифровой сертификат, используемый для защиты соединений и предоставляемый каким-то удалённым сервером из локальной сети, принимался локальной Linux-системой как доверенный. Для этого в Linux-систему может потребоваться добавить __корневой сертификат Центра сертификации__ (**ЦС**), которым были выданы сертификаты, используемые для защиты соединений. Типичный пример, когда локальная Linux-система для механизмов аутентификации и авторизации подключается с помощью **ldap**-клиента (например **OpenLDAP**) к контроллеру домена **Active Directory** (**AD**) и контроллер домена предоставляет ldap-клиенту для защиты соединения сертификат, выданным локальным корпоративным ЦС.+{{:unix-linux:openssl:pasted:20170325-183803.png }} Некоторые службы и приложения в **Linux** могут использовать в своей работе сетевые соединения, защищаемые с помощью **SSL**/**TLS**. Иногда требуется, чтобы цифровой сертификат, используемый для защиты соединений и предоставляемый каким-то удалённым сервером из локальной сети, принимался локальной Linux-системой как доверенный. Для этого в Linux-систему может потребоваться добавить __корневой сертификат Центра сертификации__ (**ЦС**), которым были выданы сертификаты, используемые для защиты соединений. Типичный пример, когда локальная Linux-система для механизмов аутентификации и авторизации подключается с помощью **ldap**-клиента (например **OpenLDAP**) к контроллеру домена **Active Directory** (**AD**) и контроллер домена предоставляет ldap-клиенту для защиты соединения сертификат, выданным локальным корпоративным ЦС.
  
 Здесь мы рассмотрим простой пример того, как в Linux-систему добавить корневые сертификаты локального корпоративного ЦС. Здесь мы рассмотрим простой пример того, как в Linux-систему добавить корневые сертификаты локального корпоративного ЦС.
Строка 7: Строка 7:
 О том, как "выуживать" корневые сертификаты ЦС, которыми подписаны сертификаты контроллеров домена AD, я приводил [[https://blog.it-kb.ru/2016/10/04/install-ovirt-4-0-part-9-ovirt-engine-aaa-integration-profile-for-users-authentication-via-ldap-microsoft-active-directory/|пример ранее]]. Если под руками есть доменная **Windows**-машина, то можно выгрузить корневой сертификат из оснастки управления сертификатами из раздела корневых сертификатов доверенных ЦС. Если корневой сертификат не один, а несколько (цепочка), то каждый корневой сертификат цепочки выгрузим в файл в кодировке **Base-64**, сразу присвоив им расширение **PEM** вместо **CER** О том, как "выуживать" корневые сертификаты ЦС, которыми подписаны сертификаты контроллеров домена AD, я приводил [[https://blog.it-kb.ru/2016/10/04/install-ovirt-4-0-part-9-ovirt-engine-aaa-integration-profile-for-users-authentication-via-ldap-microsoft-active-directory/|пример ранее]]. Если под руками есть доменная **Windows**-машина, то можно выгрузить корневой сертификат из оснастки управления сертификатами из раздела корневых сертификатов доверенных ЦС. Если корневой сертификат не один, а несколько (цепочка), то каждый корневой сертификат цепочки выгрузим в файл в кодировке **Base-64**, сразу присвоив им расширение **PEM** вместо **CER**
  
-image+{{ :unix-linux:openssl:pasted:20170325-174055.png }}
  
-В итоге в нашем примере получится пара файлов AD-RootCA.pem и AD-SubCA.pem. Скопируем полученные pem-файлы на наш сервер Icinga, например с помощью утилиты pscp, во временный каталог. +В результате такой выгрузки в нашем примере получится пара файлов **AD-RootCA.pem** (корневой сертификат ЦС верхнего уровня) и **AD-SubCA.pem** (корневой сертификат подчинённого ЦС). Скопируем полученные pem-файлы на наш Linux-сервер, например с помощью утилиты [[http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html|pscp]], во временный каталог. 
  
-С:\Tools\PuTTy>pscp.exe С:\Temp\AD-*.pem user@KOM-AD01-MON20:/tmp+<code>С:\Tools\PuTTy>pscp.exe С:\Temp\AD-*.pem linux-user@LINUX-SERVER:/tmp</code> 
 +<HTML><pre style="padding:3px;"><div style="background:#5a5a62;color:#ffffff;padding:10px;">AD-RootCA.pem             | 1 kB |   1.3 kB/s | ETA: 00:00:00 | 100% 
 +AD-SubCA.pem              | 1 kB |   1.9 kB/s | ETA: 00:00:00 | 100%</div></pre></HTML>
  
-AD-RootCA.pem             | 1 kB |   1.3 kB/s | ETA: 00:00:00 | 100% +Перейдём на консоль **Linux**-сервера и переместим файлы коневых сертификатов из временного каталога в каталог, который мы создадим специально для хранения наших корневых сертификатов и подправим на эти сертификаты права (если требуется)
-AD-SubCA.pem              | 1 kB |   1.9 kB/s | ETA: 00:00:00 | 100%Вернёмся в консоль сервера Icinga и переместим файлы коневых сертификатов из временного каталога в каталог, который мы создадим специально для хранения наших корневых сертификатов и подправим на эти сертификаты права (если требуется)+
  
-# mkdir /etc/ssl/certs-corp-ca+<code># mkdir /etc/ssl/certs-corp-ca
 # mv /tmp/AD-*.pem /etc/ssl/certs-corp-ca # mv /tmp/AD-*.pem /etc/ssl/certs-corp-ca
 # chown root:root /etc/ssl/certs-corp-ca/AD-*.pem # chown root:root /etc/ssl/certs-corp-ca/AD-*.pem
-# ls -la /etc/ssl/certs-corp-ca+# ls -la /etc/ssl/certs-corp-ca</code>
  
-...+<HTML><pre style="padding:3px;"><div style="background:#5a5a62;color:#ffffff;padding:10px;">...
 -rw-r--r-- 1 root root 1344 Mar  6 19:35 AD-RootCA.pem -rw-r--r-- 1 root root 1344 Mar  6 19:35 AD-RootCA.pem
--rw-r--r-- 1 root root 1922 Mar  6 19:35 AD-SubCA.pemТеперь обработаем содержимое каталога с нашими сертификатами утилитой OpenSSL c_rehash:+-rw-r--r-- 1 root root 1922 Mar  6 19:35 AD-SubCA.pem</div></pre></HTML>
  
-c_rehash /etc/ssl/certs-corp-ca+Теперь обработаем содержимое каталога с нашими сертификатами утилитой **OpenSSL** - **c_rehash**:
  
-Doing /etc/ssl/certs-corp-ca+<code># c_rehash /etc/ssl/certs-corp-ca</code> 
 + 
 +<HTML><pre style="padding:3px;"><div style="background:#5a5a62;color:#ffffff;padding:10px;">Doing /etc/ssl/certs-corp-ca
 AD-RootCA.pem => 36865f67.0 AD-RootCA.pem => 36865f67.0
 AD-RootCA.pem => bb8428b0.0 AD-RootCA.pem => bb8428b0.0
 AD-SubCA.pem => e740e31e.0 AD-SubCA.pem => e740e31e.0
-AD-SubCA.pem => 536fc63e.0В результате выполнения этой команды в этом же каталоге будут созданы специальные хитрые хеш-ссылки на файлы сертификатов. +AD-SubCA.pem => 536fc63e.0</div></pre></HTML>
  
-# ls -la /etc/ssl/certs-corp-ca +В результате выполнения этой команды в этом же каталоге будут созданы специальные хеш-ссылки на файлы сертификатов.  
-...+ 
 +<code># ls -la /etc/ssl/certs-corp-ca</code> 
 +<HTML><pre style="padding:3px;"><div style="background:#5a5a62;color:#ffffff;padding:10px;">...
 lrwxrwxrwx 1 root root   13 Mar  6 20:06 36865f67.0 -> AD-RootCA.pem lrwxrwxrwx 1 root root   13 Mar  6 20:06 36865f67.0 -> AD-RootCA.pem
 lrwxrwxrwx 1 root root   12 Mar  6 20:06 536fc63e.0 -> AD-SubCA.pem lrwxrwxrwx 1 root root   12 Mar  6 20:06 536fc63e.0 -> AD-SubCA.pem
Строка 40: Строка 45:
 -rw-r--r-- 1 root root 1922 Mar  6 19:59 AD-SubCA.pem -rw-r--r-- 1 root root 1922 Mar  6 19:59 AD-SubCA.pem
 lrwxrwxrwx 1 root root   13 Mar  6 20:06 bb8428b0.0 -> AD-RootCA.pem lrwxrwxrwx 1 root root   13 Mar  6 20:06 bb8428b0.0 -> AD-RootCA.pem
-lrwxrwxrwx 1 root root   12 Mar  6 20:06 e740e31e.0 -> AD-SubCA.pemПомните про то, что если в дальнейшем в данный каталог потребуется снова добавить дополнительный сертификат, то команду c_rehash нужно будет выполнить для каталога заново, чтобы сгенерировались хеш-ссылки для добавленных сертификатов. И напротив, если из каталога будут удаляться какие-то сертификаты, то нужно будет выполнить команду, которая вычистит все хеш-ссылки на уже несуществующие файлы сертификатов:+lrwxrwxrwx 1 root root   12 Mar  6 20:06 e740e31e.0 -> AD-SubCA.pem</div></pre></HTML>
  
-# find -L /etc/ssl/certs-corp-ca -type l -exec rm {} +Итак, каталог с сертификатами подготовлен, теперь пропишем этот каталог в конфигурационном файле ldap.conf (/etc/ldap/ldap.conf) в дополнительной опции TLS_CACERTDIRтаким образом, чтобы эта опция шла после имеющейся по умолчанию опции TLS_CACERT (подробнее об этих опциях можно найти в man ldap.conf):+Помните про то, что если в дальнейшем в данный каталог потребуется снова добавить дополнительный сертификат, то команду **c_rehash** нужно будет выполнить для каталога заново, чтобы сгенерировались хеш-ссылки для добавленных сертификатов. И напротив, если из каталога будут удаляться какие-то сертификаты, то нужно будет выполнить команду, которая вычистит все хеш-ссылки на уже несуществующие файлы сертификатов:
  
-...+<code># find -L /etc/ssl/certs-corp-ca -type l -exec rm {} +</code> 
 + 
 +Итак, каталог с сертификатами подготовлен, теперь можно его указывать в качестве источника доверенных корневых сертификатов для разных служб и приложений в нашей Linux-системе.  
 + 
 +В качестве примера рассмотрим клиента **OpenLDAP**, для которого можно указать созданный нами каталог в конфигурационном файле **ldap.conf** (''/etc/ldap/ldap.conf'') в дополнительной опции **TLS_CACERTDIR**, таким образом, чтобы эта опция шла после имеющейся по умолчанию опции **TLS_CACERT** (подробнее об этих опциях можно найти в ''man ldap.conf''): 
 + 
 +<file bash ldap.conf>...
 # TLS certificates (needed for GnuTLS) # TLS certificates (needed for GnuTLS)
 TLS_CACERT      /etc/ssl/certs/ca-certificates.crt TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
  
 # Corp CA root certificates storage # Corp CA root certificates storage
-TLS_CACERTDIR   /etc/ssl/certs-corp-ca +TLS_CACERTDIR   /etc/ssl/certs-corp-ca</file> 
  
 +<WRAP center box>
 +**Примечание**.\\
 +В **Debian GNU/Linux** параметр **TLS_CACERTDIR** может игнорироваться, о чём сказано в ''man ldap.conf''.
 +<blockquote>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…
 +</blockquote>
 +В таком случае используйте для хранения доверенных корневых сертификатов отдельный файл (бандл, в который собраны все доверенные корневые сертификаты) и указывайте его расположение через параметр **TLS_CACERT**.
 +</WRAP>
 +
 +
 +
 +Собрать все нужные доверенные корневые сертификаты Центров сертификации в **бандл** можно простой склейкой содерживого **PAM**-файлов в колировке **Base-64**: 
 +
 +<code># mkdir /etc/ssl/certs-corp-ca-chain
 +# cd /etc/ssl/certs-corp-ca
 +# cat ./AD-RootCA.pem  ./AD-SubCA.pem > /etc/ssl/certs-corp-ca-chain/AD-Chain.pem
 +# cat /etc/ssl/certs-corp-ca-chain/AD-Chain.pem</code>
 +
 +<HTML><pre style="padding:3px;"><div style="background:#5a5a62;color:#ffffff;padding:10px;">-----BEGIN CERTIFICATE-----
 +...
 +<содержимое первого сертификата>
 +...
 +-----END CERTIFICATE-----
 +-----BEGIN CERTIFICATE-----
 +...
 +<содержимое второго сертификата>
 +...
 +-----END CERTIFICATE-----</div></pre></HTML>
 +
 +Соответственно, применительно к ранее упомянутому клиенту **OpenLDAP** в **Debian GNU/Linux** настройка конфигурации будет такой:
 +
 +<file bash ldap.conf>...
 +# TLS certificates (needed for GnuTLS)
 +TLS_CACERT      /etc/ssl/certs-corp-ca-chain/AD-Chain.pem
 +
 +# Corp CA root certificates storage
 +#TLS_CACERTDIR   /etc/ssl/certs-corp-ca</file> 
  
 ---- ----
 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 25.03.2017 17:36 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 25.03.2017 17:36
-{{tag>Linux}}+{{tag>Linux Debian OpenSSL c_rehash SSL TLS GnuTLS  "Certificate Authority" "Active Directory" "X.509" Certificate PEM Chain OpenLDAP}}
 ~~DISCUSSION~~ ~~DISCUSSION~~
unix-linux/openssl/how-to-add-domain-certification-authority-root-certificates-for-openssl-in-linux.1490452830.txt.gz · Последнее изменение: 25.03.2017 17:40 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki