Назад | Перейти на главную страницу

OpenVPN - могу ли я использовать существующий сертификат SSL?

Я хочу настроить сервер OpenVPN для личного использования. У меня есть домен, и у меня есть действующий SSL-сертификат для этого домена (выданный StartSSL).

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

Интересно, могу ли я использовать для этой цели свой существующий сертификат SSL? Есть ли у меня какие-то преимущества?

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

Хотя этот ответ намного позже, чем ваш исходный вопрос, ваш вопрос - первая ссылка, которая возникла, когда я googledd OpenVPN StartSSL, и я надеюсь, что мой опыт может помочь кому-то еще, кто пытается сделать то же самое.

Немного поиграв, я смог заставить OpenVPN работать с бесплатными сертификатами сервера и клиента StartSSL со сроком действия один год.

StartSSL не позволяет использовать сертификаты SSL / TLC его веб-сервера на стороне клиента, поэтому я создал несколько сертификатов S / MIME и аутентификации (используя email+[clientname]@[mydomainname]) и экспортировал их из браузера.

Мне пришлось преобразовать сертификаты S / MIME и аутентификации из типов файлов pfx в ключи и сертификаты с помощью openssl. Я последовал за это руководство.

Затем мне пришлось объединить клиентский ключ и различные ключи / сертификаты вместе в файл OVPN (я также использовал ключ ta). Я адаптировал чужой скрипт для этого из командной строки. Код здесь.

Изначально я был озадачен ошибками проверки сертификата, в частности:

ПРОВЕРИТЬ ОШИБКУ: глубина = 0, ошибка = невозможно получить сертификат местного эмитента

Для меня ключом было скачивание ca.pem, sub.class1.server.ca.pem и sub.class1.client.ca.pem из StartSSL, затем объединив три:

cat ca.pem sub.class1.server.ca.pem sub.class1.client.ca.pem > ca-COMBINED.pem

Я использовал это в своем server.conf для OpenVPN, и ничего не было!

Как вы планируете проводить аутентификацию клиента? Планируете ли вы аутентификацию клиента на основе сертификатов или что-то еще?

Интересно, могу ли я использовать для этой цели свой существующий сертификат SSL? Есть ли у меня какие-то преимущества?

Да, вам, вероятно, удастся повторно использовать сертификат, если значение темы сертификата совпадает с именем вашего сервера OpenVPN.

Хотя это почти наверняка плохая идея. У этого мало или нет никаких преимуществ. Вы, вероятно, усложните себе задачу и запутаете себя, если попытаетесь, но не очень хорошо разбираетесь в том, как работает PKI.

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

Используют ли клиенты OpenVPN хорошо известные корневые сертификаты для проверки сертификата сервера или они не используют эту инфраструктуру, и самозаверяющий сертификат будет работать нормально?

Обычно при настройке открытых клиентов OpenVPN вы даете клиенту сертификат CA в дополнение к предлагаемой конфигурации.

Нет, вы не можете так использовать выданный сертификат. OpenVPN работает, позволяя вам выдавать сертификаты, подписанные органом, которому ваш сервер настроен доверять, поэтому вам необходимо создать собственный CA. Каждому клиенту нужно свое уникальный сертификат, и они не жалуются на самоподписанные, если настроены правильно.

Я просто установил это после того, как настроил это год назад и забыл, как это делать, так что это свежо в моей памяти. Тем не мение:

(1) загрузите различные сертификаты и т. Д. На свой сервер OpenVPN. Это различные сертификаты и ключи, которые вы получили от своего эмитента. Сертификат, используемый для сервера, должен иметь CN в качестве имени хоста сервера, который используется снаружи. (В зависимости от серверного программного обеспечения вам может потребоваться объединить все различные файлы .crt от эмитента и загрузить их на сервер.)

(2) объединить все файлы .crt от эмитента в большой файл через cat. У меня есть сертификат Comodo, поэтому я построил его так:

cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > all.crt

(3) поместите этот большой файл сертификатов в раздел ca. Если вы хотите встроить его, используйте --certificates--. Если вы используете отдельный файл, вы можете использовать ca =

(4) создать случайный клиентский сертификат и ключ. Это предполагает, что вы хотите использовать аутентификацию по паролю, что я и делаю.

(5) поместите клиентский сертификат и ключ в файл conf, либо встроенный, либо как cert = и key =.

(6) попробуйте.

Причина, по которой вы это делаете, заключается в том, что у вас есть сервер, на котором запущено несколько сервисов, которые вы мультиплексируете. Установка собственного центра сертификации на всех ваших клиентов - это нелепо, особенно если вы настраиваете сервер «семья и друзья».