Справочник strongSwan

Инфраструктура открытых ключей (PKI)

Чтобы использовать аутентификацию на основе сертификатов, необходимо создать либо самоподписанные сертификаты, либо развернуть полноценную инфраструктуру открытых ключей (PKI), включающую центр сертификации (CA), необязательные промежуточные CA и конечные сертификаты, а также списки отозванных сертификатов (CRL) или альтернативные методы проверки действительности сертификатов, например OCSP.

Одним из самых простых способов генерации сертификатов является использование инструмента pki. Поскольку настройка полноценной PKI может быть достаточно сложной, мы предоставляем простые инструкции для начала работы.

Для генерации сертификатов также широко используется OpenSSL, а также несколько графических утилит для управления CA на основе графического интерфейса пользователя. Для крупных PKI можно применять Службы сертификатов Active Directory (Microsoft Active Directory Certificate Services, или AD CS).

Требования к сертификатам

Сгенерированные сертификаты конечного субъекта должны подтверждать подлинность соответствующего удалённого идентификатора IKE ID для успешной аутентификации однорангового узла.

Чтобы аутентифицироваться на другом устройстве с установленной программой strongSwan с помощью одного или нескольких сертификатов (также можно использовать атрибутные сертификаты), сертификат должен подтвердить подлинность IKE ID, отправляемого хостом.

Если Alice пытается аутентифицироваться на соединении с Bob как собственно Alice, сертификат Alice должен содержать хотя бы одно альтернативное имя субъекта (subjectAltName, или SAN) с правильным типом (полностью определённое доменное имя, или FQDN) и значением Alice, или же отличительное имя (subjectDistinguishedName, или DN), а не общее имя (commonName, или CN) обязательно должно быть Alice.

Другими словами, в качестве IKE ID можно использовать полное доменное имя (DN) или любое поле имён SAN (при условии, что оно правильного типа). Подробности см. в разделе «Примечания по сертификатам».

В дополнении к этому, узел Bob должен доверять данному сертификату: либо он был заранее известен и признан действительным, либо выдан центром сертификации (CA), которому доверяет Bob.

Для успешной аутентификации другой узел должен обладать полной цепочкой доверия сертификатов X.509 – от корневого сертификата (root CA) до конечного сертификата (сертификата хоста или пользователя), включая все промежуточные сертификаты (intermediate CAs). Это достигается либо путём отправки всех промежуточных сертификатов удалённому узлу, либо в том случае, если они уже установлены локально на удалённом узле.

Требования к аутентификации на основе сертификатов с использованием сторонних реализаций IKE указаны в отдельных документах для Microsoft Windows и Apple iOS/macOS.

Примечания, касающиеся сертификатов

Корневой сертификат центра сертификации (CA), находящийся на вершине цепочки доверия X.509, всегда является самоподписанным, и, следовательно, может быть подделан кем угодно. Поэтому он никогда не передается другому узлу. Каждый узел должен локально установить корневой сертификат CA надежным способом и никогда не принимать корневые сертификаты CA, полученные по сети.

Локальный сертификат передается другому узлу только при соблюдении хотя бы одного из следующих условий:

  • На локальном узле установлен параметр connections.<conn>.send_cert = always для используемого заданного подключения.

  • Удаленный одноранговый узел запрашивает сертификат, выпущенный доверенным центром сертификации (CA), отправляя локальному узлу запрос CERTREQ (запрос цифрового сертификата у удаленной стороны), в котором указывается один из центров сертификации в цепочке, начинающейся с сертификата локального узла до его корневого сертификата CA.